feat(digital+toolbar): NEFT/RTGS module, AI menu, polished header icons

- Add /digital/neft-rtgs (entry) and /digital/neft-rtgs-report (analytics):
  KPIs, tabbed views (Trends, Bank-wise, Date-wise, Pending/Pass/Return,
  Branch/Mobile, User-wise), filterable transaction table with CSV export,
  and a non-dismissible Initiate dialog launched from a floating action.
- Make BANL verification mandatory before NEFT/RTGS submit; auto-fill and
  lock beneficiary name from the lookup response, invalidate match on
  A/C or IFSC edit, demo fallback for unknown accounts.
- Add Digital menu links (NEFT/RTGS + Report) in shell top-nav.
- Replace toolbar theme toggle with AI / Intelligence Modules mega menu:
  4 colour-coded columns covering Lending & Risk, Investment & Profit,
  Compliance & Advisory, Governance (9 modules total). Wire RBI
  Notifications Monitoring to /rbi-circulars.
- Unify notifications, settings, AI, and profile toolbar buttons into a
  26px ring style; colourful gradient bell SVG for notifications,
  custom gear+petals AI mark, online dot on the avatar.
- Trim ISO 27001 chip in the top bar.
- Add MPL header to generated .env.ts and its template in version.js.
- Bundles other pending working-tree changes (clients family/nominee
  tab tweaks, auth/2FA fixes, translations) into the same push.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Aditya
2026-05-15 11:50:26 +05:30
co-authored by Claude Opus 4.7
parent 6714897688
commit 595054b0b8
35 changed files with 4409 additions and 194 deletions
+9 -1
View File
@@ -582,12 +582,20 @@ export class ClientsService {
pageSize: number,
sortAttribute: string = '',
sortDirection: string = '',
activeOnly: boolean = false
activeOnly: boolean = false,
legalFormType: string = ''
) {
const innerRequest: any = { text };
if (activeOnly) {
innerRequest.activeOnly = true;
}
// Restrict to one legal form when caller asks for it. Used by guardian/nominee/family-member
// pickers — non-individual entities (companies, partnerships) make no sense as a "guardian"
// or "spouse", so the SPA passes 'INDIVIDUAL' there. Backend treats this as authoritative;
// omitting the param still returns all forms (backwards-compatible for the general client list).
if (legalFormType) {
innerRequest.legalFormType = legalFormType;
}
let request: any = {
request: innerRequest,
page,