wasrusgen
22dbbed112
feat: AI contract review for clients (#/c/contract)
...
Backend:
- main.py: _handle_contract_review() — GigaChat analyzes
contract text, returns structured JSON (summary, payment,
deadlines, risks, recommendations, missing_clauses)
with optional targeted question support
- /api/contract_review route (async, thread-pool)
- CONTRACT_SYSTEM prompt: plain-language analysis in Russian,
risk levels high/medium/low, missing-clause detection
Frontend:
- proposals.js: Proposals.mountContractReview(container)
· Textarea for contract text with char counter (16k limit)
· 5 preset quick-questions as tappable chips
· Free-form question input
· Thinking animation while AI processes
· Renders structured analysis: Summary, Payment,
Deadlines, Risks (color-coded), Recommendations,
Missing clauses, disclaimer footer
· Falls back to raw text if AI returns unstructured reply
- app.js: #/c/contract route in init() and routeByHash();
«Калькулятор бюджета» replaced by «Проверить договор»
in client home menu (active, not «скоро»)
- podbor.css: ~180 lines of contract review styles
(cr-* classes, risk colors, thinking animation)
- index.html: cache version → 20260516f
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-16 09:35:29 +03:00
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