feat: добавил изменение промта для админа
Backend CI / build-and-test (push) Failing after 11m26s
🚀 Create and publish a Docker image / Detect changes in backend and frontend (push) Failing after 14m2s
Frontend CI / build-and-check (push) Failing after 19m55s
🚀 Create and publish a Docker image / Build & publish frontend image (push) Failing after 14m7s
🚀 Create and publish a Docker image / Build & publish backend image (push) Failing after 14m59s
🚀 Create and publish a Docker image / Update stack on Portainer (push) Failing after 15m0s

This commit is contained in:
2026-05-21 21:58:33 +03:00
parent 27a2811806
commit 935e4ed37a
22 changed files with 1880 additions and 15 deletions
+145
View File
@@ -2587,6 +2587,126 @@
]
}
},
"/api/v1/reviews/llm-prompt": {
"get": {
"tags": [
"Reviews"
],
"summary": "Получить текущий промпт LLM-анализа отзывов.",
"description": "Только Admin. Если настройка ещё не сохранена, возвращает базовый промпт.\n\n**Required roles:** Admin",
"responses": {
"200": {
"description": "Текущий шаблон промпта.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ReviewPromptDto"
}
}
}
},
"401": {
"description": "Требуется аутентификация.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"403": {
"description": "Требуется роль Admin.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
},
"security": [
{
"Bearer": [ ]
}
]
},
"put": {
"tags": [
"Reviews"
],
"summary": "Обновить промпт LLM-анализа отзывов.",
"description": "Только Admin. Промпт применяется к следующим анализам и ручным повторам.\n\n**Required roles:** Admin",
"requestBody": {
"description": "Новый шаблон с плейсхолдерами {lectureContext} и {reviewText}.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateReviewPromptRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/UpdateReviewPromptRequest"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/UpdateReviewPromptRequest"
}
}
}
},
"responses": {
"200": {
"description": "Сохранённый шаблон промпта.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ReviewPromptDto"
}
}
}
},
"400": {
"description": "Промпт пустой или не содержит обязательные плейсхолдеры.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"401": {
"description": "Требуется аутентификация.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"403": {
"description": "Требуется роль Admin.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
},
"security": [
{
"Bearer": [ ]
}
]
}
},
"/api/v1/reviews/{id}": {
"get": {
"tags": [
@@ -5506,6 +5626,21 @@
],
"type": "string"
},
"ReviewPromptDto": {
"type": "object",
"properties": {
"prompt": {
"type": "string",
"nullable": true
},
"updatedAt": {
"type": "string",
"format": "date-time",
"nullable": true
}
},
"additionalProperties": false
},
"ReviewRating": {
"enum": [
"Like",
@@ -5853,6 +5988,16 @@
},
"additionalProperties": false
},
"UpdateReviewPromptRequest": {
"type": "object",
"properties": {
"prompt": {
"type": "string",
"nullable": true
}
},
"additionalProperties": false
},
"UpdateReviewRequest": {
"type": "object",
"properties": {