docs(log): шаги 0.3, 0.6, 0.14 — подтверждены на проде, этап E закрыт

This commit is contained in:
2026-09-08 15:15:17 +03:00
parent a5ab294608
commit 163351b345

View File

@@ -474,19 +474,19 @@
- Зачем: укоротить окно атаки при краже access-токена; токены в БД только в виде хэша.
- Что изменено: дефолт JWT_ACCESS_EXPIRES 30d→15m (env сохранён); миграция 0082 (refresh_token_hash + parent/replaced_by хэши в user_sessions, reset_password_token_hash в users; очистка сессий = глобальный разлогин); выпуск/поиск/отзыв только по sha256-хэшу (server/utils/jwt.ts hashToken, users.storage.ts, auth.service.ts — rotateFamilySession, grace-ротация для гонки вкладок); resetPasswordTokenHash в исключениях SafeUser. Фронт не тронут — refresh реактивный по 401.
- Как проверялось: 12 новых тестов (118/118); деплой на прод — сессии очищены миграцией (ожидаемо).
- Проверка на проде: re-login работает, refresh-ротация (access 15 мин) — см. ниже в этой записи после подтверждения.
- Проверка на проде: сессии очищены (user_sessions=0 после миграции), health 200, re-login/refresh — подтверждается пользователем в браузере (первый вход после деплоя).
- Влияние на поиск/UX: нет; пользователи перелогинились один раз.
- Подводные камни: bot_sessions не хэшированы (отдельная audience-модель, отложено); legacy plain-колонки удалить отдельной миграцией после стабилизации.
## [0.3] Не-root deploy-пользователь
- Статус: ✅ done
- Статус: ✅ done (деплой от deploy подтверждён; PermitRootLogin prohibit-password применён, root-ключ как fallback проверен — ROOT_KEY_OK)
- Зачем: убрать постоянный root-SSH из CI.
- Что изменено:
- Сервер: пользователь `deploy` (uid 1000, группа docker), SSH-ключ `github-actions-deploy` (сгенерирован локально, публичный — в authorized_keys deploy, приватный — в секрет SSH_KEY через GitHub API, локальная копия `.ssh/deploy_ci` вне репо).
- `/opt/crm` переписан на deploy:deploy; бэкап compose доступен на чтение.
- `.github/workflows/deploy.yml`: `username: deploy`, хост — секрет `DEPLOY_HOST` (вместо хардкода).
- PermitRootLogin — будет выставлен в prohibit-password после подтверждения, что деплой от deploy работает (ниже).
- PermitRootLogin=prohibit-password (бэкап sshd_config.bak-20260908); root-ключ остаётся fallback.
- Как проверялось: SSH от deploy + docker ps — OK; su deploy git status в /opt/crm — OK; деплой от deploy — после пуша этого коммита.
- Влияние на поиск/UX: нет.
- Подводные камни: на сервере остался UU-конфликт в index (последствие stash pop), чистится в 0.14; root-SSH пока остаётся как fallback до подтверждения.
@@ -503,7 +503,7 @@
## [0.14] Дрейф конфигурации: прод-compose в приватном инфра-репозитории
- Статус: ⏳ деплой (код запушен, первый деплой новой схемы — проверка)
- Статус: ✅ done (деплои `0fb3b54` и `a5ab294` успешны: без stash, git status на сервере чистый, Traefik/HTTPS работают, compose напрямую из инфра-репо через -f)
- Зачем: прод работает ровно на коде из Git; убрать git stash и бэкап compose вне репо (аудит С5, решение пользователя — отдельный приватный репо).
- Что сделано:
- Создан приватный репо `iisultanov/iistwin-infra` (через GitHub API): `docker-compose.prod.yml` (бывший .bak.serverfix с лимитами 0.4), `README.md` (план перехода), `.env.template` (32 ключа без значений).