gsinghpal
3491069f48
docs(fusion_accounting_followup): CLAUDE.md, UPGRADE_NOTES.md, README.md
...
fusion_accounting CI / test (fusion_accounting_ai) (push) Has been cancelled
fusion_accounting CI / test (fusion_accounting_core) (push) Has been cancelled
fusion_accounting CI / test (fusion_accounting_migration) (push) Has been cancelled
Made-with: Cursor
2026-04-19 21:41:41 -04:00
gsinghpal
aeb5461ad0
test(fusion_accounting_followup): local LLM follow-up text smoke (skips without LLM)
...
Made-with: Cursor
2026-04-19 21:39:50 -04:00
gsinghpal
e1f94d5202
test(fusion_accounting_followup): 5 OWL tour tests
...
Made-with: Cursor
2026-04-19 21:39:08 -04:00
gsinghpal
8eb4b8dc6c
fix(fusion_accounting_followup): seeded levels + migration idempotency
...
- test_create_minimal/negative_delay used sequence=1, which now collides
with the seeded Friendly Reminder level. Use sequences 901/902.
- migration backfill: search by name (not raw seq) for idempotency,
allocate sequence as max(existing)+1 to avoid both seed clashes and
within-batch collisions when Enterprise has duplicate sequence values.
Made-with: Cursor
2026-04-19 21:33:26 -04:00
gsinghpal
d0a912b1da
test(fusion_accounting_followup): coexistence behavior
...
Made-with: Cursor
2026-04-19 21:30:26 -04:00
gsinghpal
8ef88da94a
feat(fusion_accounting_followup): menu + window actions with coexistence group filter
...
Made-with: Cursor
2026-04-19 21:30:06 -04:00
gsinghpal
38a2684782
feat(fusion_accounting_followup): migration wizard backfill from account_followup
...
Made-with: Cursor
2026-04-19 21:29:38 -04:00
gsinghpal
2ec90a50b0
feat(fusion_accounting_followup): batch send follow-ups wizard
...
Made-with: Cursor
2026-04-19 21:28:58 -04:00
gsinghpal
4ee261e189
feat(fusion_accounting_followup): default mail templates for 3 escalation levels
...
Made-with: Cursor
2026-04-19 21:27:59 -04:00
gsinghpal
ab3fcc56db
feat(fusion_accounting_followup): seed 3 default follow-up levels
...
Made-with: Cursor
2026-04-19 21:27:33 -04:00
gsinghpal
474485f963
feat(fusion_accounting_followup): ai_text_panel + followup_history_table components
...
Made-with: Cursor
2026-04-19 21:20:51 -04:00
gsinghpal
da746698c5
feat(fusion_accounting_followup): partner_card + aging_bucket_strip + risk_badge components
...
Made-with: Cursor
2026-04-19 21:19:52 -04:00
gsinghpal
21f6171162
feat(fusion_accounting_followup): top-level followup_dashboard component
...
Made-with: Cursor
2026-04-19 21:18:59 -04:00
gsinghpal
86bead48e1
feat(fusion_accounting_followup): followup_service.js reactive frontend service
...
Made-with: Cursor
2026-04-19 21:17:57 -04:00
gsinghpal
99e4f8e17f
feat(fusion_accounting_followup): SCSS foundation for OWL widget
...
Made-with: Cursor
2026-04-19 21:17:18 -04:00
gsinghpal
f45d66c465
test(fusion_accounting_followup): performance benchmarks with P95 targets
...
Made-with: Cursor
2026-04-19 21:10:02 -04:00
gsinghpal
f64b8f373c
test(fusion_accounting_followup): full follow-up flow integration test
...
Made-with: Cursor
2026-04-19 21:09:17 -04:00
gsinghpal
d51a2b104e
test(fusion_accounting_followup): Hypothesis property-based invariants
...
Made-with: Cursor
2026-04-19 21:08:35 -04:00
gsinghpal
042dcf8067
feat(fusion_accounting_followup): 2 cron jobs (daily scan + weekly risk refresh)
...
fusion_accounting CI / test (fusion_accounting_ai) (push) Has been cancelled
fusion_accounting CI / test (fusion_accounting_core) (push) Has been cancelled
fusion_accounting CI / test (fusion_accounting_migration) (push) Has been cancelled
- fusion.followup.cron AbstractModel with two handlers
- cron_fusion_followup_daily_scan: walks every overdue partner and
delegates to engine.send_followup_email
- cron_fusion_followup_risk_refresh: weekly refresh of
fusion_followup_risk_score / risk_band on res.partner
- V19 ir.cron records (no numbercall field)
- 2 smoke tests added (80 total)
Made-with: Cursor
2026-04-19 21:04:37 -04:00
gsinghpal
52becd176a
feat(fusion_accounting_ai): 5 new customer follow-up AI tools
...
Adds Task 17 tool layer:
- fusion_list_overdue
- fusion_get_partner_followup_detail
- fusion_generate_followup_text
- fusion_send_followup
- fusion_get_partner_risk_score
Tools register through TOOL_DISPATCH and degrade with a clear
error message when fusion_accounting_followup is not installed.
5 TransactionCase tests added (78 total).
Made-with: Cursor
2026-04-19 21:03:30 -04:00
gsinghpal
993df3a14a
feat(fusion_accounting_ai): wire FollowupAdapter fusion paths to engine
...
- Switch FUSION_MODEL to fusion.followup.engine so adapter mode
selection matches the new module
- Add list_overdue() with fusion/enterprise/community variants
- Re-route send_followup_via_fusion to engine.send_followup_email
- 4 new TransactionCase tests (73 total)
Existing aging / overdue_invoices adapter methods continue to fall
back to the community implementation.
Made-with: Cursor
2026-04-19 21:02:17 -04:00
gsinghpal
d455016c27
feat(fusion_accounting_followup): 6 JSON-RPC endpoints for OWL widget
...
Adds Task 15 controller layer:
- /fusion/followup/list_overdue
- /fusion/followup/get_partner_detail
- /fusion/followup/generate_text
- /fusion/followup/send
- /fusion/followup/pause
- /fusion/followup/reset
All endpoints use V19 type='jsonrpc' and route through
fusion.followup.engine. 6 HttpCase tests added (69 total).
Made-with: Cursor
2026-04-19 21:00:07 -04:00
gsinghpal
9b6d6b3895
test(fusion_accounting_followup): engine integration tests for full lifecycle
...
End-to-end flows over a real posted receivable line: aging discovery,
level resolution, send-with-cache reuse, pause+force override, and
audit history growth. Adds ignore_pause kwarg to compute_followup_level
so force=True in send_followup_email reaches level resolution.
Made-with: Cursor
2026-04-19 20:54:13 -04:00
gsinghpal
6802d60e44
feat(fusion_accounting_followup): fusion.followup.engine 7-method API
...
The orchestrator AbstractModel for follow-up lifecycle.
get_overdue_for_partner, compute_followup_level, send_followup_email,
escalate_to_next_level, pause_followup, reset_followup, snapshot_followup_history.
All controllers, AI tools, wizards, cron must route through these
methods; no direct ORM writes to fusion.followup.run from anywhere else.
Made-with: Cursor
2026-04-19 20:52:27 -04:00
gsinghpal
06dafc31c1
feat(fusion_accounting_followup): inherit account.move.line for level tracking
...
Made-with: Cursor
2026-04-19 20:47:37 -04:00
gsinghpal
2ddc600d65
feat(fusion_accounting_followup): inherit res.partner with follow-up state
...
Made-with: Cursor
2026-04-19 20:46:08 -04:00
gsinghpal
207c857e6b
feat(fusion_accounting_followup): LLM text cache model
...
Made-with: Cursor
2026-04-19 20:45:27 -04:00
gsinghpal
05de855cea
feat(fusion_accounting_followup): fusion.followup.run audit model
...
Made-with: Cursor
2026-04-19 20:44:39 -04:00
gsinghpal
9ae9161892
feat(fusion_accounting_followup): fusion.followup.level definition model
...
Made-with: Cursor
2026-04-19 20:43:51 -04:00
gsinghpal
1829f0584f
feat(fusion_accounting_followup): AI follow-up text generator + prompt
...
Made-with: Cursor
2026-04-19 20:40:26 -04:00
gsinghpal
63f3e0ec14
feat(fusion_accounting_followup): tone_selector service
...
Made-with: Cursor
2026-04-19 20:39:17 -04:00
gsinghpal
397fb238c5
feat(fusion_accounting_followup): risk_scorer service
...
Made-with: Cursor
2026-04-19 20:38:44 -04:00
gsinghpal
d4ef19858d
feat(fusion_accounting_followup): level_resolver service
...
Made-with: Cursor
2026-04-19 20:38:02 -04:00
gsinghpal
4ce0edc698
feat(fusion_accounting_followup): overdue_aging service with 6 buckets
...
Made-with: Cursor
2026-04-19 20:35:39 -04:00
gsinghpal
ea2f44287f
feat(fusion_accounting_followup): Phase 4 skeleton + plan
...
35-task plan to replace Enterprise account_followup module:
- Multi-level dunning (gentle reminder -> firm warning -> legal)
- AI augmentation: contextual follow-up text generation + payment risk scoring + tone selection
- HYBRID engine: shared primitives + persisted level/run/cache models
- Per-partner state: current level, paused-until, history
- Coexists with Enterprise (group_fusion_show_when_enterprise_absent)
- Same V19 conventions + test pyramid + perf-budget discipline as Phases 1-3
Made-with: Cursor
2026-04-19 20:31:07 -04:00