# ibnrasal-fakih/bitrix_bi_dashboard architecture

> Architecture diagram of the GitHub repository ibnrasal-fakih/bitrix_bi_dashboard, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/ibnrasal-fakih/bitrix_bi_dashboard
- Repository: https://github.com/ibnrasal-fakih/bitrix_bi_dashboard

## Overview

Это русскоязычная BI-панель для руководителей, которая превращает данные Bitrix24 в аналитику по проектам, задачам, сотрудникам, времени и финансам. Пользователь открывает дашборд или тематический раздел; App загружает аналитический payload, применяет фильтры и передаёт данные представлениям для графиков, KPI и таблиц. Сервер синхронизирует сущности через VibeCode/Bitrix24, нормализует их и обслуживает запросы данных и статуса; доступны также настройки финансового маппинга, синхронизация и стратегический drill-down. README описывает экспорт CSV, кэширование и demo fallback; excerpts подтверждают нормализацию и серверный sync, но детали экспорта и отдельных страниц не проверялись.

Main entry points: [`src/App.jsx`](https://github.com/ibnrasal-fakih/bitrix_bi_dashboard/blob/main/src/App.jsx) (Приложение и фильтры), [`server/index.js`](https://github.com/ibnrasal-fakih/bitrix_bi_dashboard/blob/main/server/index.js) (HTTP API и sync), [`src/components/DataTable.jsx`](https://github.com/ibnrasal-fakih/bitrix_bi_dashboard/blob/main/src/components/DataTable.jsx) (Поиск и таблицы), [`src/pages/Dashboard.jsx`](https://github.com/ibnrasal-fakih/bitrix_bi_dashboard/blob/main/src/pages/Dashboard.jsx) (KPI-дашборд)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Интерфейс и навигация"]
  node_app["Приложение и фильтры<br/>[App.jsx]"]
  node_layout["Навигация и оболочка<br/>[Layout.jsx]"]
  node_table["Поиск и таблицы<br/>[DataTable.jsx]"]
  node_widgets["Графики и Gantt<br/>[ProjectWidgets.jsx]"]
  node_filterdata["Фильтрация и аналитика<br/>[data.js]"]
end

subgraph group_analytics["Аналитические разделы"]
  node_dashboard["KPI-дашборд<br/>[Dashboard.jsx]"]
  node_occupancy["Занятость<br/>[Occupancy.jsx]"]
  node_time["Рабочее время<br/>[TimePage.jsx]"]
  node_projects["Проекты<br/>[ProjectsPage.jsx]"]
  node_finance["Финансы<br/>[FinancePage.jsx]"]
  node_tasks["Задачи<br/>[TasksPage.jsx]"]
  node_employees["Сотрудники<br/>[EmployeesPage.jsx]"]
  node_itsm["ITSM-запросы<br/>[ItsmPage.jsx]"]
  node_strategy["Стратегия и детали"]
  node_settings["Настройки маппинга<br/>[SettingsPage.jsx]"]
  node_syncpage["Статус синхронизации<br/>[SyncPage.jsx]"]
end

subgraph group_backend["Синхронизация и данные"]
  node_api["HTTP API и sync<br/>[index.js]"]
  node_normalizer["Нормализация данных<br/>[normalize.js]"]
  node_instructionfiles["Файлы инструкций<br/>[index.js]"]
end

subgraph group_integrations["Внешние системы"]
  node_vibecode{{"VibeCode / Bitrix24"}}
end

node_manager(("Руководитель"))

node_manager -->|"выбирает раздел"| node_layout
node_layout -->|"навигация"| node_app
node_app -->|"запрашивает данные"| node_api
node_app -->|"запускает sync"| node_api
node_api -->|"нормализует"| node_normalizer
node_normalizer -->|"возвращает payload"| node_api
node_api -->|"получает сущности"| node_vibecode
node_api -.->|"запрашивает финансы"| node_vibecode
node_api -->|"читает и пишет"| node_instructionfiles
node_app -->|"фильтрует данные"| node_filterdata
node_app -->|"передаёт данные"| node_dashboard
node_app -->|"передаёт данные"| node_occupancy
node_app -->|"передаёт данные"| node_time
node_app -->|"передаёт данные"| node_projects
node_app -->|"передаёт данные"| node_finance
node_app -->|"передаёт данные"| node_tasks
node_app -->|"передаёт данные"| node_employees
node_app -->|"передаёт данные"| node_itsm
node_app -->|"передаёт данные"| node_strategy
node_app -->|"передаёт статус"| node_settings
node_app -->|"передаёт статус"| node_syncpage
node_dashboard -->|"строит визуализации"| node_widgets
node_occupancy -->|"строит матрицы"| node_widgets
node_strategy -->|"строит Gantt"| node_widgets
node_dashboard -->|"показывает детали"| node_table
node_tasks -->|"показывает задачи"| node_table
node_projects -->|"показывает проекты"| node_table
node_finance -->|"показывает записи"| node_table
node_employees -->|"показывает сотрудников"| node_table
node_itsm -->|"показывает обращения"| node_table

click node_app "https://github.com/ibnrasal-fakih/bitrix_bi_dashboard/blob/main/src/App.jsx"
click node_layout "https://github.com/ibnrasal-fakih/bitrix_bi_dashboard/blob/main/src/components/Layout.jsx"
click node_dashboard "https://github.com/ibnrasal-fakih/bitrix_bi_dashboard/blob/main/src/pages/Dashboard.jsx"
click node_occupancy "https://github.com/ibnrasal-fakih/bitrix_bi_dashboard/blob/main/src/pages/Occupancy.jsx"
click node_time "https://github.com/ibnrasal-fakih/bitrix_bi_dashboard/blob/main/src/pages/TimePage.jsx"
click node_projects "https://github.com/ibnrasal-fakih/bitrix_bi_dashboard/blob/main/src/pages/ProjectsPage.jsx"
click node_finance "https://github.com/ibnrasal-fakih/bitrix_bi_dashboard/blob/main/src/pages/FinancePage.jsx"
click node_tasks "https://github.com/ibnrasal-fakih/bitrix_bi_dashboard/blob/main/src/pages/TasksPage.jsx"
click node_employees "https://github.com/ibnrasal-fakih/bitrix_bi_dashboard/blob/main/src/pages/EmployeesPage.jsx"
click node_itsm "https://github.com/ibnrasal-fakih/bitrix_bi_dashboard/blob/main/src/pages/ItsmPage.jsx"
click node_strategy "https://github.com/ibnrasal-fakih/bitrix_bi_dashboard/blob/main/src/pages/StrategyDetailPage.jsx"
click node_settings "https://github.com/ibnrasal-fakih/bitrix_bi_dashboard/blob/main/src/pages/SettingsPage.jsx"
click node_syncpage "https://github.com/ibnrasal-fakih/bitrix_bi_dashboard/blob/main/src/pages/SyncPage.jsx"
click node_table "https://github.com/ibnrasal-fakih/bitrix_bi_dashboard/blob/main/src/components/DataTable.jsx"
click node_widgets "https://github.com/ibnrasal-fakih/bitrix_bi_dashboard/blob/main/src/components/ProjectWidgets.jsx"
click node_filterdata "https://github.com/ibnrasal-fakih/bitrix_bi_dashboard/blob/main/src/utils/data.js"
click node_api "https://github.com/ibnrasal-fakih/bitrix_bi_dashboard/blob/main/server/index.js"
click node_normalizer "https://github.com/ibnrasal-fakih/bitrix_bi_dashboard/blob/main/server/normalize.js"
click node_instructionfiles "https://github.com/ibnrasal-fakih/bitrix_bi_dashboard/blob/main/server/index.js"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_app,node_layout,node_table,node_widgets,node_filterdata toneBlue
class node_dashboard,node_occupancy,node_time,node_projects,node_finance,node_tasks,node_employees,node_itsm,node_strategy,node_settings,node_syncpage toneAmber
class node_api,node_normalizer,node_instructionfiles toneMint
class node_vibecode toneRose
class node_manager toneIndigo
```

## Components

### Интерфейс и навигация

- [Приложение и фильтры](https://github.com/ibnrasal-fakih/bitrix_bi_dashboard/blob/main/src/App.jsx): `src/App.jsx`
- [Навигация и оболочка](https://github.com/ibnrasal-fakih/bitrix_bi_dashboard/blob/main/src/components/Layout.jsx): `src/components/Layout.jsx`
- [Поиск и таблицы](https://github.com/ibnrasal-fakih/bitrix_bi_dashboard/blob/main/src/components/DataTable.jsx): `src/components/DataTable.jsx`
- [Графики и Gantt](https://github.com/ibnrasal-fakih/bitrix_bi_dashboard/blob/main/src/components/ProjectWidgets.jsx): `src/components/ProjectWidgets.jsx`
- [Фильтрация и аналитика](https://github.com/ibnrasal-fakih/bitrix_bi_dashboard/blob/main/src/utils/data.js): `src/utils/data.js`

### Аналитические разделы

- [KPI-дашборд](https://github.com/ibnrasal-fakih/bitrix_bi_dashboard/blob/main/src/pages/Dashboard.jsx): `src/pages/Dashboard.jsx`
- [Занятость](https://github.com/ibnrasal-fakih/bitrix_bi_dashboard/blob/main/src/pages/Occupancy.jsx): `src/pages/Occupancy.jsx`
- [Рабочее время](https://github.com/ibnrasal-fakih/bitrix_bi_dashboard/blob/main/src/pages/TimePage.jsx): `src/pages/TimePage.jsx`
- [Проекты](https://github.com/ibnrasal-fakih/bitrix_bi_dashboard/blob/main/src/pages/ProjectsPage.jsx): `src/pages/ProjectsPage.jsx`
- [Финансы](https://github.com/ibnrasal-fakih/bitrix_bi_dashboard/blob/main/src/pages/FinancePage.jsx): `src/pages/FinancePage.jsx`
- [Задачи](https://github.com/ibnrasal-fakih/bitrix_bi_dashboard/blob/main/src/pages/TasksPage.jsx): `src/pages/TasksPage.jsx`
- [Сотрудники](https://github.com/ibnrasal-fakih/bitrix_bi_dashboard/blob/main/src/pages/EmployeesPage.jsx): `src/pages/EmployeesPage.jsx`
- [ITSM-запросы](https://github.com/ibnrasal-fakih/bitrix_bi_dashboard/blob/main/src/pages/ItsmPage.jsx): `src/pages/ItsmPage.jsx`
- [Стратегия и детали](https://github.com/ibnrasal-fakih/bitrix_bi_dashboard/blob/main/src/pages/StrategyDetailPage.jsx): `src/pages/StrategyDetailPage.jsx`
- [Настройки маппинга](https://github.com/ibnrasal-fakih/bitrix_bi_dashboard/blob/main/src/pages/SettingsPage.jsx): `src/pages/SettingsPage.jsx`
- [Статус синхронизации](https://github.com/ibnrasal-fakih/bitrix_bi_dashboard/blob/main/src/pages/SyncPage.jsx): `src/pages/SyncPage.jsx`

### Синхронизация и данные

- [HTTP API и sync](https://github.com/ibnrasal-fakih/bitrix_bi_dashboard/blob/main/server/index.js): `server/index.js`
- [Нормализация данных](https://github.com/ibnrasal-fakih/bitrix_bi_dashboard/blob/main/server/normalize.js): `server/normalize.js`
- [Файлы инструкций](https://github.com/ibnrasal-fakih/bitrix_bi_dashboard/blob/main/server/index.js): `server/index.js`

### Внешние системы

- **VibeCode / Bitrix24**

### Other components

- **Руководитель**

## Connections

- Руководитель → Навигация и оболочка: выбирает раздел
- Навигация и оболочка → Приложение и фильтры: навигация
- Приложение и фильтры → HTTP API и sync: запрашивает данные
- Приложение и фильтры → HTTP API и sync: запускает sync
- HTTP API и sync → Нормализация данных: нормализует
- Нормализация данных → HTTP API и sync: возвращает payload
- HTTP API и sync → VibeCode / Bitrix24: получает сущности
- HTTP API и sync → VibeCode / Bitrix24: запрашивает финансы
- HTTP API и sync → Файлы инструкций: читает и пишет
- Приложение и фильтры → Фильтрация и аналитика: фильтрует данные
- Приложение и фильтры → KPI-дашборд: передаёт данные
- Приложение и фильтры → Занятость: передаёт данные
- Приложение и фильтры → Рабочее время: передаёт данные
- Приложение и фильтры → Проекты: передаёт данные
- Приложение и фильтры → Финансы: передаёт данные
- Приложение и фильтры → Задачи: передаёт данные
- Приложение и фильтры → Сотрудники: передаёт данные
- Приложение и фильтры → ITSM-запросы: передаёт данные
- Приложение и фильтры → Стратегия и детали: передаёт данные
- Приложение и фильтры → Настройки маппинга: передаёт статус
- Приложение и фильтры → Статус синхронизации: передаёт статус
- KPI-дашборд → Графики и Gantt: строит визуализации
- Занятость → Графики и Gantt: строит матрицы
- Стратегия и детали → Графики и Gantt: строит Gantt
- KPI-дашборд → Поиск и таблицы: показывает детали
- Задачи → Поиск и таблицы: показывает задачи
- Проекты → Поиск и таблицы: показывает проекты
- Финансы → Поиск и таблицы: показывает записи
- Сотрудники → Поиск и таблицы: показывает сотрудников
- ITSM-запросы → Поиск и таблицы: показывает обращения
