Skip to content

Analysis & Reports

概述

分析域提供收支圖表、分類 / 帳戶 breakdown、CSV 匯出,以及圖示化 PDF 交易報表。查詢與彙總邏輯集中於 Service 層,避免各頁重複 SQL。

核心概念

概念說明
Scope全部 / 年 / 月 / 日 / 自訂期間
Breakdown分類或帳戶維度的收入 / 支出彙總
淨額退款部分退款以扣除後淨額納入分析
互動 vs 列印/analysis 跟隨 Dark/Light;PDF 強制淺色

協作流程

mermaid
flowchart LR
  AnalysisView[analysis.vue]
  CatDetail[AnalysisCategoryDetailPage]
  PrintPage[AnalysisPrintPage]
  TQS[transaction-query.service]
  Breakdown[analysis-breakdown.js]
  Export[export.service]
  AnalysisView --> TQS
  AnalysisView --> Breakdown
  CatDetail --> TQS
  PrintPage --> Export

主要頁面

路由頁面用途
/analysisanalysis.vue圓餅 / 長條圖、摘要、一鍵 PDF
/analysis/categoryAnalysisCategoryDetailPage分類明細
/analysis/printAnalysisPrintPage交易報表預覽、PDF / CSV

PDF 產生:html2canvas + jsPDF,檔名 交易報表_YYYY-MM.pdf;擷取前強制 A4 寬度與等比分頁。

關鍵模組

模組職責
transaction-query.service.jsloadAnalysisStats() SQL GROUP BY;明細仍走 listTransactionsForAnalysis
analysis-breakdown.js圓餅 / 長條列裝飾、附加項目拆分 overlay
export.service.jsCSV / Spreadsheet / 報表資料

查詢效能

  • 首頁 / 搜尋 / 帳戶明細:SQL 分頁 300 筆,badge 顯示總筆數;長列表用 content-visibility: auto
  • 分析 stats(含「全部」):summarizeAnalysisBreakdown SQL GROUP BY禁止把整本帳本載入主執行緒再 JS 掃
  • 時間軸用 thin facts + 本機時區 bucket(避免 UTC GROUP BY 改語意)
  • /analysis/printmeta.hideAppChrome,BottomNav 不遮匯出 CTA;匯出成功後頁內「開啟檔案」
  • 收支摘要:summarizeHomeAssetTotalsByScope 單次 SQL(見 Budget

支出附加項目

正向附加項目在分類分析中拆成獨立列,主分類扣除附加金額後總支出仍一致(SMB-146)。

與其他域

  • 預算:分析頁可顯示預算達成卡
  • 資產:投資 / 證券摘要
  • 記帳include_in_analysisloan_payment 排除規則

下一步

StrawMoneyBook Developer Guide