wasrusgen
|
21fd0ff3e5
|
feat: assembler dashboard, contracts module (Act №3), assembly rates
Frontend:
- assembler_dashboard.js — personal earnings screen for assemblers (#/master/dashboard)
- contracts.js — Act №3 preview + edit + SignRequest ПЭП (#/assembly/:id/contract)
- assembly_detail.js — add "📄 Акт сдачи-приёмки" button
- app.js — routes for #/master/dashboard and #/assembly/:id/contract
Backend:
- main.py — /api/assembler_earnings (fuzzy name match vs Excel)
- main.py — /api/contract_preview, /api/contract_save (Contracts sheet)
- main.py — _ensure_contracts_sheet(), _name_match_score()
- assembler_parser.py — fix tuple index out of range on short rows (2021 sheet)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-05-19 12:23:44 +03:00 |
|
wasrusgen
|
76fce9ec58
|
feat(analytics): assembler schedule parser + analytics screen
Backend:
- assembler_parser.py: parse Excel «Таблица занятости сборщиков»
- Handles both row-order variants (2026: dates row1; 2025-: dates row2)
- Extracts amount from end of cell text, supports compound "6030+20100"
- aggregate(): by_assembler×month + by_month totals
- In-memory cache with mtime invalidation
- main.py: /api/assembler_analytics — local file first, Drive fallback
- LOCAL: /app/data/assembler_schedule.xlsx (mounted volume)
- Config: ASSEMBLER_SCHEDULE_PATH env var override
- config.py: assembler_schedule_file_id for Drive fallback
- docker-compose.yml: /opt/zov-tech/data → /app/data:ro volume
Frontend:
- assembler_analytics.js: year filter, monthly table, assembler ranking
with progress bars, per-order average, last-6-months breakdown
- app.js: route #/admin/assembler-analytics + "Аналитика" button
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-05-19 09:44:34 +03:00 |
|