AIService - это сервис на Go, предназначенный для обработки данных цифровых досок с помощью ИИ. Сервис принимает данные доски (содержащие элементы такие как прямоугольники, текст, эллипсы, линии) и обрабатывает их с использованием ИИ для суммаризации или структуризации содержимого.
Проверка работоспособности сервиса
- Request: пустой
- Response:
{
"status": "ok",
"time": "2026-02-16T10:30:00Z"
}- Виды ошибок: нет
Обработка доски и возврат резюме содержимого
- Request:
{
"requestId": "req-simple-sum-001",
"userId": "user-simple-123",
"requestType": "summarize",
"board": {
"boardId": "simple-board-001",
"imageUrl": "",
"elements": [
{
"id": "elem-title",
"type": "text",
"x": 50.0,
"y": 50.0,
"width": 200.0,
"height": 40.0,
"rotation": 0.0,
"content": "Project Overview"
}
]
}
}- Response (при успешной синхронной обработке):
{
"requestId": "req-simple-sum-001",
"userId": "user-simple-123",
"requestType": "summarize",
"text": {
"id": "generated-id",
"type": "text",
"x": 100.0,
"y": 300.0,
"width": 250.0,
"height": 60.0,
"rotation": 0.0,
"content": "Краткое описание выводов пользователей на доске..."
}
}- Response (при асинхронной обработке):
"job-id-string"- Виды ошибок, status codes:
- 400: Неверные входные данные (пустой boardID, userID, слишком много элементов)
- 500: Внутренняя ошибка сервера
- 202: Задача принята в очередь на обработку
Обработка доски и возврат иерархии структуры файлов
- Request:
{
"requestId": "req-simple-struct-001",
"userId": "user-simple-789",
"requestType": "structurize",
"board": {
"boardId": "simple-struct-board-001",
"imageUrl": "",
"elements": [
{
"id": "elem-title",
"type": "text",
"x": 50.0,
"y": 50.0,
"width": 200.0,
"height": 40.0,
"rotation": 0.0,
"content": "Simple Project Structure"
}
]
},
"file": {
"name": "simple-project",
"type": "doc",
"children": [
{
"name": "main.js",
"type": "doc"
},
{
"name": "README.md",
"type": "doc"
}
]
}
}- Response (при успешной синхронной обработке):
{
"requestId": "req-simple-struct-001",
"userId": "user-simple-789",
"requestType": "structurize",
"aiTreeResponse": "simple-project─┬─main.js\n └───README.md",
"file": {
"name": "simple-project",
"type": "doc",
"children": [
{
"name": "main.js",
"type": "doc"
},
{
"name": "README.md",
"type": "doc"
}
]
}
}- Response (при асинхронной обработке):
"job-id-string"- Виды ошибок, status codes:
- 400: Неверные входные данные (пустой файл, userID, слишком много элементов)
- 500: Внутренняя ошибка сервера
- 202: Задача принята в очередь на обработку
Получение статуса задачи по ID
- Request: пустой
- Response:
{
"ID": "job-id-string",
"Request": {
"RequestType": "summarize",
"SummarizeRequest": {
"RequestID": "req-simple-sum-001",
"UserID": "user-simple-123",
"RequestType": "summarize",
"Board": {
"BoardID": "simple-board-001",
"ImageURL": "",
"Elements": [...]
}
}
},
"CreatedAt": 1234567890,
"Retries": 0,
"Status": "completed"
}- Виды ошибок, status codes:
- 404: Задача не найдена
- 200: Информация о задаче успешно получена
Отмена задачи по ID
- Request: пустой
- Response: пустой
- Виды ошибок, status codes:
- 404: Задача не найдена
- 200: Задача успешно отменена
Проект включает в себя Swagger документацию, которую можно посмотреть перейдя по адресу: http://localhost:8080/swagger/index.html после запуска сервиса.
Сервис поддерживает следующие переменные окружения:
PORT: порт для запуска сервера (по умолчанию: "8080")ENV: тип окружения ("dev" или "prod") - влияет на поведение кэшированияDB_TYPE: тип базы данных ("memory" или "sqlite")SQLITE_FILE_PATH: путь к файлу SQLite базы данных (по умолчанию: "./aiservice.db")LLM_PROVIDER: провайдер ИИ (по умолчанию: "gemini")GEMINI_API_KEY: ключ API для Google GeminiLLM_MODEL: модель ИИ (по умолчанию: "googleai/gemini-2.5-flash")
Для разработки:
ENV=dev DB_TYPE=memory go run cmd/server/main.goДля продакшена:
ENV=prod DB_TYPE=sqlite SQLITE_FILE_PATH=/path/to/db.sqlite go run cmd/server/main.go- Поддержка очереди заданий для асинхронной обработки
- Многоуровневое кэширование для уменьшения обращений к API ИИ
- Пространственный анализ элементов доски
- Семантический анализ ролей элементов
- Интеграция с S3 (в частности, Yandex S3)