feat: add CFCFRMS module, bank menus, mock backend, and dashboard redesign

- CFCFRMS cyber fraud complaint management with dashboard, complaints,
  escalation, report suspect/mule/fraud txn, FMR submission, CFR lookup
- Mock HTTP interceptor with 20 dummy complaints and all endpoints
- Simulator service for I4C/MHA integration testing
- 3-row menu bar with 22 items (7+8+8 layout)
- Mega menus for General Ledger, Sub Ledger, Deposits, Share, Others,
  HRM, RBI with search and grouped columns
- Dropdowns for Cashier, Clearing, NPA, CKYC, Advances, Letter Mgmt,
  Insurance, Digital
- Dashboard redesign with regulatory, financial health, deposits,
  risk/NPA sections using static banking data
- All translations added to en-US.json
- FontAwesome icons registered for all new menu items

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Aditya
2026-03-18 18:05:43 +05:30
co-authored by Claude Opus 4.6
parent 0a32d7135e
commit b3a4cce0cf
55 changed files with 9667 additions and 298 deletions
+241 -91
View File
@@ -7,132 +7,282 @@
-->
<div class="cbs-dashboard-container">
<div class="cbs-header">Core Banking System Dashboard</div>
<div class="cbs-header">
<span class="header-title">Core Banking System Dashboard</span>
<span class="header-date">{{ today | date: 'mediumDate' }}</span>
</div>
<div class="cbs-content">
<!-- Search Activity -->
<div class="search-row">
<mat-card-content>
<mat-form-field class="search-field">
<mat-label>{{ 'labels.placeholders.Search Activity' | translate }}</mat-label>
<input matInput [matAutocomplete]="activitySearch" [formControl]="searchText" />
</mat-form-field>
<mat-autocomplete #activitySearch="matAutocomplete">
@for (activity of filteredActivities | async; track activity) {
<mat-option [routerLink]="activity.path">
<span>{{ activity.activity }}</span>
</mat-option>
}
</mat-autocomplete>
</mat-card-content>
<!-- ═══════ SECTION: Regulatory & Compliance ═══════ -->
<div class="section-header regulatory">
<fa-icon icon="shield-alt" class="section-icon"></fa-icon>
<span>Regulatory &amp; Compliance</span>
</div>
<!-- Regulatory & Compliance -->
<div class="section-title">Regulatory & Compliance</div>
<div class="stats-grid">
<div class="stat-card">
<div class="stat-card-title">CRR / SLR</div>
<div class="stat-card-value">&#8377; 125 Cr</div>
<div class="stat-trend up">&#9650; Within Limits</div>
<div class="cards-row four-col">
<!-- CRR / SRR -->
<div class="dash-card mini">
<div class="mini-icon blue"><fa-icon icon="lock"></fa-icon></div>
<div class="mini-label">CRR / SRR</div>
<div class="mini-value">&#8377; 20.14 Cr</div>
<div class="mini-sub">8% <span class="tag-success">Within Limits</span></div>
</div>
<div class="stat-card">
<div class="stat-card-title">CRAR</div>
<div class="stat-card-value">13.42%</div>
<div class="stat-trend up">&#9650; Healthy</div>
<!-- CRAR -->
<div class="dash-card mini">
<div class="mini-icon green"><fa-icon icon="chart-line"></fa-icon></div>
<div class="mini-label">CRAR %</div>
<div class="mini-value">21%</div>
<div class="mini-sub"><span class="tag-success">Healthy (Min 9%)</span></div>
</div>
<div class="stat-card">
<div class="stat-card-title">DICGC (Samyak)</div>
<div class="stat-card-value">Updated</div>
<div class="stat-trend">Last Sync: Today</div>
<!-- DICSC with table inside -->
<div class="dash-card compact">
<div class="compact-header"><fa-icon icon="database" class="compact-icon purple-text"></fa-icon> DICSC</div>
<table class="mini-table">
<thead>
<tr>
<th></th>
<th>Freeze</th>
<th>Inop.</th>
<th>Rectified</th>
</tr>
</thead>
<tbody>
<tr>
<td class="row-label">Aadhaar</td>
<td>2,000</td>
<td>1,000</td>
<td>1,100</td>
</tr>
<tr>
<td class="row-label">PAN</td>
<td>3,000</td>
<td>2,000</td>
<td>2,200</td>
</tr>
<tr>
<td class="row-label">Mobile</td>
<td>2,000</td>
<td>—</td>
<td>100</td>
</tr>
</tbody>
</table>
</div>
<div class="stat-card">
<div class="stat-card-title">Interbank Exposure</div>
<div class="stat-card-value">72%</div>
<div class="stat-trend down">&#9660; Near Limit</div>
<!-- Interbank Exposure with details inside -->
<div class="dash-card compact">
<div class="compact-header">
<fa-icon icon="exchange" class="compact-icon orange-text"></fa-icon> Interbank Exposure — 20%
</div>
<div class="exposure-list">
<div class="exposure-row">
<span>Yes Bank</span><span class="exposure-pct">3%</span><span class="badge maintain">Maintain</span>
</div>
<div class="exposure-row">
<span>IDBI</span><span class="exposure-pct">11%</span><span class="badge exceed">Exceed</span>
</div>
<div class="exposure-row">
<span>Other Bank</span><span class="exposure-pct">6%</span><span class="badge exceed">Exceed</span>
</div>
</div>
</div>
</div>
<!-- Financial Health -->
<div class="section-title">Financial Health</div>
<div class="stats-grid">
<div class="stat-card">
<div class="stat-card-title">Net Worth</div>
<div class="stat-card-value">&#8377; 342 Cr</div>
<!-- ═══════ SECTION: Financial Health ═══════ -->
<div class="section-header financial">
<fa-icon icon="chart-bar" class="section-icon"></fa-icon>
<span>Financial Health</span>
</div>
<div class="cards-row five-col">
<div class="dash-card mini">
<div class="mini-icon blue"><fa-icon icon="university"></fa-icon></div>
<div class="mini-label">Net Worth</div>
<div class="mini-value">&#8377; 342 Cr</div>
</div>
<div class="stat-card">
<div class="stat-card-title">CD Ratio</div>
<div class="stat-card-value">68.2%</div>
<div class="dash-card mini">
<div class="mini-icon green"><fa-icon icon="chart-pie"></fa-icon></div>
<div class="mini-label">CD Ratio</div>
<div class="mini-value">65%</div>
</div>
<div class="stat-card">
<div class="stat-card-title">Capital Working</div>
<div class="stat-card-value">&#8377; 210 Cr</div>
<div class="dash-card mini">
<div class="mini-icon purple"><fa-icon icon="cogs"></fa-icon></div>
<div class="mini-label">Working Capital</div>
<div class="mini-value">&#8377; 210 Cr</div>
</div>
<div class="stat-card">
<div class="stat-card-title">Per Employee Income</div>
<div class="stat-card-value">&#8377; 8.4 L</div>
<div class="dash-card mini">
<div class="mini-icon orange"><fa-icon icon="user-tie"></fa-icon></div>
<div class="mini-label">Per Employee Profit</div>
<div class="mini-value">&#8377; 10 Lakh</div>
</div>
<div class="dash-card mini">
<div class="mini-icon red"><fa-icon icon="hand-holding-usd"></fa-icon></div>
<div class="mini-label">Advance &lt; 25 Lakh</div>
<div class="mini-value">55%</div>
</div>
</div>
<!-- Deposits & Advances -->
<div class="section-title">Deposits & Advances</div>
<div class="stats-grid">
<div class="stat-card">
<div class="stat-card-title">Total Deposits</div>
<div class="stat-card-value">&#8377; 1,240 Cr</div>
<!-- ═══════ SECTION: Deposits & Advances ═══════ -->
<div class="section-header deposits">
<fa-icon icon="piggy-bank" class="section-icon"></fa-icon>
<span>Deposits &amp; Advances</span>
</div>
<div class="cards-row three-col">
<!-- Deposits & Advances Summary -->
<div class="dash-card">
<div class="card-top">
<div class="card-icon-wrap blue"><fa-icon icon="coins"></fa-icon></div>
<div class="card-label">Deposits vs Advances</div>
</div>
<div class="da-compare">
<div class="da-item">
<div class="da-label">Total Deposits</div>
<div class="da-value deposit">&#8377; 3,264.42 Cr</div>
<div class="da-bar"><div class="da-fill deposit-fill" style="width: 78%"></div></div>
</div>
<div class="da-item">
<div class="da-label">Total Advances</div>
<div class="da-value advance">&#8377; 4,162.65 Cr</div>
<div class="da-bar"><div class="da-fill advance-fill" style="width: 100%"></div></div>
</div>
</div>
</div>
<div class="stat-card">
<div class="stat-card-title">Total Advances</div>
<div class="stat-card-value">&#8377; 845 Cr</div>
<!-- PSL -->
<div class="dash-card">
<div class="card-top">
<div class="card-icon-wrap green"><fa-icon icon="flag"></fa-icon></div>
<div class="card-label">Priority Sector Lending (PSL)</div>
</div>
<div class="card-big-value">65%</div>
<div class="psl-breakdown">
<div class="psl-row">
<span class="psl-label">Weaker Section</span>
<div class="psl-bar-wrap">
<div class="psl-bar weaker" style="width: 15%"></div>
</div>
<span class="psl-pct">15%</span>
</div>
<div class="psl-row">
<span class="psl-label">MSME</span>
<div class="psl-bar-wrap">
<div class="psl-bar msme" style="width: 7%"></div>
</div>
<span class="psl-pct">7%</span>
</div>
</div>
</div>
<div class="stat-card">
<div class="stat-card-title">Decay Analysis</div>
<div class="stat-card-value">Moderate</div>
</div>
<div class="stat-card">
<div class="stat-card-title">TSWM</div>
<div class="stat-card-value">Active</div>
<!-- Decay & TSWM -->
<div class="dash-card">
<div class="card-top">
<div class="card-icon-wrap purple"><fa-icon icon="chart-bar"></fa-icon></div>
<div class="card-label">Portfolio Quality</div>
</div>
<div class="quality-grid">
<div class="quality-item">
<div class="quality-label">Decay Analysis</div>
<div class="quality-badge moderate">Moderate</div>
</div>
<div class="quality-item">
<div class="quality-label">TSWM</div>
<div class="quality-badge active">Active</div>
</div>
</div>
</div>
</div>
<!-- Risk & NPA Monitoring -->
<div class="section-title">Risk & NPA Monitoring</div>
<div class="stats-grid">
<div class="stat-card">
<div class="stat-card-title">Gross NPA</div>
<div class="stat-card-value">4.82%</div>
<!-- ═══════ SECTION: Risk & NPA Monitoring ═══════ -->
<div class="section-header risk">
<fa-icon icon="exclamation-triangle" class="section-icon"></fa-icon>
<span>Risk &amp; NPA Monitoring</span>
</div>
<div class="cards-row three-col">
<!-- Gross NPA -->
<div class="dash-card npa-card">
<div class="card-top">
<div class="card-icon-wrap red"><fa-icon icon="chart-line"></fa-icon></div>
<div class="card-label">Gross NPA</div>
</div>
<div class="npa-gauge">
<div class="npa-circle gross">
<span class="npa-pct">7%</span>
</div>
<div class="npa-detail">
<div class="npa-status warning"><fa-icon icon="exclamation-triangle"></fa-icon> Above Threshold</div>
<div class="npa-note">RBI norm: &lt; 5%</div>
</div>
</div>
</div>
<div class="stat-card">
<div class="stat-card-title">Net NPA</div>
<div class="stat-card-value">2.11%</div>
<!-- Net NPA -->
<div class="dash-card npa-card">
<div class="card-top">
<div class="card-icon-wrap orange"><fa-icon icon="chart-line"></fa-icon></div>
<div class="card-label">Net NPA</div>
</div>
<div class="npa-gauge">
<div class="npa-circle net">
<span class="npa-pct">2%</span>
</div>
<div class="npa-detail">
<div class="npa-status success"><fa-icon icon="check-circle"></fa-icon> Within Limits</div>
<div class="npa-note">RBI norm: &lt; 3%</div>
</div>
</div>
</div>
<div class="stat-card">
<div class="stat-card-title">Risk-wise Analysis</div>
<div class="stat-card-value">Stable</div>
<!-- Risk Analysis -->
<div class="dash-card">
<div class="card-top">
<div class="card-icon-wrap blue"><fa-icon icon="shield-alt"></fa-icon></div>
<div class="card-label">Risk-wise Analysis</div>
</div>
<div class="risk-summary">
<div class="risk-item">
<span class="risk-dot green"></span>
<span>Low Risk</span>
<span class="risk-val">62%</span>
</div>
<div class="risk-item">
<span class="risk-dot yellow"></span>
<span>Medium Risk</span>
<span class="risk-val">25%</span>
</div>
<div class="risk-item">
<span class="risk-dot red"></span>
<span>High Risk</span>
<span class="risk-val">13%</span>
</div>
</div>
<div class="card-status info"><fa-icon icon="info-circle"></fa-icon> Overall: Stable</div>
</div>
</div>
<!-- Alerts & Notifications -->
<div class="section-title">Alerts & Notifications</div>
<!-- ═══════ SECTION: Alerts & Notifications ═══════ -->
<div class="section-header alerts">
<fa-icon icon="bell" class="section-icon"></fa-icon>
<span>Alerts &amp; Notifications</span>
</div>
<div class="alert-panel">
<span>&#9888; CRAR approaching minimum threshold.</span><br />
<span>&#9888; Interbank exposure nearing limit.</span><br />
<span>&#9888; RBI circular pending review.</span>
<div class="alert-item warning">
<fa-icon icon="exclamation-triangle"></fa-icon> Gross NPA at 7% — above RBI threshold of 5%. Immediate review
required.
</div>
<div class="alert-item warning">
<fa-icon icon="exclamation-triangle"></fa-icon> IDBI interbank exposure at 11% — exceeds single-party limit.
</div>
<div class="alert-item info"><fa-icon icon="info-circle"></fa-icon> DICSC data synced successfully today.</div>
<div class="alert-item info">
<fa-icon icon="info-circle"></fa-icon> RBI circular pending review — compliance action due by month end.
</div>
</div>
<!-- Existing Charts -->
<div class="section-title">Analytics</div>
<!-- ═══════ SECTION: Analytics Charts ═══════ -->
<div class="section-header analytics">
<fa-icon icon="chart-bar" class="section-icon"></fa-icon>
<span>Analytics</span>
</div>
<div class="charts-section">
<div class="top-card">
<div class="trends-bar">