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
+4
View File
@@ -25,6 +25,7 @@ import (
"evening_detective_server/internal/repos/refresh_tokens_repo"
"evening_detective_server/internal/repos/scenarios_repo"
"evening_detective_server/internal/repos/screen_sessions_repo"
"evening_detective_server/internal/repos/tasks_repo"
"evening_detective_server/internal/repos/team_answers_repo"
"evening_detective_server/internal/repos/teams_repo"
"evening_detective_server/internal/repos/tickets_repo"
@@ -41,6 +42,7 @@ import (
"evening_detective_server/internal/services/scenarios_service"
"evening_detective_server/internal/services/screen_plan_service"
"evening_detective_server/internal/services/screen_service"
"evening_detective_server/internal/services/task_service"
"evening_detective_server/internal/services/team_service"
"evening_detective_server/internal/services/ticket_service"
"evening_detective_server/internal/services/ui_service"
@@ -108,6 +110,7 @@ func main() {
processorJWT := processor_jwt.NewProcessor(os.Getenv("JWT_SECRET"))
refreshTokensRepo := refresh_tokens_repo.NewRefreshTokensRepo(dbpool)
usersService := users_service.NewUsersService(usersRepo, passwordGenerator, emailSender, processorJWT, refreshTokensRepo, os.Getenv("APP_BASE_URL"))
taskService := task_service.NewTaskService(tasks_repo.NewTasksRepo(dbpool))
uiService := ui_service.NewUIService()
fileStorage, err := file_storage.NewRustFSStorage(
context.Background(),
@@ -226,6 +229,7 @@ func main() {
playlistService,
screenPlanService,
mapService,
taskService,
),
)
@@ -2724,6 +2724,209 @@
]
}
},
"/api/tasks": {
"get": {
"summary": "Получить общую доску задач",
"description": "Доступно разработчикам и администратору.",
"operationId": "EveningDetectiveServer_GetTasks",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/evening_detective_serverGetTasksRsp"
}
},
"default": {
"description": "An unexpected error response.",
"schema": {
"$ref": "#/definitions/rpcStatus"
}
}
},
"tags": [
"Задачи"
]
},
"post": {
"summary": "Создать задачу",
"description": "Доступно разработчикам и администратору.",
"operationId": "EveningDetectiveServer_CreateTask",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/evening_detective_serverTaskRsp"
}
},
"default": {
"description": "An unexpected error response.",
"schema": {
"$ref": "#/definitions/rpcStatus"
}
}
},
"parameters": [
{
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/evening_detective_serverCreateTaskReq"
}
}
],
"tags": [
"Задачи"
]
}
},
"/api/tasks/assignees": {
"get": {
"summary": "Получить разработчиков для назначения",
"description": "Доступно разработчикам и администратору.",
"operationId": "EveningDetectiveServer_GetTaskAssignees",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/evening_detective_serverGetTaskAssigneesRsp"
}
},
"default": {
"description": "An unexpected error response.",
"schema": {
"$ref": "#/definitions/rpcStatus"
}
}
},
"tags": [
"Задачи"
]
}
},
"/api/tasks/{ID}": {
"put": {
"summary": "Редактировать задачу",
"description": "Доступно разработчикам и администратору.",
"operationId": "EveningDetectiveServer_UpdateTask",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/evening_detective_serverTaskRsp"
}
},
"default": {
"description": "An unexpected error response.",
"schema": {
"$ref": "#/definitions/rpcStatus"
}
}
},
"parameters": [
{
"name": "ID",
"in": "path",
"required": true,
"type": "integer",
"format": "int32"
},
{
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/EveningDetectiveServerUpdateTaskBody"
}
}
],
"tags": [
"Задачи"
]
}
},
"/api/tasks/{ID}/delete": {
"post": {
"summary": "Удалить задачу",
"description": "Доступно разработчикам и администратору.",
"operationId": "EveningDetectiveServer_DeleteTask",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/evening_detective_serverDeleteTaskRsp"
}
},
"default": {
"description": "An unexpected error response.",
"schema": {
"$ref": "#/definitions/rpcStatus"
}
}
},
"parameters": [
{
"name": "ID",
"in": "path",
"required": true,
"type": "integer",
"format": "int32"
},
{
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/EveningDetectiveServerDeleteTaskBody"
}
}
],
"tags": [
"Задачи"
]
}
},
"/api/tasks/{ID}/status": {
"post": {
"summary": "Изменить статус задачи",
"description": "Доступно разработчикам и администратору.",
"operationId": "EveningDetectiveServer_SetTaskStatus",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/evening_detective_serverTaskRsp"
}
},
"default": {
"description": "An unexpected error response.",
"schema": {
"$ref": "#/definitions/rpcStatus"
}
}
},
"parameters": [
{
"name": "ID",
"in": "path",
"required": true,
"type": "integer",
"format": "int32"
},
{
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/EveningDetectiveServerSetTaskStatusBody"
}
}
],
"tags": [
"Задачи"
]
}
},
"/api/teams": {
"post": {
"summary": "Создать команду",
@@ -3586,6 +3789,15 @@
}
}
},
"EveningDetectiveServerDeleteTaskBody": {
"type": "object",
"properties": {
"version": {
"type": "integer",
"format": "int32"
}
}
},
"EveningDetectiveServerDeleteUserRoleBody": {
"type": "object",
"properties": {
@@ -3742,6 +3954,18 @@
}
}
},
"EveningDetectiveServerSetTaskStatusBody": {
"type": "object",
"properties": {
"status": {
"type": "string"
},
"version": {
"type": "integer",
"format": "int32"
}
}
},
"EveningDetectiveServerSetTeamAnswerScoreBody": {
"type": "object",
"properties": {
@@ -3876,6 +4100,31 @@
}
}
},
"EveningDetectiveServerUpdateTaskBody": {
"type": "object",
"properties": {
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"status": {
"type": "string"
},
"assigneeID": {
"type": "integer",
"format": "int32"
},
"dueDate": {
"type": "string"
},
"version": {
"type": "integer",
"format": "int32"
}
}
},
"EveningDetectiveServerUpdateTeamBody": {
"type": "object",
"properties": {
@@ -4162,6 +4411,27 @@
}
}
},
"evening_detective_serverCreateTaskReq": {
"type": "object",
"properties": {
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"status": {
"type": "string"
},
"assigneeID": {
"type": "integer",
"format": "int32"
},
"dueDate": {
"type": "string"
}
}
},
"evening_detective_serverDeleteAccountRsp": {
"type": "object"
},
@@ -4186,12 +4456,63 @@
"evening_detective_serverDeleteScenarioRsp": {
"type": "object"
},
"evening_detective_serverDeleteTaskRsp": {
"type": "object"
},
"evening_detective_serverDeleteTeamRsp": {
"type": "object"
},
"evening_detective_serverDeleteUserRoleRsp": {
"type": "object"
},
"evening_detective_serverDeveloperTask": {
"type": "object",
"properties": {
"ID": {
"type": "integer",
"format": "int32"
},
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"status": {
"type": "string"
},
"assigneeID": {
"type": "integer",
"format": "int32",
"description": "Omitted assignee means the task is unassigned."
},
"assigneeName": {
"type": "string"
},
"authorID": {
"type": "integer",
"format": "int32"
},
"dueDate": {
"type": "string",
"description": "Calendar deadline in YYYY-MM-DD format; empty means no deadline."
},
"createdAt": {
"type": "string",
"format": "date-time"
},
"updatedAt": {
"type": "string",
"format": "date-time"
},
"version": {
"type": "integer",
"format": "int32",
"description": "Required for updates and deletion to detect concurrent edits."
}
},
"description": "Developer tasks use new, in_progress, review and done statuses."
},
"evening_detective_serverDoor": {
"type": "object",
"properties": {
@@ -4581,6 +4902,30 @@
}
}
},
"evening_detective_serverGetTaskAssigneesRsp": {
"type": "object",
"properties": {
"assignees": {
"type": "array",
"items": {
"type": "object",
"$ref": "#/definitions/evening_detective_serverTaskAssignee"
}
}
}
},
"evening_detective_serverGetTasksRsp": {
"type": "object",
"properties": {
"tasks": {
"type": "array",
"items": {
"type": "object",
"$ref": "#/definitions/evening_detective_serverDeveloperTask"
}
}
}
},
"evening_detective_serverGetTeamAnswersRsp": {
"type": "object",
"properties": {
@@ -5271,6 +5616,26 @@
"evening_detective_serverSubmitTeamAnswersRsp": {
"type": "object"
},
"evening_detective_serverTaskAssignee": {
"type": "object",
"properties": {
"ID": {
"type": "integer",
"format": "int32"
},
"name": {
"type": "string"
}
}
},
"evening_detective_serverTaskRsp": {
"type": "object",
"properties": {
"task": {
"$ref": "#/definitions/evening_detective_serverDeveloperTask"
}
}
},
"evening_detective_serverTeam": {
"type": "object",
"properties": {