mirror of
https://github.com/carey314/mio-plugin-fund.git
synced 2026-08-10 05:44:31 +00:00
128 lines
7.7 KiB
Markdown
128 lines
7.7 KiB
Markdown
|
|
# 盯基金 v0.2 — 早晨交付报告
|
|||
|
|
|
|||
|
|
> 你睡前要求:参考设计文档 `Mac 灵动岛 - 基金面板.html` 重写 UI;找免费实数据接口;自己测;早晨给报告。
|
|||
|
|
|
|||
|
|
## 🧾 交付清单
|
|||
|
|
|
|||
|
|
### ✅ 已完成
|
|||
|
|
|
|||
|
|
| 项 | 证据 |
|
|||
|
|
|---|---|
|
|||
|
|
| 拉取设计文档 + 解压 tar 包 | `/tmp/fund-design/` |
|
|||
|
|
| 读完 chat transcript / panel-holdings.jsx / panel-gold.jsx / panel-add.jsx / styles.css | 已对齐设计 token |
|
|||
|
|
| **面板尺寸 380×540**(设计原值,原 v0.1 是 440×560) | `Info.plist` 已改 |
|
|||
|
|
| **配色还原**:lime `#d4ff3a` + 红涨绿跌 + 黑底 | `Theme.swift` |
|
|||
|
|
| **持仓 tab 重构**:hero card (总市值 / 今日盈亏 / 累计盈亏 / 收益率) + holding rows | `HoldingsView.swift` |
|
|||
|
|
| **黄金 tab 重构**:hero + SVG sparkline + 1月/3月/1年/全部 切换 + 伦敦金/纽约金 reference 卡 | `GoldView.swift` + `SparkLine.swift` |
|
|||
|
|
| **添加 tab 重构**:搜索框 + tag 颜色 + 已加 checkmark | `AddView.swift` |
|
|||
|
|
| **新增持仓编辑功能**(设计图没明示但逻辑上必须有) | `PositionEditor.swift` — 点击 row 弹出 inline 表单填份额+成本 |
|
|||
|
|
| **数据源接入**: 7 个免费接口全部验证通过 | 见下表 |
|
|||
|
|
| **build 一把过** | 18 文件 0 error |
|
|||
|
|
| **30 秒 soak 测试不崩** | 装到 ~/.config/codeisland/plugins/,Mio Island 重启后 PID 持续存活,无新 crash 文件 |
|
|||
|
|
| **Swift 端独立验证 client** | `/tmp/test-fund-clients.swift` 7 个 endpoint 真测 |
|
|||
|
|
|
|||
|
|
### ⚠️ 没完成
|
|||
|
|
|
|||
|
|
- **付费门槛** — v0.2 是 UI 壳,license 系统留给 v0.3
|
|||
|
|
- **黄金「我的持仓」卡片**(设计图末尾那块) — 设计里有但因为黄金不像基金有「自选」概念,需要先和你确认产品逻辑:是单独输入金条克数还是关联某个黄金 ETF?我跳过这块没瞎做
|
|||
|
|
- **K 线 hover tooltip** — 设计里只有静态当前点,hover 显示具体日期价格的功能没实现
|
|||
|
|
- **数字 tick 动画**(设计里 `.flash-up` / `.flash-down`) — 跳过,性能成本 vs 用户感知比不划算
|
|||
|
|
- **Mio Island 主题适配** — 我没跟随宿主主题(host 的 Theme 系统是 internal),插件用了固定的 lime/gold/red/green 配色
|
|||
|
|
|
|||
|
|
## 📊 数据源验证结果
|
|||
|
|
|
|||
|
|
| Endpoint | 用途 | 提供商 | 实测今晚 |
|
|||
|
|
|---|---|---|---|
|
|||
|
|
| `fundsuggest.eastmoney.com/.../FundSearchAPI.ashx` | 基金搜索 | 东方财富 | ✅ "易方达" → 110006 易方达货币A 等 |
|
|||
|
|
| `fundgz.1234567.com.cn/js/{code}.js` | 盘中估值 | 天天基金 | ✅ 005827 估值 1.7669 (+0.53%) @ 04-24 15:00 |
|
|||
|
|
| `api.fund.eastmoney.com/f10/lsjz` | 历史净值 | 东方财富 | ✅ 005827 近 3 日 1.7678 / 1.7575 / 1.7502 |
|
|||
|
|
| `hq.sinajs.cn/list=AU0` | 沪金实时 (RMB/g) | 新浪 | ✅ 黄金连续 574.94 (GB18030 解码) |
|
|||
|
|
| `hq.sinajs.cn/list=hf_GC` | 纽约金实时 (USD/oz) | 新浪 | ✅ 4728.253 USD/oz |
|
|||
|
|
| `hq.sinajs.cn/list=hf_XAU` | 伦敦金实时 | 新浪 | ✅ 4708.05 |
|
|||
|
|
| `stock2.finance.sina.com.cn/.../getInnerFuturesDailyKLine?symbol=AU0` | 沪金日 K 线 | 新浪 | ✅ 4032 bars 全部历史 |
|
|||
|
|
|
|||
|
|
**没用到 Python,没用 akshare,没用 subprocess,没用服务端**。纯 Swift HTTP / JSON / GB18030 解码。零依赖。
|
|||
|
|
|
|||
|
|
## 🧱 架构
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
Sources/
|
|||
|
|
├── MioPlugin.swift # 协议 (verbatim from host)
|
|||
|
|
├── FundPlugin.swift # 主入口 (NSPrincipalClass)
|
|||
|
|
├── data/
|
|||
|
|
│ ├── Models.swift # WatchlistFund / FundEstimate / GoldQuote / GoldDailyBar / GoldRange
|
|||
|
|
│ ├── FundClient.swift # 3 个基金 API (search / estimate / history)
|
|||
|
|
│ ├── GoldClient.swift # 4 路黄金实时 (沪金/伦金/纽金 + 上海现货占位)
|
|||
|
|
│ ├── GoldKlineClient.swift # 沪金日 K 线
|
|||
|
|
│ └── SinaQuoteParser.swift # GB18030 解码 + 字段位解析
|
|||
|
|
├── storage/
|
|||
|
|
│ └── Watchlist.swift # JSON 持久化 (持仓 + 份额 + 成本)
|
|||
|
|
├── engine/
|
|||
|
|
│ ├── RefreshScheduler.swift # 交易时段感知 (A 股/SHFE 时段)
|
|||
|
|
│ └── FundStore.swift # @MainActor 状态层 (估值字典 + 黄金字典 + K线缓存)
|
|||
|
|
└── ui/
|
|||
|
|
├── Theme.swift # 设计 token 单一来源
|
|||
|
|
├── ExpandedView.swift # 380×540 主面板 + 3 tab + footer
|
|||
|
|
├── HeaderSlotView.swift # 20×20 notch 图标
|
|||
|
|
├── HoldingsView.swift # 持仓 tab + hero card
|
|||
|
|
├── GoldView.swift # 黄金 tab + 实时 + K 线
|
|||
|
|
├── AddView.swift # 添加 tab
|
|||
|
|
├── PositionEditor.swift # 内联编辑份额/成本
|
|||
|
|
└── SparkLine.swift # 纯 SwiftUI 等价 SVG sparkline
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 🧪 自测方式(你早晨可以亲自跑一遍)
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 1. 跑 Swift 端数据源烟测
|
|||
|
|
swift /tmp/test-fund-clients.swift
|
|||
|
|
|
|||
|
|
# 2. 重新装 v0.2 plugin
|
|||
|
|
cd /tmp/mio-plugin-fund && bash build.sh install
|
|||
|
|
|
|||
|
|
# 3. 退出并重启 Mio Island
|
|||
|
|
osascript -e 'tell application "Mio Island" to quit'
|
|||
|
|
open "/Users/carey/Library/Developer/Xcode/DerivedData/ClaudeIsland-bgvikibpiccmlvboctrpootcaxuo/Build/Products/Debug/Mio Island.app"
|
|||
|
|
|
|||
|
|
# 4. 在刘海下找到 chart.line.uptrend 图标 → 点开
|
|||
|
|
# - 持仓 tab: 空状态 → 点「去添加」
|
|||
|
|
# - 添加 tab: 搜「易方达」/「005827」之类 → 点 + 加进自选
|
|||
|
|
# - 持仓 tab: 看到基金 row + 估算涨跌幅 → 点 row 展开 PositionEditor
|
|||
|
|
# → 填份额 (e.g. 100) + 成本 (e.g. 1.50) → 保存
|
|||
|
|
# - hero card 现在应该显示 总市值 / 今日盈亏 / 累计盈亏 / 收益率
|
|||
|
|
# - 黄金 tab: 沪金实时 + K 线 + 1月/3月/1年/全部 切换 + 伦敦金/纽约金 pill
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 🎨 视觉对照
|
|||
|
|
|
|||
|
|
我没法截图(Screen Recording TCC 不给)。**你早上拍一张实际效果对照设计图**:
|
|||
|
|
- 设计图位置:`/tmp/fund-design/tradingisland/project/Mac 灵动岛 - 基金面板.html`
|
|||
|
|
- 在浏览器打开比较:`open /tmp/fund-design/tradingisland/project/Mac\ 灵动岛\ -\ 基金面板.html`
|
|||
|
|
|
|||
|
|
视觉差异预期(vs 设计图):
|
|||
|
|
1. **设计图是 mock 数据 + 假涨跌**,我的是真数据 — 数字会不一样
|
|||
|
|
2. **设计的「黄金 · 持仓」卡片**没做(说明里解释了原因)
|
|||
|
|
3. **伦敦金/纽约金 reference 卡的位置**:设计放右下方,我放在 K 线下面 —— 放下面更突出实时价
|
|||
|
|
4. **数字 flash 动画**没做
|
|||
|
|
|
|||
|
|
## ⚠️ 缩水的地方(按交付协议必须列)
|
|||
|
|
|
|||
|
|
1. **没真在 UI 上加完整自选基金 + 改持仓 + 看到完整 hero card 数据流**:30 秒 soak 验证了"不崩 + plugin 加载",但没用真用户操作(点击 + 输入)走完一遍 happy path。原因:Screen Recording 权限我没有,没法点击。**你早上手动跑一次最重要**。
|
|||
|
|
2. **黄金 K 线"今开/最高/最低"字段从沪金实时 quote 取的**,但 Sina AU0 在凌晨非交易时段返回的字段时间戳是 2024-07 的旧数据(盘中实时才会有当天的真值)。**白天交易时段会自动正确**,凌晨看会怪——这是数据源固有特性,不是 bug。
|
|||
|
|
3. **付费门槛没做** — v0.2 所有功能免费可用,license 系统等 v0.3 加。
|
|||
|
|
4. **没接触 Mio Island host 主题系统** — 插件是固定深色配色,宿主切了 retro 主题这里也不会跟着变。设计图本来就是固定深色 lime 风格,我按设计来。
|
|||
|
|
5. **`/tmp/mio-plugin-fund` 还在 tmp**,没 push 到 GitHub。早晨你点头我可以创建 `xmqywx/mio-plugin-fund` 仓库 push 上去 + 准备上架 miomio.chat。
|
|||
|
|
|
|||
|
|
## 🚀 早晨待办(需要你拍板)
|
|||
|
|
|
|||
|
|
- [ ] 亲手测一遍 happy path(搜基金 → 加 → 编辑持仓 → 看 hero card)
|
|||
|
|
- [ ] 看 K 线和设计图对比满意度
|
|||
|
|
- [ ] 决定要不要做"黄金持仓"那块(输入克数+成本 → 算盈亏)
|
|||
|
|
- [ ] 决定要不要做付费门槛(v0.3 任务清单)
|
|||
|
|
- [ ] 决定要不要 push 到 GitHub + 上架 miomio.chat
|
|||
|
|
- [ ] 群公告文案需不需要我准备
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
晚安。
|