13 Commits

Author SHA1 Message Date
jze9
eb110f677c feat(stats): переписать дашборд статистики с Flet на React
stats/ (Flet) генерировал графики через matplotlib в PNG и отдавал их
через Flutter web с WebSocket — та же архитектура, что подводила
основной фронтенд (см. известные ошибки в README). Плавающая версия
flet>=0.82.2 недавно подтянула 0.86.0 с несовместимым протоколом
фреймирования, и дашборд перестал открываться в браузере.

stats-react/ — SPA по тому же паттерну, что и web-react (Vite+React+TS,
свой Dockerfile+nginx, same-origin прокси /api вместо WebSocket).
Функциональность 1:1: 4 summary-карточки, общие фильтры (тест/
организация/группа/год), два таба (прохождения / результаты тестов),
8 графиков, топ-10 таблица, фильтр по оси + сравнение по организациям/
группам. Круговая диаграмма заменена на 100%-stacked bar (dataviz:
"part-to-whole rides on the stacked bar chart; donut stays
deprioritized") с фолдингом длинного хвоста категорий в "Другое" —
у оригинала было 32 категории на 8 цветов, из-за чего сегменты
становились неразличимы.

Категориальная палитра графиков провалидирована на CVD-безопасность
(scripts/validate_palette.js, light+dark) — 8-цветная палитра из
исходного designer.py не проходила проверку (hard fail по
normal-vision floor). Бренд-оранжевый сохранён в палитре, остальные
7 слотов — из референсного набора skill'а.

stats/ и Dockerfile.stats удалены, docker-compose.yml переключён на
stats-react. Проверено сборкой всех трёх образов, полным compose up
и визуально (headless Chrome, light+dark, обе вкладки, реальные
данные с прод-сервера).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-16 14:11:06 +05:00
jze9
d8438da334 refactor: объединить docker-compose_db.yml в docker-compose.yml через profiles
Два файла и две команды разворачивания заменены одним docker-compose.yml.
postgres/redis перенесены туда же за профилем local-db — не поднимаются
по умолчанию (app по умолчанию идёт на внешние DB_HOST/REDIS_HOST из
.env), включаются явно через --profile local-db up -d. Проверено
`docker compose config` в обоих режимах.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-16 12:40:04 +05:00
jze9
ef1d442f35 fix: убрать реальные секреты из docker-compose.yml в .env
Пароли БД/Redis, SECRET_KEY, ADMIN_KEY, DOCS_PASSWORD были прописаны в
открытом виде прямо в docker-compose.yml и docker-compose_db.yml,
закоммичены в git (71887b0). Вынесены в .env (уже в .gitignore),
compose-файлы читают их через ${VAR}. Добавлен .env.example — шаблон
без секретов для онбординга.

Важно: старые значения остаются в истории git, эта правка их не
отзывает — реальные пароли на серверах БД/Redis нужно ротировать
отдельно, вне зоны действия этого коммита.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-16 11:54:29 +05:00
jze9
eac61923f4 feat(web): React-фронтенд вместо Flet + fix restore rmtree на bind-mount
web-react/: SPA Vite+React+TS, nginx раздаёт статику и проксирует /api на api:8000 по локалке. docker-compose: web(Flet)->web-react на :80. transfer_crud.backup_restore: чистим содержимое data/radar вместо rmtree точки монтирования (EBUSY).
2026-06-02 13:56:44 +00:00
jze9
71887b084a config: docker-compose — реальные адреса БД и Redis (192.168.1.11, 192.168.1.19) 2026-05-18 11:13:28 +00:00
4013701441 add dashboard 2026-04-09 17:24:07 +05:00
fe078b8560 new view testing 2026-04-02 14:14:08 +05:00
8a189e310b fix install diogram 2026-04-02 12:00:11 +05:00
59b3bcd0f4 web sttarting 2026-03-31 13:25:14 +05:00
9cd6d83428 add user? new page? new web 2026-03-23 21:28:10 +05:00
a1dd1a3279 fers web 2026-03-01 21:40:09 +05:00
d37c255994 fix data base 2026-02-27 15:37:15 +05:00
335db59c9c start 2026-02-03 17:15:58 +05:00