6.1 KiB
evening_detective_server
Шалон для Go сервисов (имя репо должно быть snake case) Методы http должны быть с префиксом /api
Инициализация
make generate
go mod tidy
docker compose -f docker-compose-db.yml up -d
cp .env.example .env
mkdir migrations
Запуск
make run
Сборка
make build-builder
make build-linux
Миграции
goose -dir ./migrations create {migration name} sql
goose -dir ./migrations postgres "user=postgres password=postgres host=localhost dbname=evening_detective_server sslmode=disable" up
Тестирование
make test
Документация и юридические документы
docs/TERMS.md— Пользовательское соглашение (оферта); раздаётся сервером по постоянному URL/api/terms;docs/PRIVACY.md— Политика конфиденциальности и обработки персональных данных (152-ФЗ); раздаётся сервером по постоянному URL/api/privacy;docs/CONSENT.md— текст согласия на обработку ПДн для формы регистрации (URL/api/consent);docs/COMPLIANCE.md— чек-лист приведения сервиса в соответствие с документами.
Юридические эндпоинты:
POST /api/auth/signup— регистрация; требуетaccept_terms: trueиaccept_privacy: true(факт акцепта фиксируется в таблицеuser_agreements);DELETE /api/auth/delete-account— удаление учётной записи и персональных данных (авторизован JWT, подтверждение паролем в HTTP-заголовкеX-Password).
Агент «Юрист по ПО» (DSH)
В каталоге agents/software-lawyer лежит агент-пресет для DeepSeek Harness: специализированный консультант по правовым вопросам разработки ПО (лицензии, авторские права, персональные данные 152-ФЗ/GDPR, договоры). Отвечает на основе встроенной базы знаний (skills/software-law/references/), без внешних API.
Установка (копирует пресет в ~/.dsh/.agent-presets/software-lawyer):
./agents/software-lawyer/install.sh
После установки пресет «Юрист по ПО» появится в списке агентов при создании новой сессии в веб-интерфейсе DSH. Повторная установка с перезаписью: ./agents/software-lawyer/install.sh --force.
Структура:
agent.cordis.yml— композиция агента (полный набор инструментов, как у пресетаstandard, + персона юриста и скилл-база);preset.yml— отображаемое имя и описание;skills/software-law/— база знаний:SKILL.md(правила консультаций) иreferences/(лицензии, авторские права, ПДн, договоры).
MCP-сервер (встроен в основной сервис)
MCP-сервер (Model Context Protocol) встроен в основной бинарь и доступен как HTTP-эндпоинт /api/mcp (streamable HTTP) на REST-gateway — чтобы LLM-клиент (Claude Desktop, IDE с MCP-поддержкой и т.п.) мог играть в «Вечерний детектив». Инструменты вызывают игровые сервисы напрямую, отдельный процесс не нужен.
Инструменты:
| Инструмент | Назначение |
|---|---|
connect |
Подключиться к игре по ссылке /team-story/{id}?password=...; возвращает id команды, пароль и текущую историю |
get_team_story |
История команды: точки, двери, улики + инфо об игре (по паролю команды, без авторизации) |
make_move |
Ход команды в точку по её коду; возвращает обновлённую историю (по паролю команды, без авторизации) |
Ссылку на игру (/team-story/{id}?password=...) выдаёт команде организатор личным каналом — например, вместе с паролем. Принимаются относительные и абсолютные ссылки (в т.ч. с любым хостом): HTTP-запросы по ним не выполняются, из ссылки берутся только id команды и пароль. Игроку авторизация не нужна: команда идентифицируется паролем из ссылки.
Запуск — обычный запуск основного сервиса:
make run
MCP-эндпоинт: http://localhost:8090/api/mcp. ВНИМАНИЕ: REST-gateway слушает :8090 (gRPC — :8080), а docker-compose.yml публикует наружу только 8080 — для доступа к /api/mcp извне нужна публикация порта 8090 в compose либо проксирование пути /api/mcp через reverse-proxy (nginx/caddy). Эндпоинт публичный (как и REST /api/teams/{id}/story); секрет — пароль команды.
Подключение к MCP-клиенту (пример для Claude Desktop / аналогов):
{
"mcpServers": {
"evening-detective": {
"type": "http",
"url": "http://localhost:8090/api/mcp"
}
}
}