# tikkhonn/stroyuvka architecture

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

- Interactive diagram: https://gitdiagram.com/tikkhonn/stroyuvka
- Repository: https://github.com/tikkhonn/stroyuvka

## Overview

ПУЛЬС — платформа учёта личного состава академии. Основной путь: пост наряда или руководитель входит в систему, работает с учётом и отчётами по подразделениям, передаёт строевую записку на рассмотрение и видит её статус; начальник также просматривает сводки и динамику. Отдельные ветви охватывают администрирование структуры, чат, телефоны, больницы, печать и документацию. Состав API-роутеров и страниц подтверждён деревом и маршрутизатором; для несэмплированных связей с сервисами показаны только надёжно подтверждаемые точки входа.

Main entry points: [`frontend/src/app/AppRouter.tsx`](https://github.com/tikkhonn/stroyuvka/blob/main/frontend/src/app/AppRouter.tsx) (Маршрутизация), [`backend/app/main.py`](https://github.com/tikkhonn/stroyuvka/blob/main/backend/app/main.py) (API-приложение), [`frontend/src/api/client.ts`](https://github.com/tikkhonn/stroyuvka/blob/main/frontend/src/api/client.ts) (HTTP-клиент), [`frontend/src/pages/StroevkaReviewPage.tsx`](https://github.com/tikkhonn/stroyuvka/blob/main/frontend/src/pages/StroevkaReviewPage.tsx) (Проверка записки)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Интерфейс"]
  node_router["Маршрутизация<br/>[AppRouter.tsx]"]
  node_auth_context["Сеанс и роли<br/>[AuthContext.tsx]"]
  node_api_client["HTTP-клиент<br/>[client.ts]"]
end

subgraph group_reports["Учёт и отчёты"]
  node_attendance_ui["Учёт явки<br/>[AttendancePage.tsx]"]
  node_review_ui["Проверка записки"]
  node_pipeline["Статус отчёта"]
  node_chief_ui["Обзор и тренды"]
end

subgraph group_operations["Оперативные функции"]
  node_admin_ui["Администрирование<br/>[AdminPages.tsx]"]
  node_chat_ui["Чат<br/>[ChatPage.tsx]"]
  node_phones_ui["Телефоны<br/>[PhonesPage.tsx]"]
  node_print_ui["Печать и документы<br/>[PrintPage.tsx]"]
end

subgraph group_backend["API и службы"]
  node_api_main["API-приложение<br/>[main.py]"]
  node_auth_api["Вход<br/>[auth.py]"]
  node_attendance_api["API явки<br/>[attendance.py]"]
  node_reports_api["API отчётов<br/>[reports.py]"]
  node_units_api["API подразделений<br/>[units.py]"]
  node_chat_api["API чата<br/>[chat.py]"]
  node_services["Доменные службы"]
end

subgraph group_state["Хранение и связь"]
  node_ws_manager["Диспетчер WebSocket<br/>[manager.py]"]
  node_database[("PostgreSQL<br/>[session.py]")]
end

node_staff(("Сотрудники"))
node_external_ws(("WebSocket-клиенты"))

node_staff -->|"открывает"| node_router
node_router -->|"маршрутизирует"| node_attendance_ui
node_router -->|"маршрутизирует"| node_review_ui
node_router -->|"маршрутизирует"| node_chief_ui
node_router -->|"маршрутизирует"| node_admin_ui
node_router -->|"маршрутизирует"| node_chat_ui
node_router -->|"маршрутизирует"| node_phones_ui
node_router -->|"маршрутизирует"| node_print_ui
node_router -->|"ограничивает доступ"| node_auth_context
node_attendance_ui -->|"запрашивает данные"| node_api_client
node_review_ui -->|"запрашивает и меняет"| node_api_client
node_review_ui -->|"показывает этап"| node_pipeline
node_chief_ui -->|"запрашивает сводки"| node_api_client
node_admin_ui -->|"управляет данными"| node_api_client
node_chat_ui -->|"обменивается сообщениями"| node_api_client
node_phones_ui -->|"запрашивает данные"| node_api_client
node_print_ui -->|"запрашивает документы"| node_api_client
node_api_client -->|"вызывает API"| node_api_main
node_api_main -->|"подключает роутер"| node_auth_api
node_api_main -->|"подключает роутер"| node_attendance_api
node_api_main -->|"подключает роутер"| node_reports_api
node_api_main -->|"подключает роутер"| node_units_api
node_api_main -->|"подключает роутер"| node_chat_api
node_auth_api -->|"читает учётные записи"| node_database
node_auth_api -->|"записывает аудит"| node_services
node_api_main -->|"инициализирует схему"| node_database
node_api_main -->|"управляет соединениями"| node_ws_manager
node_external_ws -->|"подключается"| node_api_main
node_ws_manager -->|"рассылает события"| node_external_ws

click node_router "https://github.com/tikkhonn/stroyuvka/blob/main/frontend/src/app/AppRouter.tsx"
click node_attendance_ui "https://github.com/tikkhonn/stroyuvka/blob/main/frontend/src/pages/AttendancePage.tsx"
click node_review_ui "https://github.com/tikkhonn/stroyuvka/blob/main/frontend/src/pages/StroevkaReviewPage.tsx"
click node_pipeline "https://github.com/tikkhonn/stroyuvka/blob/main/frontend/src/components/ReportPipelineBar.tsx"
click node_chief_ui "https://github.com/tikkhonn/stroyuvka/blob/main/frontend/src/pages/ChiefOverviewPage.tsx"
click node_admin_ui "https://github.com/tikkhonn/stroyuvka/blob/main/frontend/src/pages/AdminPages.tsx"
click node_chat_ui "https://github.com/tikkhonn/stroyuvka/blob/main/frontend/src/pages/ChatPage.tsx"
click node_phones_ui "https://github.com/tikkhonn/stroyuvka/blob/main/frontend/src/pages/PhonesPage.tsx"
click node_print_ui "https://github.com/tikkhonn/stroyuvka/blob/main/frontend/src/pages/PrintPage.tsx"
click node_auth_context "https://github.com/tikkhonn/stroyuvka/blob/main/frontend/src/context/AuthContext.tsx"
click node_api_client "https://github.com/tikkhonn/stroyuvka/blob/main/frontend/src/api/client.ts"
click node_api_main "https://github.com/tikkhonn/stroyuvka/blob/main/backend/app/main.py"
click node_auth_api "https://github.com/tikkhonn/stroyuvka/blob/main/backend/app/api/routers/auth.py"
click node_attendance_api "https://github.com/tikkhonn/stroyuvka/blob/main/backend/app/api/routers/attendance.py"
click node_reports_api "https://github.com/tikkhonn/stroyuvka/blob/main/backend/app/api/routers/reports.py"
click node_units_api "https://github.com/tikkhonn/stroyuvka/blob/main/backend/app/api/routers/units.py"
click node_chat_api "https://github.com/tikkhonn/stroyuvka/blob/main/backend/app/api/routers/chat.py"
click node_services "https://github.com/tikkhonn/stroyuvka/tree/main/backend/app/services"
click node_ws_manager "https://github.com/tikkhonn/stroyuvka/blob/main/backend/app/ws/manager.py"
click node_database "https://github.com/tikkhonn/stroyuvka/blob/main/backend/app/db/session.py"

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_router,node_auth_context,node_api_client toneBlue
class node_attendance_ui,node_review_ui,node_pipeline,node_chief_ui toneAmber
class node_admin_ui,node_chat_ui,node_phones_ui,node_print_ui toneMint
class node_api_main,node_auth_api,node_attendance_api,node_reports_api,node_units_api,node_chat_api,node_services toneRose
class node_ws_manager,node_database,node_staff,node_external_ws toneIndigo
```

## Components

### Интерфейс

- [Маршрутизация](https://github.com/tikkhonn/stroyuvka/blob/main/frontend/src/app/AppRouter.tsx): `frontend/src/app/AppRouter.tsx`
- [Сеанс и роли](https://github.com/tikkhonn/stroyuvka/blob/main/frontend/src/context/AuthContext.tsx): `frontend/src/context/AuthContext.tsx`
- [HTTP-клиент](https://github.com/tikkhonn/stroyuvka/blob/main/frontend/src/api/client.ts): `frontend/src/api/client.ts`

### Учёт и отчёты

- [Учёт явки](https://github.com/tikkhonn/stroyuvka/blob/main/frontend/src/pages/AttendancePage.tsx): `frontend/src/pages/AttendancePage.tsx`
- [Проверка записки](https://github.com/tikkhonn/stroyuvka/blob/main/frontend/src/pages/StroevkaReviewPage.tsx): `frontend/src/pages/StroevkaReviewPage.tsx`
- [Статус отчёта](https://github.com/tikkhonn/stroyuvka/blob/main/frontend/src/components/ReportPipelineBar.tsx): `frontend/src/components/ReportPipelineBar.tsx`
- [Обзор и тренды](https://github.com/tikkhonn/stroyuvka/blob/main/frontend/src/pages/ChiefOverviewPage.tsx): `frontend/src/pages/ChiefOverviewPage.tsx`

### Оперативные функции

- [Администрирование](https://github.com/tikkhonn/stroyuvka/blob/main/frontend/src/pages/AdminPages.tsx): `frontend/src/pages/AdminPages.tsx`
- [Чат](https://github.com/tikkhonn/stroyuvka/blob/main/frontend/src/pages/ChatPage.tsx): `frontend/src/pages/ChatPage.tsx`
- [Телефоны](https://github.com/tikkhonn/stroyuvka/blob/main/frontend/src/pages/PhonesPage.tsx): `frontend/src/pages/PhonesPage.tsx`
- [Печать и документы](https://github.com/tikkhonn/stroyuvka/blob/main/frontend/src/pages/PrintPage.tsx): `frontend/src/pages/PrintPage.tsx`

### API и службы

- [API-приложение](https://github.com/tikkhonn/stroyuvka/blob/main/backend/app/main.py): `backend/app/main.py`
- [Вход](https://github.com/tikkhonn/stroyuvka/blob/main/backend/app/api/routers/auth.py): `backend/app/api/routers/auth.py`
- [API явки](https://github.com/tikkhonn/stroyuvka/blob/main/backend/app/api/routers/attendance.py): `backend/app/api/routers/attendance.py`
- [API отчётов](https://github.com/tikkhonn/stroyuvka/blob/main/backend/app/api/routers/reports.py): `backend/app/api/routers/reports.py`
- [API подразделений](https://github.com/tikkhonn/stroyuvka/blob/main/backend/app/api/routers/units.py): `backend/app/api/routers/units.py`
- [API чата](https://github.com/tikkhonn/stroyuvka/blob/main/backend/app/api/routers/chat.py): `backend/app/api/routers/chat.py`
- [Доменные службы](https://github.com/tikkhonn/stroyuvka/tree/main/backend/app/services): `backend/app/services`

### Хранение и связь

- [Диспетчер WebSocket](https://github.com/tikkhonn/stroyuvka/blob/main/backend/app/ws/manager.py): `backend/app/ws/manager.py`
- [PostgreSQL](https://github.com/tikkhonn/stroyuvka/blob/main/backend/app/db/session.py): `backend/app/db/session.py`

### Other components

- **Сотрудники**
- **WebSocket-клиенты**

## Connections

- Сотрудники → Маршрутизация: открывает
- Маршрутизация → Учёт явки: маршрутизирует
- Маршрутизация → Проверка записки: маршрутизирует
- Маршрутизация → Обзор и тренды: маршрутизирует
- Маршрутизация → Администрирование: маршрутизирует
- Маршрутизация → Чат: маршрутизирует
- Маршрутизация → Телефоны: маршрутизирует
- Маршрутизация → Печать и документы: маршрутизирует
- Маршрутизация → Сеанс и роли: ограничивает доступ
- Учёт явки → HTTP-клиент: запрашивает данные
- Проверка записки → HTTP-клиент: запрашивает и меняет
- Проверка записки → Статус отчёта: показывает этап
- Обзор и тренды → HTTP-клиент: запрашивает сводки
- Администрирование → HTTP-клиент: управляет данными
- Чат → HTTP-клиент: обменивается сообщениями
- Телефоны → HTTP-клиент: запрашивает данные
- Печать и документы → HTTP-клиент: запрашивает документы
- HTTP-клиент → API-приложение: вызывает API
- API-приложение → Вход: подключает роутер
- API-приложение → API явки: подключает роутер
- API-приложение → API отчётов: подключает роутер
- API-приложение → API подразделений: подключает роутер
- API-приложение → API чата: подключает роутер
- Вход → PostgreSQL: читает учётные записи
- Вход → Доменные службы: записывает аудит
- API-приложение → PostgreSQL: инициализирует схему
- API-приложение → Диспетчер WebSocket: управляет соединениями
- WebSocket-клиенты → API-приложение: подключается
- Диспетчер WebSocket → WebSocket-клиенты: рассылает события
