Add 4 AI bookkeeping features
Feature 7: Bank Rec Auto-Match — AiSuggestMatches endpoint scores uncleared transactions vs statement ending balance; AI Auto-Match panel in Reconcile.cshtml with confidence highlights and Apply All button. Feature 8: Late Payment Prediction — PredictLatePayments endpoint scores open AR customers by risk (high/medium/low) using historical avg-days-to-pay + late rate; rendered as badge table in AR Aging view via ar-aging-ai.js. Feature 9: Natural Language Financial Queries — FinancialQuery GET page + RunFinancialQuery POST; 12-month context snapshot pre-loaded; answers grounded in real data with supporting facts, follow-up suggestions, session history, and example chips. Feature 10: Recurring Bill Detection — RunRecurringDetection scans 12 months of bills for vendor payment patterns (monthly/quarterly/annual); card grid view in Bills/RecurringDetection.cshtml with confidence badges, next-expected-date, and suggested actions. Supporting: 4 new DTO groups in AccountingAiDtos.cs, 4 method signatures in IAccountingAiService.cs, 4 implementations in AccountingAiService.cs, 4 new AiFeatures constants, 2 new Landing page AI report cards. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -5,7 +5,10 @@
|
||||
ViewData["PageIcon"] = "bi-receipt-cutoff";
|
||||
}
|
||||
|
||||
<div class="d-flex justify-content-end mb-4">
|
||||
<div class="d-flex justify-content-between align-items-center mb-4">
|
||||
<a asp-action="RecurringDetection" class="btn btn-outline-secondary btn-sm">
|
||||
<i class="bi bi-robot me-1"></i>Detect Recurring Bills
|
||||
</a>
|
||||
<div class="btn-group">
|
||||
<a asp-controller="Bills" asp-action="Create" class="btn btn-primary">
|
||||
<i class="bi bi-plus-lg me-1"></i>New Bill
|
||||
|
||||
@@ -0,0 +1,58 @@
|
||||
@{
|
||||
ViewData["Title"] = "Recurring Bill Detection";
|
||||
ViewData["PageIcon"] = "bi-arrow-repeat";
|
||||
}
|
||||
|
||||
<div class="d-flex justify-content-between align-items-center mb-4">
|
||||
<div>
|
||||
<h4 class="fw-semibold mb-1"><i class="bi bi-arrow-repeat text-primary me-2"></i>Recurring Bill Detection</h4>
|
||||
<p class="text-muted small mb-0">Claude analyzes your last 12 months of bills to find recurring payment patterns and help you anticipate upcoming expenses.</p>
|
||||
</div>
|
||||
<a asp-action="Index" class="btn btn-outline-secondary">
|
||||
<i class="bi bi-arrow-left me-1"></i>Bills
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<form id="scanForm" method="post" asp-action="RunRecurringDetection">
|
||||
@Html.AntiForgeryToken()
|
||||
<div class="card shadow-sm mb-4 border-0 bg-light">
|
||||
<div class="card-body d-flex align-items-center gap-3 flex-wrap">
|
||||
<div>
|
||||
<span class="fw-semibold"><i class="bi bi-robot text-primary me-1"></i>AI Analysis</span>
|
||||
<span class="text-muted small ms-2">Scans up to 12 months of bills grouped by vendor to detect patterns.</span>
|
||||
</div>
|
||||
<button id="scanBtn" type="submit" class="btn btn-primary ms-auto">
|
||||
<i class="bi bi-magic me-1"></i>Detect Recurring Bills
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<div id="resultArea" class="d-none">
|
||||
<div id="spinnerArea" class="text-center py-5 d-none">
|
||||
<div class="spinner-border text-primary" style="width:2.5rem;height:2.5rem;" role="status"></div>
|
||||
<p class="text-muted mt-3">Claude is reviewing your bill history…</p>
|
||||
</div>
|
||||
|
||||
<div id="errorArea" class="alert alert-danger alert-permanent d-none"></div>
|
||||
|
||||
<div id="insightsArea" class="alert alert-info alert-permanent d-none mb-3">
|
||||
<i class="bi bi-lightbulb me-2"></i><span id="insightsList"></span>
|
||||
</div>
|
||||
|
||||
<div id="noPatterns" class="card shadow-sm d-none">
|
||||
<div class="card-body text-center py-5 text-muted">
|
||||
<i class="bi bi-search fs-1 d-block mb-2"></i>
|
||||
<p class="mb-0 fw-semibold">No recurring patterns detected</p>
|
||||
<p class="small">Need at least 2 occurrences of a vendor bill at a similar cadence. Add more bill history and try again.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="patternsArea" class="d-none">
|
||||
<div class="row g-3" id="patternCards"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@section Scripts {
|
||||
<script src="/js/recurring-detection.js"></script>
|
||||
}
|
||||
Reference in New Issue
Block a user