TorbatYar/docs/accounting-frontend-integration-report.md
Mortezakoohjani 067b499193 Connect Accounting frontend to domain APIs for phases 5.1-5.11.
Wire sales/purchase posting, settlements, compliance, payroll employees, and ops edit flows; document the integration report.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-25 22:17:41 +03:30

117 lines
6.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Accounting Frontend Integration Report
> Phase: Enterprise Accounting Frontend Integration (connect FE ↔ existing BE 5.15.11)
> Date: 2026-07-25
> Scope: Accounting module only — no new product features beyond wiring existing APIs.
## Summary
Scanned ~118 Accounting FE routes against `/api/v1` routers. Connected previously disconnected domain screens to real backend APIs. Kept Phase 5.12 AI blocked. Ops document scaffolding remains for areas without domain routers (budget, DMS, integration connectors) with full list/create/edit/confirm against `/api/v1/ops`.
## Connected Pages (domain APIs)
| Area | Routes | Backend |
|------|--------|---------|
| Dashboard / Setup | `/accounting`, `/setup`, `/settings` | setup, health, charts, vouchers |
| COA / dimensions | chart-of-accounts, cost-centers, projects, currencies | `/accounts` |
| Fiscal | `/fiscal` | `/fiscal` |
| Vouchers | list (paginated), new, `[id]` | `/posting` |
| Ledger | `/ledger` | `/ledger` |
| Reports (TB/BS/IS) | `/reports` | `/reporting` |
| Treasury | hub, receipts-payments, transfers, reconciliation, cheques | `/treasury` |
| Customers / Suppliers | `/customers`, `/suppliers` | `/ar-ap` |
| Settlements | `/sales/settlements`, `/purchase/settlements` | `/ar-ap/settlements` |
| Sales invoice accounting | `/sales/invoices` | ops docs + `/sales-accounting` preview/post |
| Purchase GR | `/purchase/goods-receipts` | ops + `/purchase-inventory` |
| Inventory valuation | `/inventory/valuation` | `/purchase-inventory/valuation` + ops items |
| Assets hub + schedule | `/assets`, `/assets/schedule` | `/assets` |
| Payroll hub + employees | `/payroll`, `/payroll/employees` | `/payroll` |
| Compliance policies/risks | `/compliance/policies`, `/compliance/risks` | `/compliance` |
| Audit | `/audit` | compliance audit + posting audit |
| Monitoring health | `/monitoring/health` | `/health` + setup status |
| Inventory items/warehouses | `/inventory/items`, `/inventory/settings` | `/ops/items`, `/ops/warehouses` |
## Fixed Pages
| Page | Before | After |
|------|--------|-------|
| `/payroll/employees` | Ops stub documents | Domain payroll employees CRUD list/create |
| `/compliance/policies` | Ops stub | Domain policies list/create |
| `/compliance/risks` | Ops stub | Domain risks list/create |
| `/sales/settlements`, `/purchase/settlements` | Ops stub | Domain settlements list/create |
| `/sales/invoices` | Ops-only | Ops docs + sales-accounting preview/post |
| `/purchase/goods-receipts` | Ops-only | Ops docs + purchase-inventory preview/post |
| `/inventory/valuation` | Ops stub | Real valuation API |
| `/monitoring/health` | Ops stub | Live health + setup |
| `/assets/schedule` | Ops stub | Asset depreciation schedule from API |
| Ops BusinessDocsPage | Create/confirm only | + detail + edit (PATCH) |
| Vouchers list | First page only | Pagination (`page` / `page_size`) |
| Receipts/payments | Missing cash/bank ids | Cash box / bank account selects |
## Connected APIs (FE client additions)
- `settlements.list` / `settlements.create`
- `salesAccounting.listProfiles|createProfile|preview|post`
- `purchaseInventory.listProfiles|createProfile|previewGoodsReceipt|postGoodsReceipt|valuation`
- `compliance.requestApproval|approve|reject|listRisks|createRisk`
- `ops.updateDocument` (PATCH)
### Backend list endpoints added (integration completeness only)
- `GET /api/v1/ar-ap/settlements?party_type=`
- `GET /api/v1/compliance/risks`
- `GET /api/v1/purchase-inventory/posting-profiles`
## Modified Components
- `frontend/lib/accounting-api.ts`
- `frontend/components/accounting/DomainScreens.tsx` (new)
- `frontend/components/accounting/BusinessDocsPage.tsx`
- `frontend/app/accounting/vouchers/page.tsx`
- Route pages listed under Fixed Pages
- `backend/services/accounting/app/api/v1/{receivable_payable,compliance,purchase_inventory}.py`
## Validation Results
| Check | Result |
|-------|--------|
| BE module imports | Pass |
| Architecture / accounting pytest | See CI/local run in this session |
| Tenant header `X-Tenant-ID` on all authenticated FE calls | Pass (via `request()`) |
| JWT + refresh before accounting calls | Pass (`getValidAccessToken` + force refresh on 401) |
| ADR-010 (no direct journal writes from UI) | Pass — vouchers via Posting Engine only; sales/purchase post via accounting services |
| AI pages | Remain blocked |
| Fake/mock data | None introduced |
## Automatic Posting / Journal / Approval
| Workflow | How verified |
|----------|----------------|
| Automatic voucher generation | Sales `POST /sales-accounting/post`, Purchase `POST /purchase-inventory/post/goods-receipt`, Treasury cash-receipt, Payroll post → return `voucher_id` |
| Journal workflow | FE vouchers: create → validate → post → reverse/cancel on `/posting` |
| Approval workflow | FE client wired to `/compliance/approvals` (+ approve/reject); UI for request uses domain screens where applicable |
| Accounting events | Unchanged producers in BE services; UI consumes resulting vouchers/reports |
## Known Issues
1. **Ops scaffolding** remains for budget, documents DMS, integration connectors, monitoring KPIs/alerts, voucher recurring/templates, guarantees/facilities — no dedicated domain routers yet; CRUD is against `/ops/documents`.
2. **Suppliers** still list+create only (BE has no PATCH).
3. **Treasury** cheques/transfers/receipts mostly list+create (status transitions not exposed).
4. **Assets** dispose/transfer lack domain HTTP surfaces — ops stubs remain for those submenus.
5. **Reporting** cash-flow / equity / analytical still ops-backed; TB/BS/IS use Report Engine.
6. **Gitea push** may still be denied for this repo (local commits only unless permissions fixed).
7. Phase **5.12 AI** intentionally blocked.
## Next Recommendations
1. Promote high-traffic ops modules (sales orders, purchase orders) to first-class domain models when product prioritizes them.
2. Add supplier PATCH/archive + payable invoice GET/PATCH.
3. Cheque status transition APIs + UI.
4. Server-side voucher status filter + total count for pagination.
5. Wire compliance approval list UI once workflow list endpoint exists.
6. Unblock AI only after AI Provider Active (phase 5.12).
## Scoreboard note
Module scoreboard should treat ops-heavy areas as `partial` where domain engines are incomplete; domain hubs remain `complete`.