grendervill
a5205cc054
feat(store,permissions): схема Фазы 1, доступ к данным и движок прав
...
- миграция 00002: users, sessions, totp_secrets, webauthn_credentials,
security_events, guilds, guild_members, roles, member_roles, channels,
channel_overrides, audit_log + дефолтные instance_settings (AGENT.md 6.1)
- internal/store: Snowflake-идентификаторы, CRUD пользователей и сессий
(ротация, step-up, logout-all), TOTP и события безопасности, серверы,
участники, роли, комнаты и оверрайды, настройки инстанса и аудит
- internal/permissions: 37 прав битмаской, вычисление по правилам §6.2
(баз role @user → оверрайды ролей → оверрайд пользователя → ADMINISTRATOR),
иерархия ролей и участников, тайм-ауты, обход для инстанс-админа, LRU-кэш
с инвалидацией
- internal/source: адаптер permissions.Source поверх store
- тесты: 18 unit-тестов прав + интеграционный набор на реальной SQLite
(приватная комната, модератор, владелец, инстанс-админ, тайм-аут)
- golangci: обоснованное исключение gosec для пакета store (конверсии
Snowflake и сборка SQL из константных шаблонов)
2026-09-19 21:24:17 +03:00
grendervill
2bf7101f2d
chore(lint): настроить golangci-lint v2, gofumpt и форматирование в make
...
- .golangci.yml: набор линтеров под требования §14 (gosec, gocritic, sloglint,
noctx, revive, depguard для запрета циклических зависимостей internal/*)
- gofumpt вынесен из formatters golangci-lint v2.13 (сообщал о расхождениях,
которые сам же не устранял) и применяется отдельным инструментом
- make fmt/go-lint: проверка gofumpt + golangci-lint fmt --diff
- scripts/gitleaks-scan.sh: поддержка gitleaks 8.19+ (dir) и старых версий (detect)
- исправлены замечания линтеров: обработка ошибок Close, контекст в логах,
NewRequestWithContext в тестах, комментарий к blank-import драйвера SQLite
2026-09-19 18:25:20 +03:00
grendervill
69aa98e18c
feat(server): скелет Go-сервера с healthz, readyz и api/v1/meta
...
- internal/config: конфигурация из env с валидацией и дефолтами (§5.1, §9.1)
- internal/httpx: middleware (request id, slog-логи, recover, security-заголовки),
единый формат ошибок §8.5 и лимит тела запроса
- internal/database: SQLite WAL + busy_timeout + foreign_keys, один writer
и пул чтения, goose-миграции embedded, PRAGMA optimize по расписанию
- internal/meta: полезная нагрузка /api/v1/meta (версия, фичи, лимиты)
- internal/server: маршруты, SPA-раздача собранного клиента, OpenAPI 3.1
- cmd/glchat: точка входа с graceful shutdown и JSON-логами
- тесты: конфиг, миграции и идемпотентность, HTTP-эндпоинты, статика, 404/405
2026-09-19 18:20:56 +03:00