56 lines
2.3 KiB
Markdown
56 lines
2.3 KiB
Markdown
# Архитектурный baseline UI AWatch-rus
|
|
|
|
Дата фиксации: 2026-06-05
|
|
|
|
## Baseline
|
|
|
|
```text
|
|
Backend/API: Rust
|
|
Agent: Rust
|
|
Current Portal: Rust server-rendered HTML + HTMX
|
|
Future Enterprise UI: React + TypeScript
|
|
Future Desktop Forensics: Tauri + React + Rust core
|
|
Dioxus: out of scope / не рассматривается
|
|
```
|
|
|
|
## Правила
|
|
|
|
- Текущий HTML/HTMX портал остаётся основным pilot/production интерфейсом.
|
|
- JSON API является контрактным слоем для будущих UI.
|
|
- Бизнес-логика не должна зависеть от HTML.
|
|
- Будущий React/Tauri UI не должен ломать текущий портал.
|
|
- Agent и backend остаются Rust-first.
|
|
- Новые UI-фреймворки не добавлять без отдельного architecture decision.
|
|
- Dioxus не добавлять и не рассматривать.
|
|
- Будущий React/Tauri UI не должен парсить HTML текущего портала как источник
|
|
данных.
|
|
|
|
## Практическое следствие
|
|
|
|
Развитие интерфейса выполняется в таком порядке:
|
|
|
|
1. Укрепить текущий Rust web portal.
|
|
2. Зафиксировать стабильные JSON API-контракты.
|
|
3. Поддерживать DPD `/dpd/` как параллельный mirror для проверки совместимости.
|
|
4. Готовить будущий React/Tauri UI только поверх опубликованных контрактов.
|
|
5. Любые breaking changes проводить только через version bump контракта и
|
|
отдельное architecture decision.
|
|
|
|
## Контрактный слой
|
|
|
|
Основные endpoints:
|
|
|
|
- `/api/contracts`;
|
|
- `/api/contracts/openapi.json`;
|
|
- `/api/contracts/typescript.d.ts`.
|
|
|
|
DPD mirror endpoints:
|
|
|
|
- `/dpd/api/contracts`;
|
|
- `/dpd/api/contracts/openapi.json`;
|
|
- `/dpd/api/contracts/typescript.d.ts`.
|
|
|
|
Правило совместимости: изменения API должны быть additive. Клиенты обязаны
|
|
игнорировать неизвестные поля, корректно обрабатывать отсутствующие optional
|
|
поля и не падать на `null`.
|