83ce37ef83
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
14 KiB
14 KiB
Роадмапа
Фазы реализации лестницей: каждая ступень — законченный, демонстрируемый артефакт. Порядок диктуется зависимостями из architecture.md и capability-catalog.md.
Как читать
- ID (
A01,D10, …) ссылаются на строки capability-catalog.md. Фазы там — источник; роадмапа их секвенирует и группирует в треки, не переопределяет. - Каждая фаза = ступень-демо, по шаблону: Цель/демо · Входит (ID по параллельным трекам) · Зависимости/порядок · Готово, когда · 🟡 гейты.
- Составные фазы каталога (
vN/vM) размещены по старту; завершение/доводка — пометкой в поздней фазе. - dev-environment проектируется рано (до v0-реализации) и идёт сквозным треком — не на критическом пути, но разблокирует каждую фазу.
- Учтены все 170 функций: 150 в v0–v4 + 20 «за горизонтом v4».
v0 — База + Shell · критпуть: образ/power-safe → UI
- Цель/демо: RK3588 стартует < 10 c в красивый Slint-лаунчер (день/ночь, крупные тайлы) и переживает отключение зажигания без повреждения eMMC. Демо: вкл/выкл в машине → мгновенный UI, без fsck-боли.
- Входит:
- Образ / ФС / boot (A):
A01 A02 A04 A05 A06 A07 A09 A10 A11 A12 A14 A15 A16 A17 - Power / lifecycle (B):
B01 B02 B03 B04 B05 B06 B07 B08 B09+ старт thermalB10 - Shell (C):
C01 C02 C03 C04 C05 C07 C09+ зародыш настроекC10 - Dev-enabling (F/J, параллельно):
F01 F02 F03 F04+ камера-симJ06
- Образ / ФС / boot (A):
- Зависимости/порядок: hardware HAL/BSP → образ
A→ powerB(graceful shutdown требует hold-up, hardware §3) → shellC(первый кадр Stage 1 поверх boot Stage 0). Power-safe — гейт демо. - Готово, когда: холодный boot < 10 c до интерактивного home · N циклов зажигания без
потери
/data· автопереключение день/ночь. - 🟡 гейты:
A01(Armbian/Debian vs Yocto),A02(f2fs vs ext4),B08/B09(MCU vs supercap-only — определяет архитектуру питания). Фундамент — закрыть в v0.
v1 — Ассистент онлайн + связь + аудио + Location · критпуть: ассистент-онлайн
- Цель/демо: «Штурман, …» → корректный устный RU-ответ через online-LLM; аудио-арбитр жив (TTS с ducking); статус сети в баре; громкость с руля; distraction по GPS-скорости. Демо: голосовой Q&A в машине.
- Входит:
- Ассистент (D):
D01 D02 D03 D04 D05 D06 D07 D08 D09 D11+ distractionD12 - Связь — core (G):
G01 G02 G03 - Аудио-плоскость — core (H):
H01 H02 H03 H04 H05 - Location / датчики (K):
K01 K02 K03 K04+ старт мультируль-ADCK05 - Shell-интеграция (C):
C11(PTT+лог) + старт distractionC12+ старт мультирульC13 - База-доводка (A/B):
A08(GPS-время)A13(thermal-тюнинг)B11(MCU firmware)B12(старт sleep/wake)B13(гейт wake-word)
- Ассистент (D):
- Зависимости/порядок:
G01(сеть) →D08(online-LLM);H01(аудио-плоскость) →D04(TTS);K01(Location) →C12/D12(distraction по GPS-скорости);B13↔D(гейт wake-word по lifecycle). Всё поверх v0-базы/shell. - Готово, когда: голосовой вопрос → устный RU-ответ при сети · «нет сети» graceful (
D11) · громкость с руля (K05) · distraction-режим по GPS-скорости. - 🟡 гейты:
B08/B09(если MCU не закрыт в v0 — гейтитB11/B12);K05(маппинг кнопок руля / калибровка ADC — per-BSP). Офлайн-LLM ещё НЕ здесь (→ v3).
v2 — Контекст машины (killer) + телефон + медиа + камера · критпуть: контекст машины
- Цель/демо: «Штурман, прочитай ошибки» / «что значит эта лампочка» → ассистент читает live-OBD + DTC и объясняет по-человечески (vehicle-context injection). Killer-демо. Плюс: hands-free звонки, локальная/BT-музыка с now-playing, задняя камера с парктроником.
- Входит:
- Vehicle-Data (E):
E01 E02 E03 E04 E05 E06+E07(pending/permanent) + старт расходE08 - Контекст-ассистент (D):
D10(vehicle-context injection) - Телефон (G):
G04 G05 G06 G07 G08 G09+ старт tetheringG10 - Медиа (H):
H06 H07 H08 H09 H10+ первый Wayland-surfaceC06(now-playing) - Камера (J):
J01 J02 J03 J04 J05+ Stage 0 boot-инфраA18 - Прочее: статус машины в баре
C08· CAN-кнопки руляK06· старт реверс-wakeB14· старт телеметрии (opt-in, выключена)L07
- Vehicle-Data (E):
- Зависимости/порядок:
E(CAN-транспорт)+data-model →D10(контекст), поверх v1-ассистента (D06/D08). BT-адаптерG04→H08(A2DP) иG05(HFP).A18(Stage 0) →J01(ранний путь камеры).C06(полный композитор) → первая поверхностьH07/J04. - Готово, когда: ассистент по голосу читает реальные DTC и объясняет · hands-free звонок (руль/тач) · локальный трек и BT-музыка с now-playing · задняя камера с парктроник-оверлеем и fail-safe «нет сигнала».
- 🟡 гейты:
E03(DTC-база: своя RU vs готовая),H06(декодер / AAC-патент — legal),J01(DRM-master handoff Stage 0→1).
v3 — Офлайн-фолбэк + Plugin API + companion · критпуть: офлайн + расширяемость
- Цель/демо: ассистент отвечает без сети (локальная модель); сторонний плагин (intent/tile) ставится в песочнице с ревью разрешений; companion-приложение на телефоне видит данные машины/поездки. Демо: офлайн + экосистема.
- Входит:
- Офлайн-ассистент (D):
D13(provider-switch + офлайн-фолбэк llama.cpp)D14(память водителя)D15(plugin-интенты) - Plugin host (F):
F05 F06 F07 F08 F09 F10+ старт подписиF11 - Связь — later (G):
G11(WiFi-hotspot)G12(SMS/MAP + чтение вслух) - Медиа-расширения (H):
H11(FM-радио)H12(стриминг)H13(интернет-радио)H14(media-source-плагины) - Companion (L):
L01 L02 L03 L04 L05+ старт уведомленийL06+ старт бэкапаL08 - Shell:
C14(UI управления разрешениями)
- Офлайн-ассистент (D):
- Зависимости/порядок:
F(lifecycle плагина) поверх App-Host + atomic-install (a-base §3);D15(plugin-интенты) →F+ plugin-sdk;L01(companion) →G(транспорт) + парингL02;C14(perm-UI) →F10(capability-review) + security-privacy. Офлайн-LLM поверх v1-пайплайна; companion читаетE(v2) / trip-плагин. - Готово, когда: сеть выключена → ассистент локально отвечает (
D13) · сторонний плагин ставится/песочница/ревью разрешений · телефон-companion синкает настройки/память/поездки (local-first). - 🟡 гейты:
D13(выбор офлайн-модели — бенч на железе),D14(схема памяти / consent),F11(схема подписи / keyring / ревокация),H11(FM-тюнер: аппаратно добавить vs отказаться — нет в hardware §4),L03(моб.стек: Flutter vs Rust-core+native),L06(push-транспорт: relay vs APNs/FCM vs локально).
v4 — Навигация + OTA + прод-образ + ретрофит · критпуть: первый «продукт»
- Цель/демо: офлайн-навигация OSM с голосовым turn-by-turn; флешируемый релиз-образ; OTA A/B с откатом; документированный ретрофит на одну реальную машину. Демо: первый продукт. («образ» здесь = флешируемый прод-релиз, отличать от bring-up/base-образа v0 — см. a-base-system §2.)
- Входит:
- Навигация (I):
I01 I02 I03 I04 I05 I06 I07 I08 I09 I10 I11 I12 I13+ nav-позиционированиеK09 - OTA / прод-образ / безопасность (A):
A03(флеш-образ RAUC)A19(OTA)A20(secure boot)A21(at-rest шифрование)A22(factory reset) - OTA-канал / облако (L):
L09 L10 L11 L12 L13 - Проекция (опционально):
G13(CarPlay/Android Auto — вне скоупа / плагин / неопр.)
- Навигация (I):
- Зависимости/порядок:
I(роутинг) → движок (🟡);I(карты) → хранилище + покрытие;I06(map-matching) →K(Location, v1);I05(turn-by-turn) → аудио (H §3) +D. OTA:A19(механизм/применение) ↔L09(канал/доставка);A20(secure boot) →A21(at-rest) → trust-anchor дляF11(подпись, v3). Nav поверхK/H/D(v1). - Готово, когда: маршрут офлайн с голосовым ведением в загруженном регионе · релиз-образ прошивается · OTA доставляет/применяет/откатывает (anti-rollback) · ретрофит на одну машину задокументирован (BSP / калибровка / гайд).
- 🟡 гейты:
I03(Valhalla vs OSRM),I01(карты + ODbL-атрибуция + размещение данных),G13(проекция — решить scope/legal).
Сквозные треки (не привязаны к одной фазе)
- Dev-environment + моки (проектируется до v0, параллельно всем фазам). Разблокирует
разработку без железа: fake-аудио/BT/камера/plugin-host (внесены) + хвост: L мок-облако/OTA
и I нав-сим (тест-регион/мок-маршрут). ID:
F02 F03 F04 J06+ доменные dev-симуляторы (G/H/I/L §«Dev-симулятор»). Не на критпути. - Security/privacy-гейтинг (растёт по фазам). Capability-модель (security-privacy §3)
включается с первого чувствительного ресурса:
audio_in(v1) →camera_in/location-consent (v2) → plugin-capability-review + perm-UIC14(v3) → secure-boot/at-rest/trust-anchor (v4). - Цепочка доверия OTA. Подпись плагинов
F11(v3) → secure bootA20+ signed OTAA19/L09(v4) образуют единую trust-цепочку с anti-rollback.
Критический путь (узким списком)
hardware/BSP → A(образ) → B(power-safe) → C(shell) ⟶ v0
→ G01(сеть) + H01(аудио) → D(ассистент) ⟶ v1
∟ K01(Location) → distraction (C12/D12) — параллельно
→ E(CAN read) → D10(контекст — killer) ⟶ v2
→ D13(офлайн-LLM) + F(Plugin API) ⟶ v3
→ I(навигация) + A19/L09(OTA) + ретрофит ⟶ v4
Параллельно (не на критпути): телефон/медиа/камера (v2-треки рядом с E), companion (v3),
dev-environment (сквозной).
За горизонтом v4 (later/ongoing)
Доразвитие из тех же доменов по мере спроса — не входит в лестницу v0–v4:
- База:
A23(мульти-BSP) ·A24(kernel/dtb-тюнинг — ongoing). - Shell/ассистент:
C15(мультидисплей / профили / виджеты) ·D16(barge-in). - Vehicle-Data:
E09(trip-производные — у плагина) ·E10(fuel-trim)E11(VIN)E12(DBC-сниффинг)E13(vendor-DTC)E14(лог поездок). - Экосистема/медиа:
F12(курируемый стор) ·H15(мульти-зона / EQ / A2DP-source). - Навигация:
I14(трафик TMC/RDS)I15(онлайн-трафик/поиск)I16(DR в тоннелях). - Камеры/датчики:
J07(0..N источников)J08(dashcam)J09(surround/360°) ·K07(IMU)K08(выделенные не-CAN датчики).