diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 0000000..6314c5f --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,57 @@ +# Backend — правила работы агента + +## Стек + +- Go `1.26`; +- gRPC + grpc-gateway; +- PostgreSQL через `pgx`; +- миграции Goose; +- S3-совместимое хранилище для файлов; +- MCP встроен в основной сервис. + +## Структура + +- `api/` — protobuf-контракт; +- `proto/` — сгенерированный Go-код; +- `internal/app/` — gRPC/HTTP handlers; +- `internal/services/` — бизнес-логика; +- `internal/repos/` — работа с PostgreSQL; +- `internal/modules/` — переиспользуемые модули; +- `migrations/` — миграции базы данных. + +## Правила + +1. Сначала найди всех callers изменяемой функции и существующий паттерн. +2. Делай минимальное изменение; каждый модуль разделяй на интерфейс и реализацию. +3. Бизнес-логику держи в services, SQL — в repos, транспорт — в app. +4. Новые HTTP-методы добавляй через `api/main.proto` и регенерируй код. +5. `proto/` и Swagger — сгенерированные файлы; руками их не редактируй. +6. Изменения схемы БД оформляй отдельной миграцией, совместимой с предыдущей версией. +7. Не добавляй `.env`, ключи, пароли или локальные артефакты в Git. +8. Коммиты и push выполняет только пользователь; агент никогда не коммитит и не отправляет изменения. + +## Проверки + +```sh +gofmt -w <изменённые-go-файлы> +go test ./... +``` + +После изменения protobuf: + +```sh +make generate +``` + +Для проверки с PostgreSQL используй отдельную тестовую базу через +`TEST_DATABASE_URL`; интеграционные тесты не должны зависеть от production-базы. + +## Локальный запуск + +```sh +docker compose -f docker-compose-db.yml up -d +cp .env.example .env +make run +``` + +gRPC слушает `:8080`, REST gateway — `:8090`.