Активация раздела «Ремонт» в Premium Мехник PWA: лента + создание ремонта, фоновая сверка прав (У35), различающие сообщения при отказе входа (У36). Backend для всех новых API в taxi-dashboard (отдельный commit eccaebe). Тулится на `ENABLE_STO_MODULE=true` в backend env. PR-4: Login + useMeSync. - src/api/me.ts: тип Me расширен (is_admin, can_login_pwa, departments, support — для У35/У36). - src/hooks/useMeSync.ts: фоновая сверка `/me` раз в 5 мин (У35). При 403 NO_PWA_ACCESS — сброс токена, revocation info в sessionStorage. IndexedDB-черновики не трогаются. - src/pages/Login.tsx: после успешного login делает getMe() и при 403 показывает баннер «У вас нет доступа» с кликабельным TG/телефонным контактом (У36). Баннер также рендерится при revocation после фоновой сверки. - src/App.tsx: useMeSync() подключён в корне. PR-5: лента ремонтов. - src/pages/ActionMenu.tsx: снят `comingSoon` с тайла «Ремонт». - src/pages/repairs/RepairsFeedPage.tsx: лента с infinite scroll (через IntersectionObserver), плейсхолдер «В парке пока нет ремонтов» (У41), ellipsis-имена работ + плюрализация «+N работ» (У40). - src/hooks/useRepairsFeed.ts: useInfiniteQuery + stale-while-revalidate + visibility refresh (У38). - src/lib/timeFormat.ts: формат «Сегодня / Вчера / 23 мая» (У39). - src/api/repairsFeed.ts: GET /api/v1/mechanic/repairs клиент. PR-7: создание ремонта (online-only). - src/api/repairsCreate.ts: searchCars, getCarContext, searchWorks, suggestParts, presignPhoto + uploadPhotoToTmp (PUT с правильным Content-Type), createRepair (POST с Idempotency-Key). - src/pages/repairs/CarSelectPage.tsx: поиск машины с debounce 200мс. - src/pages/repairs/CreateRepairPage.tsx: карточка создания ремонта с 5 inline-блоками (Шапка / Пробег / Фото / Работы / Запчасти / Замена масла). UUID v4 как Idempotency-Key. Карандашик-разблокировка цены с обязательным комментарием (У19). Мягкая подписка пробега масла на шапочный (У24). Дефолт next_in_km=10000 (У25). Полноэкранная модалка поиска работ. Routes: /repairs, /repairs/new, /repairs/new/:carId. Co-Authored-By: claude-flow <ruv@ruv.net>
mechanic-pwa
Собственное приложение для сотрудников-механиков PremiumPark — замена вендорского приложения «Механик» (NaughtySoft, com.naughtysoft.ttc). Все данные осмотров уходят в собственную PostgreSQL внутри Premium CRM, фото — в собственный MinIO. Никакого вендора и его 1С на критическом пути.
Контекст
Сейчас механики PremiumPark делают осмотры машин через приложение вендора NaughtySoft, поставляемое на условиях абонентки. Подрядчик заморозил разработку, парк хочет независимости. После разведки вендорского стека (см. recon/findings/01-static-analysis.md) принято решение строить собственное PWA — оно охватывает все ключевые сценарии вендора (фото, метки повреждений, история, дифф «было/стало») и хостится в нашей экосистеме.
Объём проекта
Только приложение механика. Это первый sub-project в umbrella-плане замены вендорских приложений. Будущие sub-projects (не в этом репозитории):
| Sub-project | Описание | Статус |
|---|---|---|
| mechanic-pwa (этот репо) | PWA для сотрудников-механиков парка | в работе |
| driver-app | Приложение для водителей — балансы, штрафы, платежи, обращения | отложено, будем после mechanic |
| vendor-bridge | Импорт исторических осмотров от вендора | отложено |
Структура
mechanic-pwa/ ← корень git репо
├── docs/superpowers/
│ ├── specs/
│ │ ├── 2026-05-11-driver-app-recon-design.md ← разведка обоих вендорских приложений
│ │ └── 2026-05-16-premium-mechanic-design.md ← дизайн нашего mechanic-приложения
│ └── plans/
│ └── 2026-05-16-premium-mechanic-phase1.md ← план реализации Phase 1 MVP
├── mechanic-pwa/
│ ├── frontend/ ← React+Vite PWA (создаётся в Phase G)
│ └── assets/vendor-reference/ ← извлечённые из APK иконки вендора
├── recon/
│ ├── findings/ ← отчёт разведки (карта API, диаграммы)
│ ├── scripts/ ← mitmproxy фильтры, frida-скрипты, утилиты
│ ├── artifacts/ ← APK, декомпил, mitm dumps (не в git, .gitignore)
│ └── patched/ ← патченые APK для перехвата трафика (не в git)
├── ops/
│ ├── Caddyfile.fragment ← конфигурация Caddy для mechanic.pptaxi.ru
│ └── minio-cors.json ← CORS policy для bucket pp-inspections
└── README.md
Внимание: backend-модуль
mechanic(Phase B-F плана) живёт не в этом репо, а в виде веткиfeat/mechanic-mvpвнутри репозиторияpremium-crm. Этот репо — только frontend + специфика, документация и ops.
Текущая фаза
Phase 1 MVP — см. docs/superpowers/plans/2026-05-16-premium-mechanic-phase1.md. 10 phases (A-J), ~40 задач, 3-4 недели разработки.
Деплой
Production URL: https://mechanic.pptaxi.ru (поддомен от 100.64.0.12, обслуживается Caddy)
Бэкенд: модуль mechanic в FastAPI Premium CRM (тот же VDS)
Хранилище фото: MinIO pp-inspections (тот же VDS)