refactor: align frontend with FSD architecture
Some checks failed
CI/CD Pipeline / Quality Gate (push) Failing after 2m37s
CI/CD Pipeline / Build and Deploy Dev via Compose (push) Has been skipped

This commit is contained in:
Gleb Korotkiy
2026-06-22 12:33:23 +03:00
parent 3adad7dbbf
commit 67ec34d619
95 changed files with 7802 additions and 5053 deletions

View File

@@ -576,12 +576,12 @@ Query params:
Страница имеет четыре серверных состояния. Они отличаются составом данных, но используют один и тот же
endpoint `/api/v1/competence-map/analytics/`.
| `association_type` | KPI | `main_block.type` | `region_ranking` | `top_industries.mode` | `trend_block` | `employee_stats` |
|---|---|---|---|---|---|---|
| `all` | 4 карточки по всем объединениям | `all_associations_composition` | 3 метрики по типам объединений | `stacked_by_association_type` | `opk_participation_by_year` | `null` |
| `sez` | 4 карточки по ОЭЗ | `sez_types_and_priority_directions` | ОЭЗ + организации ОПК | `single_association_type` | `null` | сотрудники ОПК-резидентов ОЭЗ и сотрудники ОЭЗ |
| `technoparks` | 4 карточки по технопаркам | `technopark_area_distribution` | технопарки + организации ОПК | `single_association_type` | `null` | сотрудники ОПК-резидентов технопарков и их доля |
| `clusters` | 4 карточки по кластерам | `cluster_specializations` | кластеры + организации ОПК | `single_association_type` | `cluster_creation_dynamics` | `null` |
| `association_type` | KPI | `main_block.type` | `region_ranking` | `top_industries.mode` | `trend_block` | `employee_stats` |
| ------------------ | ------------------------------- | ----------------------------------- | ------------------------------ | ----------------------------- | --------------------------- | ----------------------------------------------- |
| `all` | 4 карточки по всем объединениям | `all_associations_composition` | 3 метрики по типам объединений | `stacked_by_association_type` | `opk_participation_by_year` | `null` |
| `sez` | 4 карточки по ОЭЗ | `sez_types_and_priority_directions` | ОЭЗ + организации ОПК | `single_association_type` | `null` | сотрудники ОПК-резидентов ОЭЗ и сотрудники ОЭЗ |
| `technoparks` | 4 карточки по технопаркам | `technopark_area_distribution` | технопарки + организации ОПК | `single_association_type` | `null` | сотрудники ОПК-резидентов технопарков и их доля |
| `clusters` | 4 карточки по кластерам | `cluster_specializations` | кластеры + организации ОПК | `single_association_type` | `cluster_creation_dynamics` | `null` |
Требования:
@@ -2287,16 +2287,16 @@ Backend должен гарантировать:
### Status code matrix
| Status | Когда возвращается |
|---|---|
| `200 OK` | Успешный ответ, включая валидные фильтры без данных. |
| `304 Not Modified` | Conditional GET по `If-None-Match` или `If-Modified-Since`, если представление не изменилось. |
| `400 Bad Request` | Некорректный query param, неизвестный query param, повтор параметра, неверный формат значения. |
| `401 Unauthorized` | Пользователь не аутентифицирован. |
| `403 Forbidden` | Пользователь аутентифицирован, но не имеет доступа к странице или разделу. |
| `429 Too Many Requests` | Превышен rate limit. |
| `500 Internal Server Error` | Непредвиденная ошибка backend-а. |
| `503 Service Unavailable` | Временная недоступность сервиса или источника аналитических данных. |
| Status | Когда возвращается |
| --------------------------- | ---------------------------------------------------------------------------------------------- |
| `200 OK` | Успешный ответ, включая валидные фильтры без данных. |
| `304 Not Modified` | Conditional GET по `If-None-Match` или `If-Modified-Since`, если представление не изменилось. |
| `400 Bad Request` | Некорректный query param, неизвестный query param, повтор параметра, неверный формат значения. |
| `401 Unauthorized` | Пользователь не аутентифицирован. |
| `403 Forbidden` | Пользователь аутентифицирован, но не имеет доступа к странице или разделу. |
| `429 Too Many Requests` | Превышен rate limit. |
| `500 Internal Server Error` | Непредвиденная ошибка backend-а. |
| `503 Service Unavailable` | Временная недоступность сервиса или источника аналитических данных. |
Для collection/report endpoint-ов не использовать `404 Not Found`, если path существует, но по валидным фильтрам
нет данных. В этом случае нужен `200 OK` с пустыми массивами.