feat(integration): core banking console at /officer/integration
Three tabs. Connections lists each bank's configured link with its last status, and lets an operations user test or run a sync. Field mapping is the screen that carries the argument: one row per loan-book field, one column per lender's name for it, which is what "every bank's core is different" actually reduces to. Sync history reads as an audit — a failed run is a row, because a feed that stopped three weeks ago must be visible as something other than silence. Simulated adapters are badged everywhere they appear, including in the run history, because the failure mode that matters here is a demo mistaken for a live feed. Unmapped vendor columns are shown being dropped at the boundary, with identifying ones marked never stored. The client-side identifying-column check mirrors the backend's, matching on the whole name and on each part with separators and camelCase split alike — so CUST_NAME and borrowerMobile are refused next to the field rather than after a round trip. Follows the house pattern: useQuery against the real endpoint, in-file demo fallback, "Demo data" pill when the backend is unreachable. The demo fixtures deliberately include one connection that has never run and one that last failed. Build and oxlint clean. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -48,6 +48,7 @@ Demo fallbacks deliberately include failure states: the data-entry fallback cont
|
||||
- **`/officer/rules`** — every trip-wire with its outcome, including the ones that were *skipped* and why. This is the screen that shows the system refusing to fire on stale data.
|
||||
- **`/officer/feeds`** — provenance. Mandi rows carry a source: `Agmarknet`, or an amber **Hand** chip for a price somebody typed. By the time a price reaches a feature the two are indistinguishable, so the distinction has to be visible here.
|
||||
- **`/officer/data-entry`** — upload, preview, commit. Accepted, rejected and overwriting rows stay in three separate groups.
|
||||
- **`/officer/integration`** — core banking / LMS. The mapping table is the argument: each lender's core names the same eleven fields differently, and a per-bank mapping is what absorbs that. Simulated adapters are badged as simulated on every screen they appear on, and unmapped vendor columns are shown being dropped at the boundary.
|
||||
- **`/nabard`** — the India choropleth and the zone → state → district drill-down. States with no portfolio are drawn in a neutral grey that is nowhere on the stress ramp, so absence is never read as health.
|
||||
|
||||
---
|
||||
|
||||
Reference in New Issue
Block a user