docs: VERSION MAJOR.MINOR, IFT/stage=sha, health build identity

This commit is contained in:
2026-07-14 21:25:41 +03:00
parent acb9393f46
commit 176c327092
3 changed files with 39 additions and 2 deletions
+1 -1
View File
@@ -262,7 +262,7 @@ src/
- `GET /v1/calendars/:calendar_id/view?month=YYYY-MM` — HTML-календарь (владелец), включая архив. - `GET /v1/calendars/:calendar_id/view?month=YYYY-MM` — HTML-календарь (владелец), включая архив.
### Административные (порт 8445) ### Административные (порт 8445)
- `GET /admin/health` — состояние сервера (без префикса `/v1`; используется в CT и Traefik healthcheck). - `GET /admin/health` и `GET /v1/admin/health` — состояние сервера + build identity: `status`, `service`, `version` (из `VERSION` / `EVENTHUB_VERSION`), `git_sha`, `built_at`. `/admin/health` — CT/Traefik; `/v1/admin/health` — admin SPA.
- `GET /v1/admin/stats` — агрегированная статистика дашборда. - `GET /v1/admin/stats` — агрегированная статистика дашборда.
- `POST /v1/admin/login` — вход администратора. - `POST /v1/admin/login` — вход администратора.
- `POST /v1/admin/refresh` — обновление пары access/refresh JWT администратора. - `POST /v1/admin/refresh` — обновление пары access/refresh JWT администратора.
+3 -1
View File
@@ -195,12 +195,14 @@
- Боковое меню (сайдбар) с пунктами, доступными в соответствии с ролью. - Боковое меню (сайдбар) с пунктами, доступными в соответствии с ролью.
- В нижней части сайдбара — виджет профиля текущего администратора с аватаром и именем (ник или email). При клике открывается меню «Мой профиль» и «Выйти». Кнопка сворачивания сайдбара находится в этой же панели. - В нижней части сайдбара — виджет профиля текущего администратора с аватаром и именем (ник или email). При клике открывается меню «Мой профиль» и «Выйти». Кнопка сворачивания сайдбара находится в этой же панели.
- Верхняя панель содержит моки оперативной статистики (онлайн, заказов сегодня, тикетов) — в будущем будут заменены на реальные данные. - Верхняя панель содержит моки оперативной статистики (онлайн, заказов сегодня, тикетов) — в будущем будут заменены на реальные данные.
- Все даты в интерфейсе русифицированы (dayjs с русской локалью, Ant Design ConfigProvider с русской локалью). - В меню профиля (аватар в header): «Мой профиль», язык UI, **Admin `MAJOR.MINOR (sha)`** и **API `MAJOR.MINOR (sha)`** (API — из `GET /v1/admin/health`), «Выйти».
- Все даты в интерфейсе русифицированы (dayjs с русской локалью; i18n ru/en).
- Единая нормализация данных: пустые значения (`null`, `undefined`, `"undefined"`, `"-"`) заменяются на прочерк, даты приводятся к читаемому формату. Нормализация применяется централизованно в хуках списков; для форм редактирования используются сырые данные. - Единая нормализация данных: пустые значения (`null`, `undefined`, `"undefined"`, `"-"`) заменяются на прочерк, даты приводятся к читаемому формату. Нормализация применяется централизованно в хуках списков; для форм редактирования используются сырые данные.
- Все таблицы имеют серверную пагинацию и сортировку через заголовок `X-Total-Count`. - Все таблицы имеют серверную пагинацию и сортировку через заголовок `X-Total-Count`.
## 7. Развёртывание ## 7. Развёртывание
- Product version: файл `VERSION` (`MAJOR.MINOR`); в CI bake как `VITE_APP_*`. Образы: `sha-<12>` + floating `:ift` / `:stage` (см. `EventHubSpec/WORKFLOW.md` §6).
- Production-сборка: `npm run build` → папка `dist/`. - Production-сборка: `npm run build` → папка `dist/`.
- Docker-образ на основе Nginx Alpine. - Docker-образ на основе Nginx Alpine.
- Контейнер подключается к сети `eventhub_network`. - Контейнер подключается к сети `eventhub_network`.
+35
View File
@@ -164,6 +164,39 @@ Issue: https://git.sabilin.com/EventHub/EventHubBack/issues/24
--- ---
## 6. Версии и деплой (IFT / stage)
### Product version (`VERSION`)
В корне `EventHubBack` и `EventHubFrontAdmin` лежит файл **`VERSION`** в формате **`MAJOR.MINOR`** (сейчас `0.1`).
- Бампается **вручную и редко** (релиз продуктовой линейки), не на каждый push.
- Patch-уровень SemVer **не** используется для stage-деплоев.
- Ручные git-теги `v*` для выкладки на stage **не** нужны.
### Идентичность сборки
| Поле | Откуда | Назначение |
|------|--------|------------|
| product version | `VERSION` | «линейка» продукта |
| git sha | `GITHUB_SHA` (12 символов) | точная сборка |
| built_at | время CI UTC | диагностика |
- **FrontAdmin:** bake в Vite (`VITE_APP_VERSION`, `VITE_GIT_SHA`, `VITE_BUILT_AT`) на шаге CI.
- **Back:** bake в Docker image (`EVENTHUB_VERSION`, `EVENTHUB_GIT_SHA`, `EVENTHUB_BUILT_AT`) → `GET /admin/health` и `GET /v1/admin/health` (`version`, `git_sha`, `built_at`).
- В UI (меню профиля): `Admin 0.1 (sha)` + `API 0.1 (sha)`.
### Registry / окружения
| Окружение | Тег образа | Когда |
|-----------|------------|--------|
| IFT / push CI | `sha-<12>` + floating `:ift` / `:dev` | после зелёного CI |
| Stage | тот же `sha-<12>` + floating `:stage` | auto после успешного CI на `master` (`deploy-stage.yml` → promote + SSH deploy) |
IFT и stage крутят **одну и ту же** сборку `sha-*`. Product version из `VERSION` на деплой не влияет.
---
## 4. Расширение правил ## 4. Расширение правил
При появлении новой договорённости в работе: При появлении новой договорённости в работе:
@@ -186,6 +219,7 @@ Issue: https://git.sabilin.com/EventHub/EventHubBack/issues/24
- Секреты и токены не коммитить; Gitea token — только в env / `~/.cursor/secrets/`. - Секреты и токены не коммитить; Gitea token — только в env / `~/.cursor/secrets/`.
- **Git commit/push — через WSL** (`~/.cursor/eventhub/git-commit.sh`, `git-push.sh`); **push — только после подтверждения пользователя** (см. §2.1). - **Git commit/push — через WSL** (`~/.cursor/eventhub/git-commit.sh`, `git-push.sh`); **push — только после подтверждения пользователя** (см. §2.1).
- Новая задача — **отдельный чат** с брифом по §5. - Новая задача — **отдельный чат** с брифом по §5.
- **Версии/деплой:** product = `VERSION` (`MAJOR.MINOR`); IFT+stage = `sha-*` (+ floating `:ift`/`:stage`); без ручных stage-тегов и без patch++ на каждый push (см. §6).
--- ---
@@ -193,6 +227,7 @@ Issue: https://git.sabilin.com/EventHub/EventHubBack/issues/24
| Дата | Изменение | | Дата | Изменение |
|------|-----------| |------|-----------|
| 2026-07-14 | §6: VERSION MAJOR.MINOR + auto stage по sha после CI |
| 2026-07-07 | Git-скрипты Agent перенесены в `~/.cursor/eventhub/` (не в репозиториях) | | 2026-07-07 | Git-скрипты Agent перенесены в `~/.cursor/eventhub/` (не в репозиториях) |
| 2026-07-07 | §5: шаблон передачи контекста в новый чат | | 2026-07-07 | §5: шаблон передачи контекста в новый чат |
| 2026-07-07 | Push на remote — только после подтверждения пользователя | | 2026-07-07 | Push на remote — только после подтверждения пользователя |