This commit is contained in:
2026-10-07 23:09:17 +07:00
parent e0caa0b409
commit 56bc009311
21 changed files with 3310 additions and 221 deletions
+101
View File
@@ -41,6 +41,54 @@ option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_swagger) = {
};
service EveningDetectiveServer {
rpc GetTasks(GetTasksReq) returns (GetTasksRsp) {
option (google.api.http) = { get: "/api/tasks" };
option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = {
tags: "Задачи";
summary: "Получить общую доску задач";
description: "Доступно разработчикам и администратору.";
};
}
rpc GetTaskAssignees(GetTaskAssigneesReq) returns (GetTaskAssigneesRsp) {
option (google.api.http) = { get: "/api/tasks/assignees" };
option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = {
tags: "Задачи";
summary: "Получить разработчиков для назначения";
description: "Доступно разработчикам и администратору.";
};
}
rpc CreateTask(CreateTaskReq) returns (TaskRsp) {
option (google.api.http) = { post: "/api/tasks" body: "*" };
option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = {
tags: "Задачи";
summary: "Создать задачу";
description: "Доступно разработчикам и администратору.";
};
}
rpc UpdateTask(UpdateTaskReq) returns (TaskRsp) {
option (google.api.http) = { put: "/api/tasks/{ID}" body: "*" };
option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = {
tags: "Задачи";
summary: "Редактировать задачу";
description: "Доступно разработчикам и администратору.";
};
}
rpc SetTaskStatus(SetTaskStatusReq) returns (TaskRsp) {
option (google.api.http) = { post: "/api/tasks/{ID}/status" body: "*" };
option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = {
tags: "Задачи";
summary: "Изменить статус задачи";
description: "Доступно разработчикам и администратору.";
};
}
rpc DeleteTask(DeleteTaskReq) returns (DeleteTaskRsp) {
option (google.api.http) = { post: "/api/tasks/{ID}/delete" body: "*" };
option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = {
tags: "Задачи";
summary: "Удалить задачу";
description: "Доступно разработчикам и администратору.";
};
}
rpc GetParticipation(GetParticipationReq) returns (ParticipationRsp) {
option (google.api.http) = { post: "/api/participation/get" body: "*" };
option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = {
@@ -2188,3 +2236,56 @@ message TicketPage {
optional google.protobuf.Timestamp used_at = 7;
string used_by = 8;
}
// Developer tasks use new, in_progress, review and done statuses.
message DeveloperTask {
int32 ID = 1;
string title = 2;
string description = 3;
string status = 4;
// Omitted assignee means the task is unassigned.
optional int32 assigneeID = 5;
string assigneeName = 6;
optional int32 authorID = 7;
// Calendar deadline in YYYY-MM-DD format; empty means no deadline.
string dueDate = 8;
google.protobuf.Timestamp createdAt = 9;
google.protobuf.Timestamp updatedAt = 10;
// Required for updates and deletion to detect concurrent edits.
int32 version = 11;
}
message TaskAssignee {
int32 ID = 1;
string name = 2;
}
message GetTasksReq {}
message GetTasksRsp { repeated DeveloperTask tasks = 1; }
message GetTaskAssigneesReq {}
message GetTaskAssigneesRsp { repeated TaskAssignee assignees = 1; }
message CreateTaskReq {
string title = 1;
string description = 2;
string status = 3;
optional int32 assigneeID = 4;
string dueDate = 5;
}
message UpdateTaskReq {
int32 ID = 1;
string title = 2;
string description = 3;
string status = 4;
optional int32 assigneeID = 5;
string dueDate = 6;
int32 version = 7;
}
message SetTaskStatusReq {
int32 ID = 1;
string status = 2;
int32 version = 3;
}
message DeleteTaskReq {
int32 ID = 1;
int32 version = 2;
}
message TaskRsp { DeveloperTask task = 1; }
message DeleteTaskRsp {}