docs: ретро-ревью pass-2 остаточные (data-model/plugin-sdk/hardware/C)
- data-model: структура DTC-кода исправлена (буква + 2-битная категория + 3 hex, не «4 hex»; P0/P2 generic, P1/P3000-33FF производитель); module_voltage путь → Vehicle.OBD.ControlModuleVoltage (был неверный LowVoltageBattery) - plugin-sdk: пример id → dev.example.* (ru.shturman.* зарезервирован); i18n строк манифеста (per-locale, ru обязателен); ui_screens capability + гейт RegisterScreen - hardware: камера «фаза 2» → v2; требования к MCU-копилоту (обновляемость прошивки, fail-safe при его отказе, позиция в цепочке доверия) - tech-stack: карты «фаза 2» → v4 (нормализация фазовой номенклатуры) - C-shell: день/ночь v0 = время, GPS-восход v1 (был конфликт фаз); ui_screens-гейтинг Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -23,7 +23,7 @@
|
||||
|
||||
```yaml
|
||||
plugin:
|
||||
id: ru.shturman.plugin.fuel-tracker # reverse-DNS, уникальный
|
||||
id: dev.example.fuel-tracker # reverse-DNS своего домена; ru.shturman.* зарезервирован за first-party (security-privacy §5)
|
||||
name: "Учёт расхода"
|
||||
version: 0.1.0 # semver
|
||||
description: "Пробег и средний расход"
|
||||
@@ -36,6 +36,7 @@ plugin:
|
||||
- "сколько я проехал"
|
||||
- "средний расход"
|
||||
ui_tiles: 1
|
||||
ui_screens: 1
|
||||
storage: true
|
||||
# network: { hosts: ["api.example.ru"] } # опц.: host-allowlist (см. §3)
|
||||
|
||||
@@ -44,7 +45,7 @@ plugin:
|
||||
- id: consumption
|
||||
title: "Расход"
|
||||
intents:
|
||||
handler: /ru/shturman/plugin/fuel_tracker/intents # путь IntentHandler
|
||||
handler: /dev/example/fuel_tracker/intents # путь IntentHandler
|
||||
```
|
||||
|
||||
**Источник истины и согласованность:** `extension_points.tiles` — авторитетный список
|
||||
@@ -52,6 +53,11 @@ plugin:
|
||||
`len(tiles) ≤ ui_tiles`, иначе install отклоняется `InvalidArgument`). Все фразы
|
||||
`assistant_intents` маршрутизируются в единственный `extension_points.intents.handler`.
|
||||
|
||||
**i18n (принцип #10):** пользовательские строки (`name`/`description`/`tiles[].title`/
|
||||
`assistant_intents`) — локализуемы: per-locale секции (`assistant_intents: { ru: […], en: […] }`)
|
||||
или ключи + `locales/<lang>.yaml`. **`ru` обязателен** (дефолт + фолбэк); матчинг интентов — по
|
||||
активной локали (d-assistant §6). На старте заполняем только `ru` (i18n-ready, не i18n-now).
|
||||
|
||||
## 3. Capability-модель
|
||||
|
||||
- Таксономия и **гейтинг по каналам** — в [security-privacy.md](security-privacy.md) §3–4
|
||||
@@ -68,7 +74,7 @@ plugin:
|
||||
|
||||
### 4.1 UI — тайлы и экраны (слот-модель, решение №6)
|
||||
- `Shell.RegisterTile(decl)` — **декларативный** элемент (рендерит shell в едином стиле).
|
||||
- `Shell.RegisterScreen(decl | surface)` — декларативный экран **или** Wayland-поверхность (богатый ап рисует сам).
|
||||
- `Shell.RegisterScreen(decl) → slot_token` (требует capability `ui_screens`) — декларативный экран **или** Wayland-поверхность (slot-token + slot-протокол, c-shell §4).
|
||||
- Декларативный словарь (констрейнт): `icon`, `title`, `value`, `state`, привязки к
|
||||
данным, `action`. Сложнее этого → поверхность. *(🟡 глубину декларативного DSL
|
||||
уточним при домене C/Shell.)*
|
||||
@@ -166,3 +172,5 @@ plugin:
|
||||
| Интенты | `HandleIntent` с обязательным таймаутом; крэш/таймаут → деградированный ответ, не виснет | 2026-06-16 |
|
||||
| Манифест-авторитет | `extension_points.tiles` авторитетны; `ui_tiles` — квота (`len ≤ N`) | 2026-06-16 |
|
||||
| Хранилище | квота на `/data/apps/<id>` (ENOSPC плагину); remove чистит; миграция — плагин | 2026-06-16 |
|
||||
| i18n | строки манифеста локализуемы (per-locale/ключи); `ru` обязателен (i18n-ready) | 2026-06-16 |
|
||||
| UI-capabilities | `ui_tiles` (квота тайлов) + `ui_screens` (гейт `RegisterScreen`) | 2026-06-16 |
|
||||
|
||||
Reference in New Issue
Block a user