zov-tech/backend-py/app
wasrusgen 4abd7b2ecd feat: proposal cycle — client brief + manager editor + voting
Backend:
- proposals.py: new module with full proposal cycle
  (brief → draft → sent → reviewed → done),
  Google Sheets «Proposals» tab, Telegram notifications
- main.py: import proposals_mod, 9 new /api/proposal_* routes
  added to both dispatch map and native /api/* handlers

Frontend:
- proposals.js: self-contained Proposals module
  · Client: brief form (6 items + budget + notes),
    waiting screen, proposal view with / per variant,
    overall comment + submit
  · Manager: empty state → create, editor with categories,
    add-variant form, send button, client votes/feedback view
- clients.js: «Подбор техники» button now opens proposals
  editor page (#/clients/client/{key}/proposals); inline
  Proposals.mountManager() section added to client card;
  new renderClientProposalsPage() route handler
- app.js: #/c/proposal route for client side; client home
  «Подобрать технику» menu item activated (was «скоро»)
- podbor.css: ~350 lines of Proposals UI styles
- index.html: proposals.js added, cache version → 20260516e

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-16 09:28:36 +03:00
..
parsers parsers: better image extraction — real product photos in report cards 2026-05-11 23:43:25 +03:00
__init__.py feat(infra): Python FastAPI backend + Docker compose for VPS deploy (GigaChat with Russian root CA) 2026-05-10 17:44:21 +03:00
ai.py remove duplicate vent question + AI must propose charcoal filter on recirc hood 2026-05-12 17:22:59 +03:00
auth.py cleanup: drop debug prints — auth fallback verified working 2026-05-12 21:56:53 +03:00
catalog.py catalog: filter junk + background refresh + clear endpoint 2026-05-12 07:09:33 +03:00
config.py feat: arrivals module + refactor xlsx parser 2026-05-16 07:49:56 +03:00
drive.py feat: warehouse module — ОТГРУЗКИ.xlsx в дашборде менеджера 2026-05-16 07:21:23 +03:00
gcalendar.py A+B: голос в мастере замера + Google Calendar события 2026-05-13 23:49:20 +03:00
geocoder.py geocoder: порт из проекта СЕКРЕТАРЬ + кнопка «По адресу» 2026-05-13 17:55:34 +03:00
main.py feat: proposal cycle — client brief + manager editor + voting 2026-05-16 09:28:36 +03:00
proposals.py feat: proposal cycle — client brief + manager editor + voting 2026-05-16 09:28:36 +03:00
proxy_pool.py backend: proxy_pool supports PROXY_LIST_FILE + format auto-conversion 2026-05-11 15:52:02 +03:00
sheets.py Phase 4 stage 1: Сборки — модель + создание + список 2026-05-14 09:53:40 +03:00
telegram.py feat(infra): Python FastAPI backend + Docker compose for VPS deploy (GigaChat with Russian root CA) 2026-05-10 17:44:21 +03:00