AI Bank Reco
flowchart TD
subgraph Stage1["Stage 1: Page Initialization"]
A1["AIRecoBankOption.razor"] --> A2["OnInitializedAsync()"]
A2 --> A3["GetUserRolesCnt() - Role Check"]
A2 --> A4["GetAiFeatureCnt() - Feature Check"]
A2 --> A5["BankCombo() - Fetch Banks"]
A2 --> A6["BankRecoOption() - Init Dates"]
end
subgraph Stage2["Stage 2: User Action & Validation"]
B1["User Action"] --> B2["Upload .xlsx Bank Statement"]
B1 --> B3["Select Bank & Date Range"]
B2 --> B4["ProcessReconciliation()"]
B3 --> B4
B4 --> B5["GetAIInsightsCredits()"]
B4 --> B6["BankRecoValidate()"]
B4 --> B7["AIRecoService.ProcessAiRecoBank()"]
end
subgraph Stage3["Stage 3: HTTP API Gateway"]
C1["AIRecoService.cs"] -->|Multipart HTTP POST| C2["AIRecoController.cs"]
C2 --> C3["AIRecoBankProcess()"]
end
subgraph Stage4["Stage 4: Backend AI Orchestration"]
D1["AIRecoOrchestrator.cs"] --> D2["ReconcileBankAsync()"]
D2 --> D3["BankRecoRepository.BankRecoModel() - Fetch Unreconciled ERP Rows"]
D2 --> D4["BankRecoExtractionSkill.ExtractFromExcelAsync() - Parse Excel Statement"]
D2 --> D5["BankRecoMatchingSkill.ExecuteMatchingAsync() - AI Matching Engine"]
D2 --> D6["ClosedXML - Generate Report Excel File"]
D2 --> D7["AIInsightsRepository - Deduct Credit & Insert Log"]
end
subgraph Stage5["Stage 5: Auto Download & Cleanup"]
E1["AIRecoBankOption.razor"] -->|NavManager.NavigateTo| E2["FileDownloader.cs"]
E2 --> E3["DownloadFile()"]
E3 --> E4["ReadAllBytesAsync()"]
E3 --> E5["System.IO.File.Delete() - Delete File From Disk"]
E3 --> E6["Return File Stream Attachment to Browser"]
end
Stage1 --> Stage2
Stage2 --> Stage3
Stage3 --> Stage4
Stage4 --> Stage5