проектdocs/audits/plans-audit-2026-03-28.md
Аудит исторических implementation plans
Обновлён 1 апр. 2026 г., 12:41 · 0 комментариев
Аудит исторических implementation plans
Паспорт документа
- Статус документа: historical snapshot
- Актуально на: 28 марта 2026 года
- Владелец: backend/platform-команда
- Пересмотр: при следующем цикле аудита, security review или ревизии противоречий в документации и спеках
- Область применения: audit-слой проекта: снимки состояния, реестры расхождений и результаты ревизий
- Связанные документы:
Цель документа
Этот документ фиксирует судьбу исторических implementation plans из каталога plans/. Они больше не являются источником истины, но содержат полезный инженерный контекст. После обработки эти файлы перенесены в архив plans/archived/2026-03-28-integrated/. Задача этого audit:
- показать, какие планы уже реализованы;
- отделить реализованное от частично завершённого и устаревшего;
- указать, в каких канонических документах теперь живёт актуальная правда;
- не допустить параллельного существования старых планов и текущей документации как двух равноправных слоёв знания.
Краткий вывод
Содержимое plans/ в целом не потеряно и не «лежит мёртвым грузом». По состоянию на сегодня:
- backend-планы по логированию, Axiom и JWT token delivery реализованы;
- web-планы по
src/app, searchParams-фильтрам, infinite scroll, SVGR и базовому auth-layer реализованы существенно, но часть из них не доведена до полностью чистого post-split состояния; - главным незавершённым хвостом остаются не сами идеи из
plans/, а остаточный legacy-слой вqadam-web: дублирующиесяcomponents/lib, прямыеfetch-вызовы в отдельных срезах и UI-дрифт относительно нового registration API.
Практическое правило:
plans/считать архивом инженерных пакетов;- актуальное состояние брать из
current-state.md,roadmap.md,frontend-separate-repo-plan.md,analytics-observability.md,api-routes.md,docs/Agents/product-roadmap.mdи OpenAPI artifact.
Матрица по каждому плану
| Архивный план | Текущий статус | Что реально произошло | Где теперь источник истины |
|---|---|---|---|
2026-03-14-pino-logger.md | Реализован | API переведён на nestjs-pino, LoggerModule.forRoot(...), DI через PinoLogger, фильтры и сервисы уже используют единый structured logging | analytics-observability.md, current-state.md |
2026-03-14-axiom-transport.md | Реализован | В production работает optional @axiomhq/pino transport с graceful degradation при отсутствии AXIOM_TOKEN / AXIOM_DATASET | analytics-observability.md, current-state.md |
2026-03-16-jwt-token-delivery-refactor.md | Реализован и усилен | Есть TokenDeliveryService, dual delivery для web/mobile, cookie + bearer support в JwtAuthGuard, body refresh для mobile; поверх исходного плана добавлен security-hardening: атомарный single-use consume refresh token через Redis | api-routes.md, current-state.md, security-review.md |
2026-03-16-web-fsd-migration.md | Реализован частично | Основной runtime уже живёт в src/app и FSD-подобных слоях src/shared, src/entities, src/features, src/widgets, src/views; при этом в qadam-web всё ещё остаются исторические components, lib, src/components, src/lib и конкурирующие UI-слои | frontend-separate-repo-plan.md, current-state.md, roadmap.md |
2026-03-17-web-dal-layer.md | Реализован частично | Основа DAL уже есть: apiClient, serverFetch, key factories, React Query queries/mutations, SSR-prefetch, generated OpenAPI contract. Но часть admin/reference-flow всё ещё использует прямые fetch, а legacy api.ts/дублирующие слои пока не вычищены полностью | frontend-separate-repo-plan.md, frontend-handoff.md, roadmap.md |
2026-03-18-searchparams-filters.md | Реализован | Публичный каталог уже инициализируется из searchParams, фильтры живут в CatalogFilterProvider, URL синхронизируется без hydration drift, Zustand-store больше не является активным runtime-источником истины для каталога | current-state.md, docs/Agents/product-roadmap.md, docs/Agents/knowledge-base.md |
2026-03-18-infinite-scroll-catalog.md | Реализован | В каталоге уже используется useInfiniteQuery, SSR prefetchInfiniteQuery, IntersectionObserver и накопление страниц без кнопки "Загрузить ещё" | current-state.md, docs/Agents/product-roadmap.md, docs/Agents/specs/2026-03-24-mvp-spec-05-catalog-search-map.md |
2026-03-18-svg-icons.md | Реализован | В qadam-web настроен @svgr/webpack, есть svg.d.ts, иконки лежат в apps/web/src/shared/icons и импортируются как React components | frontend-separate-repo-plan.md, current-state.md |
2026-03-18-web-auth.md | Реализован частично | Есть proxy.ts, SSR/auth gating, useCurrentUser(), auth mutations и post-login redirects. Но исходный план частично устарел: frontend всё ещё не синхронизирован до конца с новым registration API (/auth/register/buyer, /auth/register/seller) и buyer profile flow | frontend-separate-repo-plan.md, frontend-handoff.md, roadmap.md |
Что уже окончательно перенесено в канонический слой
Backend / platform
- structured logging и Axiom transport;
- dual JWT delivery и текущая cookie/bearer модель;
- security-hardening refresh flow;
- observability и EventLog-контур.
Web / delivery
- переход на
src/appи FSD-подобную структуру как основной runtime; - searchParams-based catalog filters;
- infinite scroll каталога;
- SVGR-пайплайн;
- базовый auth-layer для
qadam-web; - React Query + SSR-prefetch + contract-driven API layer как рабочая основа отдельного frontend-репозитория.
Что остаётся незавершённым наследием этих планов
- Полная вычистка legacy-слоя из
qadam-web:- дублирующиеся
components/src/components; - дублирующиеся
lib/src/lib; - остаточные прямые
fetch-вызовы вместо общего DAL/contract layer.
- дублирующиеся
- Полная синхронизация web-UI с новым registration API и buyer profile flow.
- Web smoke/e2e-контур, которого не было в исходных планах как обязательного quality gate, но который теперь обязателен по инженерным принципам.
- Окончательное доведение post-split operating model до image-based/docker delivery.
Как использовать plans/ дальше
- Не писать новые канонические планы в
plans/, если они претендуют на роль источника истины. - Для новых решений использовать
docs/иspecs/. - Сохранять
plans/только как исторический архив инженерных пакетов и ссылаться на этот audit-документ. - Если старый план реализован полностью и больше не несёт полезного контекста, его можно удалить только после того, как выводы уже перенесены в канонический слой.