Commit Graph

3 Commits

Author SHA1 Message Date
wasrusgen
02f8dba469 feat: expeditor cabinet, electronic signature (OTP+canvas), invoice room picker
New modules:
- expeditor_dashboard.js: route list (date-grouped) + act detail + signature screen
- invoice.js: 3-col chip room picker, 2500₽ base + 1000₽ extra logic
- act4.js, measurer_dashboard.js, finance_summary.js, client_timeline.js, feedback.js, staff_roster.js

Backend:
- /api/expeditor_inbox: filtered assembly list for expeditor role
- /api/act4_request_otp: 6-digit OTP via Telegram, 10-min expiry
- /api/act4_verify_otp: validates code, marks act as signed
- /api/act4_save_signature: saves base64 canvas signature
- Act4s sheet: added signature_b64, otp_code, otp_expires_at columns

Tests:
- tests/expeditor_scenarios.md: 11 manual test scenarios

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-21 14:11:20 +03:00
wasrusgen
44379576f2 feat: date scheduling flow for assembler/measurer
Backend:
- _assembly_columns: +date_range, +confirm_by, +confirmed_at
- _handle_assembly_create: sets confirm_by = now+3h when assigned_to_tg_id provided
- /api/assembly_schedule: staff confirms exact datetime → status→scheduled
  + gcal event create/update + bot notify manager "Лид закреплён 🎯"
- /api/measurement_schedule: same for measurers
- staff_clients: return date_range/confirm_by/confirmed_at per assembly,
  preferred_date/preferred_time_of_day per measurement

Frontend (staff_clients.js):
- Assembly cards: show date_range hint, confirm_by countdown timer
- "📞 Подтвердить дату после созвона" button (only when status=created, no scheduled_at)
- Measurement cards: show preferred_date from client, confirm button
- _openScheduleOverlay: datetime-local picker + note → POST assembly/measurement_schedule
  → reload client list on success

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-19 13:11:07 +03:00
wasrusgen
e8b9c68c5c feat: staff client list for assembler/measurer (#/master/clients)
- /api/staff_clients — returns clients grouped by client, filtered by role
  (assembler sees assemblies, measurer sees measurements, both if combined)
  Supports filter: active | done | all
- staff_clients.js — client list with status tags + detail card view
  (phone link, assembly cards → AssemblyDetailScreen, measurement cards)
- app.js — route #/master/clients, button "👥 Мои клиенты" for assembler+measurer

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-19 13:05:16 +03:00