2026-08-28 23:01:48 +07:00
2026-08-21 23:03:44 +07:00
2026-07-12 18:05:52 +07:00
2026-08-18 23:05:48 +07:00
2026-08-28 22:02:58 +07:00
2026-08-28 23:01:48 +07:00
2026-08-28 23:01:48 +07:00
2026-08-19 23:31:37 +07:00
2026-08-28 22:02:58 +07:00
2026-08-19 02:15:57 +07:00
2026-08-28 22:02:58 +07:00
2026-08-20 23:17:52 +07:00
2026-08-20 03:27:26 +07:00
2026-08-20 02:31:14 +07:00
2026-07-11 13:14:30 +07:00
2026-07-19 21:18:16 +07:00
2026-06-28 17:24:14 +00:00
2026-06-28 17:24:14 +00:00
2026-08-27 00:11:57 +07:00
2026-08-20 23:17:52 +07:00
2026-08-27 00:11:57 +07:00

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"
    }
  }
}
S
Description
Сервер для игры "Вечерний детектив"
Readme 617 MiB
Languages
Go 99.1%
Shell 0.6%
Makefile 0.2%