Skip to content

foggyTeam/aiservice

Repository files navigation

AIService - Сервис анализа досок

AIService - это сервис на Go, предназначенный для обработки данных цифровых досок с помощью ИИ. Сервис принимает данные доски (содержащие элементы такие как прямоугольники, текст, эллипсы, линии) и обрабатывает их с использованием ИИ для суммаризации или структуризации содержимого.

API Эндпоинты

GET запрос /health

Проверка работоспособности сервиса

  • Request: пустой
  • Response:
{
  "status": "ok",
  "time": "2026-02-16T10:30:00Z"
}
  • Виды ошибок: нет

POST запрос /summarize

Обработка доски и возврат резюме содержимого

  • 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: Задача принята в очередь на обработку

POST запрос /structurize

Обработка доски и возврат иерархии структуры файлов

  • 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: Задача принята в очередь на обработку

GET запрос /jobs/:id

Получение статуса задачи по 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: Информация о задаче успешно получена

PUT запрос /jobs/:id/abort

Отмена задачи по ID

  • Request: пустой
  • Response: пустой
  • Виды ошибок, status codes:
    • 404: Задача не найдена
    • 200: Задача успешно отменена

Swagger документация

Проект включает в себя 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 Gemini
  • LLM_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)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published