проектdocs/project/project-change-log.md
Project change log
Обновлён 14 апр. 2026 г., 17:16 · 0 комментариев
Project change log
Паспорт документа
- Статус документа: living document
- Актуально на: 2 апреля 2026 года
- Владелец: backend/platform-команда
- Пересмотр: при каждом завершённом change package, который влияет на проектный контур
- Область применения: хронология change packages уровня платформы, инфраструктуры, документации и delivery
- Связанные документы:
Цель документа
Этот документ ведётся отдельно от frontend changelog. Его задача — коротко фиксировать, какие пакеты изменений уже реально прошли через проект, что они изменили и какие checkpoints затронули.
Правила ведения
- Одна запись = один завершённый change package
- Запись добавляется только по факту исполнения
- Если пакет меняет frontend-контракт, ссылка на
frontend-change-log.mdобязательна - Если пакет меняет статус этапа, ссылка на
execution-checkpoints.mdобязательна
Записи
API-2026-04-06-01 — Исправлена потеря web-сессии после 15 минут при полной перезагрузке страницы
- Дата: 6 апреля 2026 года
- Статус:
applied - Затронутые checkpoints:
- без изменения checkpoint status
- Что изменилось:
- refresh cookie
qadam_rtбольше не ограниченаpath=/api/v1/authи теперь выставляется наpath=/, чтобы server-side proxy на обычных web-маршрутах мог читать её после истеченияqadam_at - backend при выдаче новой пары токенов дополнительно чистит legacy refresh-cookie с
path=/api/v1/auth, чтобы не оставлять дубли с одинаковым именем и разными path - clear/logout теперь очищает обе версии
qadam_rt: legacy path и новый root path - это закрывает баг, при котором пользователь терял web-сессию примерно через 15 минут при обновлении страницы, несмотря на ещё живой refresh token
- refresh cookie
- Документы:
API-2026-04-02-06 — Owner-facing status-change notifications доведены до live seller staff flow
- Дата: 2 апреля 2026 года
- Статус:
applied - Затронутые checkpoints:
- без изменения checkpoint status
- Что изменилось:
- seller lead routes
GET /seller/leadsиPUT /seller/leads/:id/statusтеперь осмысленно работают не только для owner, но и для активногоSELLER_STAFF - owner-facing status-change delivery больше не остаётся пустым toggle: если статус меняет
SELLER_STAFF, backend шлёт owner-уведомление по выбранным статусам черезTelegram -> Email fallback - список отслеживаемых статусов вынесен в runtime env
SELLER_STATUS_CHANGE_NOTIFY_STATUSES, чтобы product/platform-команда могла включать и исключать статусы без нового backend schema package - owner не получает бессмысленное уведомление о своём собственном статус-апдейте
- seller lead routes
- Документы:
API-2026-04-02-05 — Для seller lead notifications включён SMTP-capable email fallback
- Дата: 2 апреля 2026 года
- Статус:
applied - Затронутые checkpoints:
- без изменения checkpoint status
- Что изменилось:
- в
qadam-corebackend теперь не ограничивается Telegram-only попыткой доставки при создании нового лида: если Telegram недоступен, отключён или не настроен, сервис умеет перейти на SMTP-capable email fallback sellerEmailв notification settings и в delivery context теперь резолвится из seller profile email с fallback на account email, чтобы доставка не зависела только от auth-слояnotifyStatusChangeTelegramчестно оставлен forward-compatible настройкой: текущий live lead flow не даёт отдельного owner-facing status-change trigger, поэтому пакет не притворяется завершением status-change delivery- в runtime/env-модели добавлены
SMTP_*переменные для seller email notifications, но их включение на конкретном stage/prod окружении остаётся отдельным operational шагом
- в
- Документы:
DOCS-2026-04-02-02 — Зафиксировано правило идентификаторов для аналитического контура
- Дата: 2 апреля 2026 года
- Статус:
applied - Затронутые checkpoints:
- без изменения checkpoint status
- Что изменилось:
- в канонической архитектурной документации зафиксировано правило split идентификаторов между продуктовым и аналитическим контурами
- backend/product слой остаётся на внешних продуктовых идентификаторах в текущем UUID/string-формате
- аналитический слой должен автоматически вводить внутренние surrogate key
bigintи строить внутренние join только по ним через mapping1:1
- Документы:
API-2026-04-02-04 — В seller notifications замкнут Telegram bot connect flow
- Дата: 2 апреля 2026 года
- Статус:
applied - Затронутые checkpoints:
- без изменения checkpoint status
- Что изменилось:
- в
qadam-coreseller-facing Telegram onboarding перестал быть “ручным знанием бота”: backend теперь отдаётGET /seller/telegram/connect-linkс коротким signed deep link POST /api/v1/internal/telegram/webhookпринимает/startот Telegram-бота, выпускает одноразовый 6-значный verification code и инвалидирует предыдущий незавершённый код продавцаPOST /seller/telegram/verifyиDELETE /seller/telegramужесточены до продуктовых состоянийALREADY_VERIFIEDиNOT_CONNECTED, а bindingtelegramChatIdдополнительно защищён уникальностью на уровне БД- seller notification settings больше не показывают
telegramUsername, если seller фактически не подключён
- в
- Документы:
API-2026-04-02-03 — Поднят seller notifications baseline для новых лидов
- Дата: 2 апреля 2026 года
- Статус:
applied - Затронутые checkpoints:
- без изменения checkpoint status
- Что изменилось:
- в
qadam-coreдобавлен отдельный notifications-модуль сGET/PATCH /seller/notification-settings - backend теперь хранит
NotificationSettingsиNotificationLog, а при создании нового лида запускает неблокирующую попытку Telegram-доставки продавцу по существующей seller Telegram binding - исторические seller-аккаунты без настроек больше не требуют ручной миграции в коде: settings поднимаются через
upsert, а новые seller-регистрации создают их сразу - email toggle уже зафиксирован в контракте как forward-compatible setting, но SMTP/provider delivery пока сознательно не заявлен как завершённый production channel
- в
- Документы:
WEB-2026-04-02-02 — Stage smoke baseline подтверждён живым прогоном
- Дата: 2 апреля 2026 года
- Статус:
applied - Затронутые checkpoints:
CP-204CP-206
- Что изменилось:
- stage-oriented smoke baseline из
qadam-webбольше не существует только на бумаге: на stage успешно прошли10из10проверок по runtime health, public pages, public item, public seller profile и buyer/seller/admin dashboard flows CP-204остаётсяin progress, потому что smoke ещё не встроен в автоматический post-deploy запуск и не дорос до browser-level e2e- у
CP-206снят устаревший хвост про отсутствие public seller profile в stage smoke baseline; незакрытым остаётся именно frontend adoption SEO metadata
- stage-oriented smoke baseline из
- Документы:
API-2026-04-02-02 — В auth-контур добавлена смена пароля из кабинета
- Дата: 2 апреля 2026 года
- Статус:
applied - Затронутые checkpoints:
- без изменения checkpoint status
- Что изменилось:
- в
qadam-coreдобавлен новый endpointPOST /api/v1/auth/change-passwordдля авторизованной смены пароля без recovery flow - endpoint валидирует
currentPassword, применяет те же правила кnewPassword, что и registration/reset-password, и публикует response schema{ message }в OpenAPI - после успешной смены пароля backend отзывает refresh token family пользователя, чтобы старые долгоживущие сессии не оставались валидными
- из большого внешнего списка
OpenAPI gapsдополнительные response schemas и address constraints отдельно не правились, потому что они уже были закрыты в текущемmain; реальным незакрытым хвостом оставался толькоchange-password
- в
- Документы:
WEB-2026-04-02-01 — Для product web добавлен stage-oriented smoke baseline
- Дата: 2 апреля 2026 года
- Статус:
applied - Затронутые checkpoints:
CP-204
- Что изменилось:
- в
qadam-webдобавлен исполняемый smoke scriptpnpm smoke:web:flows, который проверяет runtime health, публичные страницы/,/login,/register,/forgot-passwordи role-based web flows buyer/seller/admin - smoke использует stage env вместо жёстко прошитых данных: логины/пароли и public identifiers для item/seller передаются через
deploy/env/web-smoke.env.example CP-204переведён изplannedвin progress: базовый smoke layer уже появился, но его ещё нужно встроить в внешний stage release-контур и позже усилить до полноценного browser-level e2e
- в
- Документы:
DOCS-2026-04-01-02 — Зафиксирована модель stage delivery через merge в main
- Дата: 1 апреля 2026 года
- Статус:
applied - Затронутые checkpoints:
- без изменения checkpoint status
- Что изменилось:
- в канонической документации зафиксировано, что текущая машина используется для разработки, фиксов и локальных инженерных проверок, но не считается обязательным ручным stage deploy-контуром
- добавлен отдельный документ
docs/operations/stage-delivery-model.md, который описывает release handoff между backend и frontend и правило: согласованный merge вmainявляется релизным событием для внешнего stage-сервера frontend-handoff.md,change-package-standard.md,deployment-runbook.mdиcurrent-state.mdсинхронизированы с этой моделью и больше не оставляют двусмысленность между локальным operational runbook и внешним stage auto deploy
- Документы:
OPS-2026-04-01-01 — Зафиксирован отдельный bootstrap-runbook для проверочного сервера
- Дата: 1 апреля 2026 года
- Статус:
applied - Затронутые checkpoints:
- без изменения checkpoint status
- Что изменилось:
- в канонической документации добавлен отдельный runbook
docs/operations/verification-server-bootstrap.mdдля быстрого подъёма отдельного сервера, на котором одновременно работают backend и product web - в runbook явно зафиксировано, что уже берётся из Git, а что остаётся вне Git как runtime-конфигурация: env, secrets, nginx, TLS, БД и Redis
- документ фиксирует рекомендуемую topology для UI-проверок: один stage-домен,
apiна127.0.0.1:5002,webна127.0.0.1:3002, единыйnginxперед ними и синхронизациюopenapi.jsonмеждуqadam-coreиqadam-web
- в канонической документации добавлен отдельный runbook
- Документы:
OPS-2026-03-31-14 — Для product web подтверждён registry-backed shadow runtime
- Дата: 31 марта 2026 года
- Статус:
applied - Затронутые checkpoints:
CP-301
- Что изменилось:
- в
qadam-webдобавлены лёгкий runtimeDockerfile,.dockerignore, compose manifestdeploy/compose/docker-compose.web-runtime.ymlи scriptsbuild-web-image.sh,publish-web-image.sh,smoke-web-runtime-compose.sh - web image больше не требует тяжёлый multistage
pnpm install + next buildвнутри Docker на production-хосте: image собирается из уже готового.next/standalone,.next/staticиpublic - подтверждён registry namespace
git.2fab.app/eldar/qadam-web-app: product web image опубликован, затем независимо вытянут черезdocker pullи поднят как shadow runtime на127.0.0.1:3002 qadam-webостаётся на host-levelsystemdв production, поэтомуCP-301не закрыт; следующий шаг — production cutover product web и только после этого выравниваниеqadam-roadmap
- в
- Документы:
OPS-2026-03-31-13 — API переключён на container runtime через reversible cutover path
- Дата: 31 марта 2026 года
- Статус:
applied - Затронутые checkpoints:
CP-301
- Что изменилось:
- в
qadam-coreдобавлены source-controlled cutover/rollback-скриптыdeploy/scripts/cutover-api-to-container.sh,deploy/scripts/rollback-api-to-systemd.shи nginx upstream switcherdeploy/scripts/set-api-upstream.sh - в репозитории зафиксированы templates
deploy/nginx/qadam-api-upstream.confиdeploy/systemd/qadam-api-container.service, а на сервере установлены/etc/nginx/conf.d/qadam-api-upstream.conf,/etc/systemd/system/qadam-api-container.serviceи/etc/qadam/qadam-api-runtime.env - public
/api/*трафикqadam.2fab.appпереведён сqadam-api.serviceнаqadam-api-container.service, который запускает registry imagegit.2fab.app/eldar/qadam-core-api:git-b5207058e82ae89823357172e38311e98664ac81 - host nginx теперь использует named upstream
qadam_api_backend -> 127.0.0.1:5002, а legacyqadam-api.serviceостановлен и оставлен как rollback path на127.0.0.1:5001 CP-301остаётсяin progress, потому чтоqadam-webиqadam-roadmapещё не переведены на такой же image-based runtime и проект временно работает в mixed-runtime модели
- в
- Документы:
OPS-2026-03-31-12 — Для API подтверждён registry-based delivery через Gitea Container Registry
- Дата: 31 марта 2026 года
- Статус:
applied - Затронутые checkpoints:
CP-301
- Что изменилось:
- для
qadam-core/apiдобавлен publish scriptdeploy/scripts/publish-api-image.sh, который публикует versioned image tag в Gitea Container Registrygit.2fab.app/eldar/qadam-core-api - compose-based shadow smoke
deploy/scripts/smoke-api-runtime-compose.shтеперь умеет работать и от registry image, а не только от локально собранного образа - repo-side workflow
Quality Gateдополнен jobPublish API Image, который наpushвmainпубликуетgit-<commit>image tag после зелёногоAPI Container Smoke - registry path подтверждён по факту: опубликован тестовый image
git.2fab.app/eldar/qadam-core-api:registry-smoke-4805b86 CP-301остаётсяin progress: API registry delivery уже работает, но production cutover и аналогичный канонический image-baseline дляqadam-webещё остаются отдельным follow-up
- для
- Документы:
OPS-2026-03-31-11 — API image delivery baseline доведён до build script и compose shadow smoke
- Дата: 31 марта 2026 года
- Статус:
applied - Затронутые checkpoints:
CP-301
- Что изменилось:
- для
qadam-core/apiдобавлен канонический build scriptdeploy/scripts/build-api-image.sh, который собирает образ с OCI labels и результативным тегомqadam-core-api:git-<commit> - для
qadam-core/apiдобавлен compose-based shadow smokedeploy/scripts/smoke-api-runtime-compose.sh, который поднимает runtime-manifestdeploy/compose/docker-compose.api-runtime.ymlна127.0.0.1:5002с production env без остановки host-levelqadam-api - в
deploy/env/api-runtime.env.exampleзафиксирован template delivery-обвязки для image-based runtimeapi CP-301остаётсяin progress: API image delivery baseline уже воспроизводим на сервере, но registry/image push и production cutover ещё остаются отдельным follow-up
- для
- Документы:
OPS-2026-03-31-10 — Repo-side API container smoke добавлен в quality gate
- Дата: 31 марта 2026 года
- Статус:
applied - Затронутые checkpoints:
CP-301
- Что изменилось:
- self-hosted runner
qadam-core-runnerполучил доступ к Docker daemon через группуdocker - в
qadam-coreдобавлен self-contained сценарийscripts/smoke-api-container.shи root-командаpnpm smoke:api-container - container smoke поднимает временные PostgreSQL и Redis контейнеры, прогоняет
run-migrations.shвнутри API image и проверяетhealth/readyиmetrics - repo-side workflow
Quality Gateрасширен отдельным jobAPI Container Smoke, который собираетapps/api/Dockerfileи запускает этот smoke без зависимости от production БД CP-301остаётсяin progress: image baseline и repo-side smoke уже работают, но registry/image delivery и production cutover ещё не доведены
- self-hosted runner
- Документы:
OPS-2026-03-31-09 — Подготовлен API container baseline и Docker storage вынесен на отдельный диск
- Дата: 31 марта 2026 года
- Статус:
applied - Затронутые checkpoints:
CP-301
- Что изменилось:
- на сервер установлен Docker Engine, а его
data-rootпереведён на/mnt/qadam100gb/docker, чтобы image build не забивал корневой раздел - в
qadam-coreканонизированapps/api/Dockerfile: runtime user,dumb-init, healthcheck и отдельные helper scripts для migrations/seed - добавлен первый deployment manifest
deploy/compose/docker-compose.api-runtime.ymlдляapi,migrateиseed - backend bootstrap больше не создаёт локальные uploads и не монтирует static
/uploads, еслиOBJECT_STORAGE_DRIVER=s3 - подтверждён первый container smoke: image
qadam-core-api:cp301-smokeсобирается,run-migrations.shпроходит, контейнер стартует на127.0.0.1:5002, аGET /api/v1/healthотвечает200 CP-301переведён изplannedвin progress; host-based runtime всё ещё остаётся каноническим production-контуром до отдельного cutover
- на сервер установлен Docker Engine, а его
- Документы:
OPS-2026-03-31-08 — Backup alerting переведён на fail/recovery-only логику
- Дата: 31 марта 2026 года
- Статус:
applied - Затронутые checkpoints:
- без изменения checkpoint status
- Что изменилось:
- backup runtime теперь читает предыдущее состояние из
QADAM_BACKUP_STATE_FILEи больше не шлёт повторяющиеся failure-уведомления на каждый последующий неуспешный прогон - Telegram alert для backup теперь отправляется только при первом переходе
ok -> failedи при следующемfailed -> okкакRECOVERY - обычные успешные nightly backup-run'ы остаются тихими, если явно не включён
QADAM_BACKUP_NOTIFY_ON_SUCCESS=true
- backup runtime теперь читает предыдущее состояние из
- Документы:
OPS-2026-03-31-07 — Автоматизирован baseline backup и off-host retention
- Дата: 31 марта 2026 года
- Статус:
applied - Затронутые checkpoints:
CP-302
- Что изменилось:
- в
qadam-coreдобавлен исполняемый backup runtimescripts/backup-runtime.mjsи root-командаpnpm backup:run - на сервере подняты
qadam-backup.serviceиqadam-backup.timer, которые ежедневно снимают production snapshot без ручного запуска - backup-сценарий теперь включает
pg_dump, API/roadmap storage, roadmap feedback overlay и runtime config, а также локальную верификацию черезpg_restore --listиSHA256SUMS - off-host archive реально выгружается в S3-compatible storage, а state последнего прогона фиксируется в
/var/lib/qadam-backup/state.json - retention policy уже работает автоматически:
7дней локально и30дней off-host
- в
- Документы:
OPS-2026-03-31-04 — В backend поднят monitoring baseline с readiness и Prometheus metrics
- Дата: 31 марта 2026 года
- Статус:
applied - Затронутые checkpoints:
CP-303
- Что изменилось:
qadam-coreтеперь публикуетGET /health,GET /health/live,GET /health/readyиGET /metrics- readiness probe реально проверяет primary PostgreSQL и Redis и отдаёт machine-readable component status с latency
GET /metricsотдаёт Prometheus-compatible runtime/process/http metrics и сознательно ограничен loopback-only доступом- в backend появился базовый HTTP/runtime metrics contour на
prom-client, но внешний uptime/TLS monitoring пока остаётся отдельным follow-up
- Документы:
OPS-2026-03-31-05 — Подготовлен Telegram alert channel для monitoring-контура
- Дата: 31 марта 2026 года
- Статус:
applied - Затронутые checkpoints:
CP-303
- Что изменилось:
- для production зафиксирован
TELEGRAM_ALERT_CHAT_IDканала health-уведомлений - в
qadam-coreдобавлен reusable senderpnpm telegram:alert, который шлёт сообщения черезTELEGRAM_BOT_TOKENиTELEGRAM_ALERT_CHAT_ID - deployment runbook и environment matrix синхронизированы с новым operational alert-delivery контуром
- для production зафиксирован
- Документы:
OPS-2026-03-31-06 — Поднят внешний uptime/TLS monitoring для api, web и roadmap
- Дата: 31 марта 2026 года
- Статус:
applied - Затронутые checkpoints:
CP-303
- Что изменилось:
- в
qadam-coreдобавлен stateful monitorscripts/monitor-runtime.mjs, который внешне проверяет product web, API readiness, roadmap web и TLS обоих доменов - на сервере подняты
qadam-monitor.serviceиqadam-monitor.timerс периодом 5 минут - монитор сохраняет dedupe/recovery state в
/var/lib/qadam-monitor/state.jsonи шлёт алерты в Telegram только на изменение статуса CP-303переведён вcompleted, потому что backend metrics/readiness, внешний uptime/TLS monitoring и alert delivery теперь реально работают как единый operational baseline
- в
- Документы:
CORE-2026-03-31-03 — Public seller profile переведён на явный публичный SEO-контракт
- Дата: 31 марта 2026 года
- Статус:
applied - Затронутые checkpoints:
CP-206
- Что изменилось:
GET /sellers/:idбольше не отдаёт прямой re-use приватного seller profile shape и публикует отдельный санитизированный public contract- public response теперь включает backend-generated
seoblock:title,description,canonicalUrl,openGraph,jsonLd - backend режет non-active seller profile как
404и не включает hidden seller addresses в публичный payload - optional env
PUBLIC_WEB_BASE_URLзадокументирован как источник canonical URLs; при его отсутствии backend выводит базовый public URL изNEXT_PUBLIC_API_URL
- Документы:
CORE-2026-03-31-02 — Seller review reply и complaint flow добавлены в backend review contour
- Дата: 31 марта 2026 года
- Статус:
applied - Затронутые checkpoints:
CP-205
- Что изменилось:
- backend публикует seller review surface:
GET /seller/reviews,PATCH /seller/reviews/:id/reply,POST /seller/reviews/:id/complaint - seller теперь может ответить на опубликованный отзыв, а редактирование ответа ограничено 48-часовым окном
- complaint-driven moderation замкнута end-to-end: seller complaint переводит отзыв в
PENDING_MODERATION, отзыв временно исчезает из public aggregates, а admin moderation завершает сценарий публикацией или отклонением GET /me/reviews,GET /catalog/items/:slug/reviews, seller review list и admin moderation detail теперь согласованно публикуютsellerReply,sellerReplyAtиactiveComplaintтам, где это необходимо
- backend публикует seller review surface:
- Документы:
CORE-2026-03-31-01 — Backend review status model и admin review moderation baseline
- Дата: 31 марта 2026 года
- Статус:
applied - Затронутые checkpoints:
CP-205
- Что изменилось:
- в Prisma и backend введена status-модель
Review: новые отзывы создаются вPENDING, а исторические существующие отзывы мигрированы вPUBLISHED GET /me/reviewsтеперь отдаётstatusиmoderationNote, поэтому buyer review cabinet может жить без скрытого допущения "любой отзыв сразу опубликован"GET /catalog/items/:slug/reviewsи rating/reviews aggregates в catalog/public seller profile теперь считают толькоPUBLISHED- опубликован admin review moderation surface:
GET /admin/moderation/reviews,GET /admin/moderation/reviews/:id,PATCH /admin/moderation/reviews/:id ReviewStatusуже включаетPENDING_MODERATIONкак следующий шаг для complaint-driven moderation, но seller complaint/reply flow остаётся отдельным follow-up пакетом
- в Prisma и backend введена status-модель
- Документы:
OPS-2026-03-30-09 — Runner cache и hostexecutor workspace вынесены с root в /tmp
- Дата: 30 марта 2026 года
- Статус:
applied - Затронутые checkpoints:
CP-007
- Что изменилось:
qadam-core-runner.serviceтеперь выставляетXDG_CACHE_HOME=/tmp/act_runner-cacheиTMPDIR=/tmp/act_runner-tmp/opt/act_runner/.cacheпереведён в symlink на/tmp/act_runner-cache- очищены старые root-based runner caches и root pnpm store, из-за которых
Quality Gateпадал наENOSPCприprisma generate - корневой раздел перестал быть основным местом для runner workspace и Prisma engine cache
- Документы:
CORE-2026-03-30-08 — Admin operational surface доведён до рабочего контура
- Дата: 30 марта 2026 года
- Статус:
applied - Затронутые checkpoints:
CP-203
- Что изменилось:
- в backend добавлен
GET /admin/sellersс фильтрамиsearch,status,sellerType,page,limit - admin seller summary теперь отдаёт
displayName, contact fields,telegramConnectedи item counters (totalItems,pendingItems,activeItems), чтобы status-management не держался на ручном знанииsellerId PATCH /admin/sellers/:sellerId/statusподтверждён runtime smoke-сценарием на временном seller-аккаунтеJwtAuthGuardперестал маскироватьACCOUNT_UNDER_REVIEW / ACCOUNT_BLOCKEDпод genericInvalid or expired token, поэтому seller-facing protected routes теперь честно отражают account state после admin status change
- в backend добавлен
- Документы:
CORE-2026-03-30-07 — Seller item moderation flow переведён на явную status-модель
- Дата: 30 марта 2026 года
- Статус:
applied - Затронутые checkpoints:
CP-202
- Что изменилось:
- item lifecycle на backend переведён на явный
DRAFT -> PENDING -> ACTIVE/REJECTED - добавлен endpoint
POST /seller/items/:id/withdraw, чтобы seller мог вернуть pending-айтем обратно в draft перед редактированием - seller item responses и admin moderation responses теперь публикуют seller-visible moderation feedback через
latestModerationRecordиmoderationHistory - admin approve/reject больше не принимают решение по non-pending item и режут повторную модерацию как явный status conflict
- item lifecycle на backend переведён на явный
- Документы:
DOCS-2026-03-30-06 — Frontend remediation backlog вынесен в отдельный канонический документ
- Дата: 30 марта 2026 года
- Статус:
applied - Затронутые checkpoints:
CP-103
- Что изменилось:
- текущая краснота
qadam-webразложена на отдельные remediation-пакеты вместо неявного статусаfrontend ещё не синхронизирован - contract drift, response-shape drift и tooling/type hygiene разделены по приоритетам
P0/P1/P2 - execution checkpoints и roadmap теперь ссылаются на отдельный frontend remediation backlog как на рабочий operational слой для frontend-команды
- текущая краснота
- Документы:
OPS-2026-03-30-03 — На roadmap-портале добавлен frontend feedback loop
- Дата: 30 марта 2026 года
- Статус:
applied - Затронутые checkpoints:
- без изменения checkpoint status
- Что изменилось:
- на
qadam-roadmap.2fab.appпоявился отдельный блокЧто сейчас должна сделать frontend-команда, который автоматически собирается изdocs/frontend/frontend-change-log.md - для frontend-impact пакетов со статусом
ready_for_frontendпортал теперь показывает обратную связьВ работе,Сделано,Игнорировать - note-only записи теперь можно явно помечать строкой
Требуется действие frontend: нет, чтобы на портале не появлялись кнопки подтверждения - обратная связь frontend сохраняется отдельно от канонического markdown-слоя как operational overlay, а не переписывает backend changelog
- на
- Документы:
DOCS-2026-03-30-05 — Русский язык commit message зафиксирован как обязательное правило
- Дата: 30 марта 2026 года
- Статус:
applied - Затронутые checkpoints:
- без изменения checkpoint status
- Что изменилось:
- в
change package standardзакреплено требование писать commit message и squash merge message на русском языке - инженерные принципы синхронизированы с этим правилом как с обязательной частью change management
- внутренняя rule-card по Git/CI обновлена на русскоязычные примеры commit messages
- PR template теперь явно напоминает о русском commit message для merge
- в
qadam-coreдобавлен локальный шаблон.gitmessage.txtдля единообразной подготовки commit message
- в
- Документы:
CORE-2026-03-30-04 — Product media переведены на S3-compatible object storage
- Дата: 30 марта 2026 года
- Статус:
applied - Затронутые checkpoints:
CP-304
- Что изменилось:
- в backend добавлен storage adapter
local | s3дляPOST /api/v1/upload/imageна базе S3-compatible driver - upload tests покрывают и локальный driver, и S3-compatible upload path
- env validation и
.env.exampleрасширены под object storage runtime - upload contract формализован как
{ url: string }, гдеurlявляется готовым публичным URL, а не обязательно локальным/uploads/images/... - production runtime
qadam-apiпереведён наOBJECT_STORAGE_DRIVER=s3сDigitalOcean Spaces - для Spaces-контура добавлен
S3_OBJECT_ACL=public-read, чтобы новые объекты сразу были доступны по публичному URL - живой smoke upload подтвердил
200 OKпо публичному object URL и успешное удаление тестового объекта
- в backend добавлен storage adapter
- Документы:
DOCS-2026-03-30-03 — S3/object storage scope нормализован в roadmap и env-модели
- Дата: 30 марта 2026 года
- Статус:
applied - Затронутые checkpoints:
CP-304
- Что изменилось:
- в roadmap зафиксирован отдельный пакет перехода product media на S3-совместимое object storage
- в execution checkpoints добавлен
CP-304как отдельный delivery-пакет - текущее состояние проекта уточнено: product uploads должны уходить в object storage, а roadmap storage остаётся отдельным локальным контуром
- в environment matrix и docker migration plan зафиксировано правило: S3/object storage credentials не попадают в Dockerfile и поставляются только через runtime env/secrets
- Документы:
OPS-2026-03-30-02 — Repo-side CI quality gate и PR review/security baseline
- Дата: 30 марта 2026 года
- Статус:
applied - Затронутые checkpoints:
CP-007
- Что изменилось:
- в репозиторий добавлен Gitea workflow
.gitea/workflows/quality-gate.ymlдляcheck-types,test,build,export:openapi, проверки committed OpenAPI artifact иcheck:docs - добавлен
.gitea/PULL_REQUEST_TEMPLATE.mdкак обязательный PR review/security checklist - governance и internal CI rules синхронизированы с repo-side quality gate
- на сервере поднят
act_runnerкакsystemd-сервисqadam-core-runner - runner
qadam-core-runner-01зарегистрирован вeldar/qadam-coreи первый workflow runQuality Gateзавершился в Gitea со статусомsuccess - workflow очищен от
setup-nodecache-save, чтобы не плодить non-fatal ошибки artifact cache на ограниченном host disk CP-007переведён вcompleted
- в репозиторий добавлен Gitea workflow
- Документы:
CORE-2026-03-30-03 — OpenAPI response schemas для seller items и admin, завершение CP-104
- Дата: 30 марта 2026 года
- Статус:
applied - Затронутые checkpoints:
CP-104
- Что изменилось:
- backend начал публиковать response
contentдляseller/itemsdashboard flow,admin/stats,admin/leadsи moderation endpoints openapi.jsonпересобран, а активный frontend-значимый backlog response gaps сокращён до0CP-104переведён вcompleted- frontend-команда получила финальный handoff-пакет по seller/admin contract slice
- backend начал публиковать response
- Документы:
CORE-2026-03-30-02 — OpenAPI response schemas для auth auxiliary, staff и reference
- Дата: 30 марта 2026 года
- Статус:
applied - Затронутые checkpoints:
CP-104
- Что изменилось:
- backend начал публиковать response
contentдляforgot-password,verify-reset-code,reset-passwordиadd-buyer-role - backend начал публиковать response schemas для
seller/staff,catalog/subjects,catalog/locationsи публичного/subjects openapi.jsonпересобран, а active backlogCP-104сократился с30до13endpoint'ов- frontend-команда получила отдельный handoff-пакет на этот contract slice
- backend начал публиковать response
- Документы:
CORE-2026-03-30-01 — Backend quality gate stabilization
- Дата: 30 марта 2026 года
- Статус:
applied - Затронутые checkpoints:
CP-006
- Что изменилось:
jwt-auth.guard.spec.tsсинхронизирован с актуальной async guard-логикой иAuthServiceopenapi/schemas.spec.tsсинхронизирован с текущимcurrent userschema contractpnpm -C /data/qadam-core testснова проходит полностьюpnpm -C /data/qadam-core check-typesпроходит без ошибок
- Документы:
DOCS-2026-03-30-02 — Roadmap и execution checkpoints приведены к одному уровню детализации
- Дата: 30 марта 2026 года
- Статус:
applied - Затронутые checkpoints:
CP-006CP-205CP-206
- Что изменилось:
- из roadmap убрано дублирование frontend adoption пакета между
Sprint 1иSprint 3 - backend test и quality gate stabilization вынесен в отдельный
CP-006вместо ложного ощущения, что тема уже полностью закрыта ReviewsиPublic seller profile / SEOполучили собственные MVP checkpoints- execution board теперь явно фиксирует свою границу детализации относительно стратегических фаз
C-D-E
- из roadmap убрано дублирование frontend adoption пакета между
- Документы:
DOCS-2026-03-30-01 — OpenAPI gaps применены к roadmap и checkpoints
- Дата: 30 марта 2026 года
- Статус:
applied - Затронутые checkpoints:
CP-103CP-104
- Что изменилось:
openapi-gapsнормализован как канонический working reference по активному backlog из30frontend-значимых endpoint'ов- buyer/seller profile response schemas выведены из активного gap backlog как уже закрытые
- roadmap теперь явно относит remaining OpenAPI work к
Auth auxiliary,Staff,Reference data,Seller Items,Admin DashboardиAdmin Moderation - execution checkpoints уточнены:
CP-103больше не считает profile coverage blocker'ом, аCP-104ведёт оставшийся response-schema backlog
- Документы:
DOCS-2026-03-29-01 — Документационный baseline соответствия
- Дата: 29 марта 2026 года
- Статус:
applied - Затронутые checkpoints:
CP-004CP-005
- Что изменилось:
- добавлены runbook-документы
backup/restore,incident response,environment matrix,post-deploy checklist - добавлены
ownership model,change package standard,glossary,api conventions - введены отдельные
execution checkpointsиproject change log - добавлен исполнимый
docs quality gate
- добавлены runbook-документы
- Документы:
- Follow-up:
- использовать
execution-checkpoints.mdкак operational board - вести этот changelog для всех следующих пакетов
- использовать
CORE-2026-03-28-01 — Registration API и профильные контракты
- Дата: 28 марта 2026 года
- Статус:
applied - Затронутые checkpoints:
CP-102
- Что изменилось:
- добавлены новые registration endpoints buyer/seller
- добавлены password reset flows
- buyer/seller profile contracts приведены к каноническому виду
- добавлены
subjects, upload endpoint и admin seller status management
- Документы:
OPS-2026-03-28-01 — Security hardening и runtime isolation
- Дата: 28 марта 2026 года
- Статус:
applied - Затронутые checkpoints:
CP-001CP-002
- Что изменилось:
- roadmap-портал изолирован на отдельном runtime
- API переведён на loopback-only bind
- refresh token consume сделан атомарным
- primary host больше не обслуживает
/roadmap
- Документы:
CORE-2026-03-27-01 — OpenAPI и frontend handoff baseline
- Дата: 27 марта 2026 года
- Статус:
applied - Затронутые checkpoints:
CP-101
- Что изменилось:
- поднят Swagger/OpenAPI runtime
- зафиксирован versioned artifact
- введены frontend handoff и frontend change log
- Документы:
OPS-2026-03-27-01 — Split-репозитории и production cutover
- Дата: 27 марта 2026 года
- Статус:
applied - Затронутые checkpoints:
CP-001
- Что изменилось:
- созданы и опубликованы
qadam-coreиqadam-web - production переведён с legacy checkout на split-репозитории
qadam-roadmapчитает документы изqadam-core
- созданы и опубликованы
- Документы: