refactor: align frontend with FSD architecture
This commit is contained in:
@@ -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` с пустыми массивами.
|
||||
|
||||
@@ -320,10 +320,10 @@ GET /api/v1/competence-map/analytics/?association_type=technoparks
|
||||
|
||||
Обязательные метрики для ОЭЗ:
|
||||
|
||||
| `code` | Назначение | `value_type` |
|
||||
|---|---|---|
|
||||
| `opk_resident_employees_count` | численность сотрудников организаций ОПК-резидентов ОЭЗ | `integer` |
|
||||
| `sez_employees_count` | общая численность сотрудников ОЭЗ | `integer` |
|
||||
| `code` | Назначение | `value_type` |
|
||||
| ------------------------------ | ------------------------------------------------------ | ------------ |
|
||||
| `opk_resident_employees_count` | численность сотрудников организаций ОПК-резидентов ОЭЗ | `integer` |
|
||||
| `sez_employees_count` | общая численность сотрудников ОЭЗ | `integer` |
|
||||
|
||||
### Технопарки. Требуемые поля
|
||||
|
||||
@@ -357,10 +357,10 @@ GET /api/v1/competence-map/analytics/?association_type=technoparks
|
||||
|
||||
Обязательные метрики для технопарков:
|
||||
|
||||
| `code` | Назначение | `value_type` |
|
||||
|---|---|---|
|
||||
| `opk_resident_employees_count` | численность сотрудников организаций ОПК-резидентов технопарков | `integer` |
|
||||
| `opk_resident_employees_share_percent` | доля сотрудников организаций ОПК-резидентов технопарков | `percent` |
|
||||
| `code` | Назначение | `value_type` |
|
||||
| -------------------------------------- | -------------------------------------------------------------- | ------------ |
|
||||
| `opk_resident_employees_count` | численность сотрудников организаций ОПК-резидентов технопарков | `integer` |
|
||||
| `opk_resident_employees_share_percent` | доля сотрудников организаций ОПК-резидентов технопарков | `percent` |
|
||||
|
||||
### Требования
|
||||
|
||||
@@ -421,13 +421,13 @@ GET /api/v1/competence-map/analytics/?association_type=technoparks
|
||||
|
||||
## Сводка исправлений по backend response
|
||||
|
||||
| Проблема | Endpoint | Поля | Что нужно сделать |
|
||||
|---|---|---|---|
|
||||
| Placeholder субъектов РФ | `/analytics/` для всех `association_type` | `region_ranking.rows[].region_name` | возвращать реальные названия субъектов РФ |
|
||||
| Placeholder отраслей | `/analytics/` для всех `association_type` | `top_industries.rows[].industry_name` | возвращать реальные названия отраслей |
|
||||
| Пустая таблица направлений ОЭЗ | `/analytics/?association_type=sez` | `main_block.priority_directions.rows[]` | вернуть строки направлений ОЭЗ |
|
||||
| Нет карточек сотрудников ОЭЗ | `/analytics/?association_type=sez` | `employee_stats.items[]` | вернуть две KPI-метрики сотрудников |
|
||||
| Нет карточек сотрудников технопарков | `/analytics/?association_type=technoparks` | `employee_stats.items[]` | вернуть две KPI-метрики сотрудников |
|
||||
| Проблема | Endpoint | Поля | Что нужно сделать |
|
||||
| ------------------------------------ | ------------------------------------------ | --------------------------------------- | ----------------------------------------- |
|
||||
| Placeholder субъектов РФ | `/analytics/` для всех `association_type` | `region_ranking.rows[].region_name` | возвращать реальные названия субъектов РФ |
|
||||
| Placeholder отраслей | `/analytics/` для всех `association_type` | `top_industries.rows[].industry_name` | возвращать реальные названия отраслей |
|
||||
| Пустая таблица направлений ОЭЗ | `/analytics/?association_type=sez` | `main_block.priority_directions.rows[]` | вернуть строки направлений ОЭЗ |
|
||||
| Нет карточек сотрудников ОЭЗ | `/analytics/?association_type=sez` | `employee_stats.items[]` | вернуть две KPI-метрики сотрудников |
|
||||
| Нет карточек сотрудников технопарков | `/analytics/?association_type=technoparks` | `employee_stats.items[]` | вернуть две KPI-метрики сотрудников |
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user