syntax = "proto3"; package erp.document; option go_package = "erp-mvp/core-service/proto/document"; import "google/protobuf/timestamp.proto"; // Сервис для генерации документов service DocumentService { rpc GenerateQRCode(QRCodeRequest) returns (QRCodeResponse); rpc GenerateReport(ReportRequest) returns (ReportResponse); rpc GetDocumentStatus(StatusRequest) returns (StatusResponse); rpc GetDocumentDownload(DownloadRequest) returns (DownloadResponse); } // Сервис для работы с шаблонами service TemplateService { rpc GetTemplate(TemplateRequest) returns (TemplateResponse); rpc ListTemplates(ListTemplatesRequest) returns (ListTemplatesResponse); rpc CreateTemplate(CreateTemplateRequest) returns (TemplateResponse); rpc UpdateTemplate(UpdateTemplateRequest) returns (TemplateResponse); rpc DeleteTemplate(DeleteTemplateRequest) returns (DeleteTemplateResponse); } // Запросы для QR-кодов message QRCodeRequest { string location_id = 1; string location_address = 2; string organization_id = 3; int32 size = 4; int32 border = 5; } message QRCodeResponse { string document_id = 1; string qr_code_url = 2; string qr_code_data = 3; google.protobuf.Timestamp expires_at = 4; } // Запросы для отчетов message ReportRequest { string report_type = 1; string organization_id = 2; map filters = 3; DocumentFormat format = 4; } message ReportResponse { string document_id = 1; string download_url = 2; int64 file_size = 3; google.protobuf.Timestamp expires_at = 4; } // Запросы для статуса документа message StatusRequest { string document_id = 1; } message StatusResponse { string document_id = 1; DocumentStatus status = 2; int32 progress = 3; string error_message = 4; google.protobuf.Timestamp created_at = 5; google.protobuf.Timestamp updated_at = 6; } // Запросы для скачивания message DownloadRequest { string document_id = 1; } message DownloadResponse { string document_id = 1; string download_url = 2; int64 file_size = 3; string filename = 4; DocumentFormat format = 5; } // Запросы для шаблонов message TemplateRequest { string template_name = 1; } message TemplateResponse { string name = 1; string description = 2; repeated string variables = 3; string content = 4; google.protobuf.Timestamp created_at = 5; google.protobuf.Timestamp updated_at = 6; } message ListTemplatesRequest { string category = 1; int32 page = 2; int32 page_size = 3; } message ListTemplatesResponse { repeated TemplateInfo templates = 1; int32 total_count = 2; int32 page = 3; int32 page_size = 4; } message CreateTemplateRequest { string name = 1; string description = 2; string content = 3; string category = 4; repeated string variables = 5; } message UpdateTemplateRequest { string name = 1; optional string description = 2; optional string content = 3; optional string category = 4; repeated string variables = 5; } message DeleteTemplateRequest { string name = 1; } message DeleteTemplateResponse { bool success = 1; string message = 2; } // Информация о шаблоне message TemplateInfo { string name = 1; string description = 2; string category = 3; repeated string variables = 4; google.protobuf.Timestamp created_at = 5; google.protobuf.Timestamp updated_at = 6; } // Перечисления enum DocumentFormat { DOCUMENT_FORMAT_UNSPECIFIED = 0; DOCUMENT_FORMAT_PDF = 1; DOCUMENT_FORMAT_EXCEL = 2; DOCUMENT_FORMAT_WORD = 3; DOCUMENT_FORMAT_QR_CODE = 4; } enum DocumentStatus { DOCUMENT_STATUS_UNSPECIFIED = 0; DOCUMENT_STATUS_PENDING = 1; DOCUMENT_STATUS_PROCESSING = 2; DOCUMENT_STATUS_COMPLETED = 3; DOCUMENT_STATUS_FAILED = 4; }