# Open Items

Последнее обновление: `2026-05-05`

## Deferred

| Module | Item | Why Deferred | What Unlocks It |
| --- | --- | --- | --- |
| Public Site | Request tracking route on live bent.ge | Backend уже отдает canonical `/request/{token}` и `/track/{bookingToken}`, но live `bent.ge` frontend для request portal пока не развернул path-based route, поэтому canonical request deep-link ещё не открыт на сайте | Nuxt route + live deploy для request tracker page на `bent.ge` |
| Public Site | keepz.me live redirect enablement | Backend уже отдает `keepz`-shaped `checkout` block в `/track/{token}`, скрывает payment choice на checkout, гейтит активацию по approval и создает `keepz` session response shape, но live redirect template пока не задан и `public_payment_keepz_enabled=0`, поэтому approved booking пока не открывает реальный keepz redirect | Включить live `public_payment_keepz_enabled=1` и задать реальный `public_payment_keepz_checkout_url_template` |
| Public Site | Search/catalog image coverage for non-Range vehicles | Live `public-catalog` сейчас отдает `imageUrl=null` и пустой `availableVehicles[].imageUrl` почти для всех vehicle groups, поэтому search/listing/compare могут честно показать media только у трех Range Rover, а остальным нужен empty-media state | Заполнить `vehicles.image_url` или representative media mapping для всех публичных групп, чтобы `public-catalog` и snapshot выдавали реальные card images |
| Public Site | Search promo public auth routes | Snapshot уже отдает `vehiclesPage.structuredContent.promo.primaryHref=/login` и `secondaryHref=/register`, но сам public Nuxt не развернул эти auth routes, поэтому `/rent` промо-блок пока остается disabled через safe-resolver, чтобы не вести в 404 | Либо развернуть public `/login` и `/register`, либо отдать другие реальные CTA destinations для auth / hidden discounts flow |
| Public Site | Home social and app-store links | Блок `Follow Us` и footer social links сохранены по верстке, но в snapshot до сих пор нет реальных social/app URLs, поэтому иконки и store buttons остаются декоративными | Отдать в home/site snapshot реальные `socialProfiles[].href` и `storeButtons[].href` для Facebook / Instagram / LinkedIn / Messenger / App Store / Google Play |
| Public Site | Locale-aware snapshot consumption on bent.ge frontend | Backend теперь уже экспортирует localized page/article/guide entities по `en/fr/es/ru/de/ka` с `contentKey`, locale-prefixed `path/publicSlug`, `localized[]` и `seo.hreflang`, а локальный generated snapshot уже пересинкан, но live `bent.ge` frontend ещё не везде читает новые locale-aware entities и местами остаётся на english-first happy-path | Обновить Nuxt content adapters/pages на live `bent.ge`, чтобы они брали locale-specific entities из нового snapshot и задеплоить фронт |
| Public Site | Vehicle public-localization editor in Hub | Backend уже получает универсальный `public_entity_localizations` слой для sellable vehicle combos и public export умеет читать локализованные `title/description/seo/slug_segment`, но в Hub пока нет отдельного UI для редактирования этих combo-level public translations без лазания в БД | Отдельный Hub screen/API для combo-level vehicle public localizations с publish/draft статусом и route slug editing |
| Public Site | Switch bent.ge vehicles adapters to split-export registry/detail format | Backend теперь пишет маленький `generated/site/vehicles/routes.*`, locale-scoped `vehicles/index/<locale>.*` и exact `vehicles/detail/<contentKey>/<locale>.*`, но current Nuxt content layer всё ещё импортирует legacy `vehicles/index` и `vehicles/by-slug`, поэтому giant compatibility blobs пока нельзя удалить без frontend migration | Перевести `app/content/vehicles.js`, offers/json-ld helpers и vehicle detail page на `vehicles/routes` + locale listing/detail files, затем убрать legacy monolith vehicle exports |
| Public Site | Offers detail snapshot and booking prefill contract | Frontend уже собран под `/offers/{slug}` и умеет открывать offer-bound booking form с prefill в `/rent` или `/rent/extras/{vehicleGroupId}`, но live snapshot пока отдает только `offersPage` и пустые `offerItems/offers`, поэтому detail flow нельзя реально прогнать | Экспортировать non-empty `offerItems[]` и `offers[]` с `path`, `presentation`, `bookingPrefill`, `recommendedVehicle` и `detailSections` по контракту в `public-site-offers-detail-contract.md` |
| Public Site | Home TopOffers tier marketing fields | Новый React redesign для home `TopOffers` содержит `pricing[]` по периодам, urgency/watching/timer, но current public snapshot для `featuredOffers` отдает только одну real daily price и без real urgency counters; frontend перенес визуал без fake counters и использует одну экспортированную цену во всех pricing slots | Отдать в public export для featured offers реальные `topOffers.pricing[]`, `urgencyLabel`, `validityCountdown`/или убрать countdown из контракта, если таймер не должен быть реальным |
| Public Site | Homepage weather warning hookup | Backend уже отдает public `/api/weather/forecast` с canonical risk payload по локации и датам, но homepage search flow ещё не вызывает этот endpoint и не показывает warning banner / AWD suggestion после выбора города и дат | Подключить lazy weather check в homepage search flow и вывести warning banner на основании `forecast.summary` |
| Content AI | Operator-controlled AI content manager run layer | База уже есть: Gemini/OpenAI provider switch, audit summary, `fill missing locale` и `create article draft`, но пока нет нормального run/step orchestration слоя с ручным запуском, custom tasks, управлением каждым шагом и повторным прогоном отдельного шага | Реализовать backend task из `docs/content-ai-manager-backend-task.md`: `content_ai_runs`, `content_ai_run_steps`, planner/executor services и control API внутри текущего content module |
| Clients | Manual client tags | В CRM сейчас теги вычисляются из статуса/профиля и не имеют отдельной модели или policy для ручного редактирования | Отдельная `client_tags` модель + UI policy для ручных тегов |
| Payments | Expense approval and payout actions | Expenses workspace уже умеет создавать claims с привязкой к брони и вложениями, но manager actions `approve / reject / mark paid` ещё не выведены в отдельный UI/API flow | Явный reimbursement workflow с approval actions, audit trail и payout entries |
| Communications | Email attachment file storage from IMAP | Полноценный IMAP inbox sync уже пишет inbound email в `communication_delivery_logs` и Smart Inbox, включая attachment metadata, но бинарные email attachments пока не сохраняются в file storage, чтобы не смешивать communication ingest с `documents` ownership без явного attachment workflow | Отдельный `communication_attachments` / document-link flow с file storage, preview/download policy и UI-slot в Smart Inbox |
| AI Operator | Expand booking pilot into cross-module operator actions | Сейчас AI operator уже умеет planning + confirm для `booking.create` и `booking.confirm`, но остальные доменные действия вроде `task.create`, `promo/discount actions`, `fleet actions`, `lead/request updates` и shared entity resolver layer ещё не вынесены в единый action catalog | Вынести остальные write-actions из controller-логики в domain services и подключить их в общий AI action catalog с audit/policy слоем |

## Next System Work

| Priority | Module | Current State | Next Step |
| --- | --- | --- | --- |
| P1 | Smart Inbox | Core workflow уже собран, но нужен финальный production pass по всем visible states и действиям | Полный QA проход по списку, workspace, offers, notes, message actions, merge/relink |
| P1 | Permissions | Права уже работают, но не было полного системного аудита после всех новых модулей и экранов | Пройти role matrix и проверить `view/create/update/delete/send` по всем разделам |
| P1 | Modal Flows | Основные модалки переведены в независимый режим, но не было финального сквозного регрессионного прохода по всем разделам | Проверить `open/edit/close/save` без навигации и без full rerender в `Bookings/Clients/Fleet/Leads/Tasks/Content/Payments/Locations/Reports/Settings/Timeline` |

## Production Cleanup

Крупных production cleanup-пунктов сейчас нет вне `Next System Work`.

## Rule

Все новые `later`-пункты фиксировать только сюда:

1. `Module`
2. `What exactly is missing`
3. `Why it is deferred`
4. `What unlocks the work`
