财务折线图:概览卡「折线图占位」,缺真实资产趋势图 #24

Closed
opened 2026-10-28 12:52:45 +00:00 by laoyang · 1 comment
Owner

现象

财务概览卡里「折线图占位」:FbLedgerPage.ets:360 有注释「折线图占位(第二轮接图表能力后填)」,画的是个静态图表图标,不是真实趋势。Web 端有 ledger/total_chart(总资产趋势)。

现状与依据

  • 服务端 ledger API 有 GET /api/v1/ledger(含 summary)和 /ledger/<id>/entries;是否需补「按时间聚合的趋势序列」需核对(Web 端 total_chart 的数据源是 Ledger:: 某个 trend 方法)。
  • 端上 FbLedgerPage 概览卡净资产/资产/负债是静态数字,无图。

要做的

  1. 核对 Web 端 ledger/total_chart 的数据来源;若服务端已有聚合方法则直接复用,缺的话补一个轻量时序接口(/api/v1/ledger/trend 之类)。
  2. 端上画折线图(ArkUI 无内建图表,需自绘:可用 Canvas 或现成的 @ohos/chart 组件,或项目里已有的绘画手段)。

验收

  • 概览卡能看到真实的总资产/净资产走势,而非静态图标。
  • 数据与服务端 Web 端 total_chart 一致。

标签

terminal/harmony · 纯端上(可能补时序接口)


本单由需求拆解生成,主单 laoyang/FamilyBook #22。

## 现象 财务概览卡里「折线图占位」:`FbLedgerPage.ets:360` 有注释「折线图占位(第二轮接图表能力后填)」,画的是个静态图表图标,不是真实趋势。Web 端有 `ledger/total_chart`(总资产趋势)。 ## 现状与依据 - 服务端 `ledger` API 有 `GET /api/v1/ledger`(含 `summary`)和 `/ledger/<id>/entries`;是否需补「按时间聚合的趋势序列」需核对(Web 端 total_chart 的数据源是 `Ledger::` 某个 trend 方法)。 - 端上 `FbLedgerPage` 概览卡净资产/资产/负债是静态数字,无图。 ## 要做的 1. 核对 Web 端 `ledger/total_chart` 的数据来源;若服务端已有聚合方法则直接复用,缺的话补一个轻量时序接口(`/api/v1/ledger/trend` 之类)。 2. 端上画折线图(ArkUI 无内建图表,需自绘:可用 `Canvas` 或现成的 `@ohos/chart` 组件,或项目里已有的绘画手段)。 ## 验收 - 概览卡能看到真实的总资产/净资产走势,而非静态图标。 - 数据与服务端 Web 端 total_chart 一致。 ## 标签 terminal/harmony · 纯端上(可能补时序接口) --- > 本单由需求拆解生成,主单 laoyang/FamilyBook #22。
Author
Owner

收尾:已修完、已验证、已部署

两端都已提交、推送,服务端已部署上线。

改了什么

服务端(commit e44f37e):

  • 补 GET /api/v1/ledger/<id>/timeline —— 返回时序点数组(date/net/asset/debt)+ 当前汇总。
  • 与 Web 端 ledger/total_chart 用同一份 Ledger::timeline($id),两端曲线必然一致。

鸿蒙端(commit 6f360fd,3 文件):

  • FbLedgerPoint 类型 + parseLedgerTimeline() 解析。
  • loadEntries() 顺带拉 timeline(单独缓存键 ledger_timeline_<id>)。
  • 概览卡「净资产变化」从空占位换成真实折线(ArkUI Path 组件画):
    Y 轴按 min..max 归一(不是从 0 起),金额平稳时曲线不会被压成贴底线;
    少于 2 个时点保留占位文案。

验证

  • 服务端冒烟 _i24_timeline_api.py 8/0:2xx · items 数组 · 每点 net = asset - debt · 有真实数据源。
  • 反证 _i24_falsify.py:注掉 timeline 端点 → ④(timeline 有点)变红。
  • 鸿蒙端编译 BUILD SUCCESSFUL;守卫 _fb_arkts_guard.js 1324/0。

部署

服务端 20261028-214734,两仓库已 push。

⚠️ 真机点验待设备恢复:折线图的手感(曲线形状、金额标尺是否合理)要等设备连上再点。

## 收尾:已修完、已验证、已部署 两端都已提交、推送,服务端已部署上线。 ### 改了什么 **服务端**(commit `e44f37e`): - 补 `GET /api/v1/ledger/<id>/timeline` —— 返回时序点数组(`date/net/asset/debt`)+ 当前汇总。 - 与 Web 端 `ledger/total_chart` 用**同一份 `Ledger::timeline($id)`**,两端曲线必然一致。 **鸿蒙端**(commit `6f360fd`,3 文件): - `FbLedgerPoint` 类型 + `parseLedgerTimeline()` 解析。 - `loadEntries()` 顺带拉 timeline(单独缓存键 `ledger_timeline_<id>`)。 - 概览卡「净资产变化」从空占位换成**真实折线**(ArkUI `Path` 组件画): Y 轴按 min..max 归一(不是从 0 起),金额平稳时曲线不会被压成贴底线; 少于 2 个时点保留占位文案。 ### 验证 - 服务端冒烟 `_i24_timeline_api.py` **8/0**:2xx · items 数组 · 每点 `net = asset - debt` · 有真实数据源。 - 反证 `_i24_falsify.py`:注掉 timeline 端点 → ④(timeline 有点)变红。 - 鸿蒙端编译 **BUILD SUCCESSFUL**;守卫 `_fb_arkts_guard.js` **1324/0**。 ### 部署 服务端 `20261028-214734`,两仓库已 push。 ⚠️ 真机点验待设备恢复:折线图的手感(曲线形状、金额标尺是否合理)要等设备连上再点。
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: laoyang/FamilyBook#24