fa23425cbe4247dfe96699a818c9d4868035f8a3
## 为什么选这个切入方式 原计划先引入 SyncSession 值类型再拆文件。但实测 View 层对 @Published 状态的 直接访问约 90+ 处(15 × state、9 × progress、7 × startTime …),那条路要改 20 个属性的读写路径并全量验证。 改为更小的第一步:**抽取无状态解析**。关键区别是这一步**不需要放宽任何 private 访问级别**——Swift 的 private 是文件级作用域,一旦为拆文件而放开内部 状态,封装性就实质下降;而解析器接收「一行字符串」、返回「动作描述」, 天然不依赖 manager 状态。 ## 改动 - 新增 SyncOutputParser.swift(260 行):5 个预编译正则 + stdout/stderr/tqdm 解析 + 缓冲切分,全 static 无状态 - manager 的 4 个方法改为「调用 parser + switch 应用动作」 - 删除 manager 内 5 个正则声明(避免同一模式两处维护) - 主文件 842 → 729 行 ## 关键设计:返回动作序列而非直接改状态 原 parseStdoutLine 用 matched 标记而非提前 return,因此**一行可命中多个模式** (如 `✅ [x] 完成 成功: 3` 同时产出两条日志)。改成 guard-else-return 会静默 改变行为。故 parser 返回 [StdoutAction],manager 逐条应用。 用例 testMultiplePatternsInOneLine 锁定该语义。 ## 顺带修掉一个真实缺陷 原实现部分正则用 NSRange(location: 0, length: trimmed.count) 构造范围。 NSRange 按 **UTF-16 单元**计数,String.count 按**字素簇**计数: 含 emoji 的行(⚠️ 占 2 个 UTF-16 单元)长度偏小 → 行尾的「成功: N」「速率: X」 落在范围外被**静默漏匹配**。 统一改为 (s as NSString).length,并写回归用例 testEmojiLineStillMatchesTrailingRegex(先断言该行确实存在长度差, 否则用例本身没有意义)。 ## 还原一处既有行为 `daily sync: 45%` 的表名取到 "sync" 而非 "daily"——原实现取冒号前最后一个 非数字片段。测试首次失败暴露这点,是测试期望写错、不是代码错。 已在用例中锁定并注明,避免后人"顺手修正"改变既有显示。 ## 测试 Swift 18 → 42 tests(新增 24 条:模式识别、tqdm 提取、stderr 分级、 emoji/NSRange 回归、缓冲切分边界)。全量 8 套件 PASS。
FinDataHub 文档中心
更新于 2026-08-09 | P1-P4 全部完成 | P5 远期规划
目录结构
Docs/
├── README.md ← 你在这里
├── pipeline/ # 🟣 数据管道架构设计
├── macos/ # 🍎 macOS App 设计
└── tracking/ # 📋 项目管理追踪
🟣 pipeline/ — 数据管道架构设计
| 文件 | 类型 | 说明 |
|---|---|---|
findatahub-data-pipeline.html |
设计手册 | 核心架构 + 架构规范:三层 Medallion、7 步 Pipeline、4 级门控、依赖铁律、组件契约、代码质量标准 |
rate_limit_pull_plan.md |
方案文档 | 限流方案:6 接口分析 + 新浪/东财降级 + 北交所重拉 |
EXECUTION_PLAN.md |
已归档 | 重构执行方案(2026-07 阶段,已执行完毕) |
🍎 macos/ — macOS App 设计
| 文件 | 类型 | 说明 |
|---|---|---|
DESIGN.md |
设计规范 | Apple HIG 设计 Token + Liquid Glass 改造方案(附录) |
DEVLOG.md |
开发日志 | SwiftUI App 每日开发记录 |
📋 tracking/ — 项目管理追踪
| 文件 | 类型 | 说明 |
|---|---|---|
TODO.md |
待办 + 完成记录 | 13 项任务 + P1-P4 完成明细 + 架构重构项 |
进度总览
| 阶段 | 内容 | 状态 |
|---|---|---|
| P1 | 采集层:双源交叉验证 + AKShare 修复 + 北交所重拉 | ✅ |
| P2 | 预处理层:7 步 Pipeline + 4 级门控 + 策略画像 | ✅ |
| P3 | 使用层:SDK 11 方法 + API 14 端点 | ✅ |
| P4 | AI 接入:Skills + MCP 7 工具 | ✅ |
| P5 | 云端扩展:阿里云同步 / Redis 缓存 / 数据血缘 | 📅 未来 |
Description
本地金融数据终端 macOS App(SwiftUI + kuaixun-service + MySQL 数据管线)
4.3 MiB
0 Stars
1 Watchers
0 Forks
Languages
Python
58.1%
Swift
26.9%
HTML
8.5%
Vue
2.8%
Shell
1.8%
Other
1.9%