test(portal): harden api contract validation
This commit is contained in:
+10
-3
@@ -12,6 +12,7 @@ DPD нужен для безопасной эволюции интерфейса
|
||||
- `/dpd/` работает как полный mirror текущего портала;
|
||||
- будущий React/Tauri UI сможет использовать те же API-контракты;
|
||||
- новые UI-решения проверяются без cutover и без дублирования бизнес-логики.
|
||||
- будущий UI не парсит HTML текущего портала как источник данных.
|
||||
|
||||
DPD проксирует:
|
||||
|
||||
@@ -77,9 +78,15 @@ detmir-dpd-portal \
|
||||
- `/dpd/api/contracts/openapi.json`;
|
||||
- `/dpd/api/contracts/typescript.d.ts`.
|
||||
|
||||
Правило совместимости: изменения API должны быть additive. Клиенты React/Tauri
|
||||
обязаны игнорировать неизвестные поля и корректно обрабатывать отсутствующие
|
||||
optional-поля.
|
||||
Правила совместимости:
|
||||
|
||||
- изменения API должны быть additive;
|
||||
- клиенты React/Tauri обязаны игнорировать неизвестные поля;
|
||||
- optional-поля могут отсутствовать;
|
||||
- `null` не должен ломать UI;
|
||||
- breaking changes требуют version bump контракта и отдельного architecture
|
||||
decision;
|
||||
- будущий React/Tauri UI не должен парсить HTML текущего портала.
|
||||
|
||||
## Проверка симметрии
|
||||
|
||||
|
||||
Reference in New Issue
Block a user