Back to skills
extension
Category: Data & AnalyticsNo API key required

花开福来·资产导入助手

把用户提供的任意资产信息(金融 App 截图、文字描述、表格、记忆口述等)通过「对话式采集」整理成「花开福来」小程序标准 5-Sheet 导入 Excel。支持两种模式:全新录入(从零建表)与增量导入(先读用户从小程序导出的已有数据,原样复用已有 account_id / asset_id / holding_id / liability_id,再整理新截图,绝不搞错已有 ID)。核心原则:不限制来源平台、提取后缺什么问什么、绝不杜撰、确认后再填、循环到用户说"没了"再出最终表。当用户发来资产/持仓/账户截图或文字、要求"整理成 Excel / 做成可导入数据 / 把截图转表格 / 新增一批资产导入"时使用。不依赖外部 OCR,直接用多模态读图能力提取。

personAuthor: user_c0782da5hubcommunity

Asset Data → Import Excel(对话式资产整理助手)

这个 skill 是什么 / 不是什么

:一个交互式的数据整理助手。输入可以是截图、文字、表格、甚至口述;它提取可读信息,对不清楚的字段直接问用户,全部确认后填入标准 5-Sheet Excel,循环到用户说"没有要导入的了"才生成最终文件。

不是:一个"按平台硬编码识别规则"的自动 OCR 工具。它不预设你必须用哪个银行/券商 App——光大、招行、支付宝、建行、理财通只是我们验证时用过的例子,新增任何来源都只需在对话里告诉它即可。扩展新类型 = 在枚举里加一项,无需改流程。

设计哲学(五条铁律)

  1. 不杜撰:截图/文字里没有的数字、类别、日期,绝不臆测补全。识别不清 → 留空并询问;问不到 → 留空 + 进待确认清单。
  2. 不确定的就问:平台归属、账户类型、资产分类、币种、日期、代码——任何无法从输入可靠判断的,用带选项的提问或直接问用户确认。一次问清,问题尽量合并
  3. 骨头固定,肉灵活:输出的 5-Sheet 结构、列名、枚举(asset_class / product_type / account_type / liability_type / holding_type / source_type)是小程序导入的硬契约,必须遵守;除此之外(识别什么、怎么问、怎么扩展类型)全部灵活。
  4. 【分类按三维模型最严】(V2,2026-08 起):资产分类 = asset_class(风险大类:cash/fixed_income/equity/gold/alternative/other/restricted_asset)× market(china/overseas/global/other/none)× product_type(持有工具)+ strategy_tags(可选)。权益不再分中国/海外大类,地域一律写 market;底层为准(债基必归 fixed_income);港股通中国企业主题按方案归 equity+china;market 判断不了就问用户。细则见 references/classification_guide.md分类错误的代价:直接破坏小程序统计口径与下游分析——债基误归 A 股会同时扭曲大类配置与市场分布,且错误会随快照长期累积,修复需要逐行重导。
  5. 【ID 对齐最严】(增量导入时):已有实体的 ID 以用户导出的数据为唯一权威来源,原样复用,绝不重新哈希、绝不改一个字符。小程序导入端对空 ID 会随机生成新 IDimportService.jsidGen.genId)→ 同一账户/资产被重复创建。对不上号的实体 → 问用户,不猜。更新已有实体时可用稀疏行(带原 ID 只填要改的列,空白不覆盖既有数据)。

触发场景

  • 用户发来任意金融 App 截图(银行/券商/基金/第三方平台/公积金/信用卡),说"整理成 Excel / 做成可导入数据 / 把截图转成表格"。
  • 用户用文字描述自己的资产("我有 10 万放余额宝,5 万招行朝朝宝…"),要落成表格。
  • 用户已有小程序,想批量录入/更新资产快照。
  • 增量导入:用户同时给「小程序导出的已有数据(Excel 或 JSON 备份)」+「新截图」,要求对齐已有 ID 整理出增量导入表。

工作流(对话式采集循环)

核心是一个循环:采集 → 澄清 → 确认 → 填入 → 问"还有吗" → … → 用户说没了 → 出最终表。

0. 准备工作区(仅首次)

  • 在用户工作区创建一个累计工作文件,例如 <workspace>/asset_import_working.json(完整 JSON 结构见 references/incremental_import_sop.md 第三节:meta + accounts / assets / holdings / snapshots / liabilities 五个数组)。后续每确认一批就追加进去。
  • 读取用户提供的截图(Read 多模态);文字/表格直接解析。

1. 提取草稿

从输入中提取所有可读的结构化信息,映射到 5 张表(Accounts/Assets/Holdings/Snapshots/Liabilities)。能确定的先填;不能确定的一律标记为「待问」

2. 澄清提问(铁律 2)

把这一批所有不确定的点合并成一组问题问用户(优先用带选项的提问方式,选项来自标准枚举)。提问模板与边界处理(外币/无代码/不完整截图/汇总行)见 references/interaction_playbook.md绝不替用户拍板分类或金额;用户没回前不写入最终数据。

3. 确认并填入

用户回答后,把确认的行写入 asset_import_working.json。ID 用确定性哈希派生(见 references/excel_schema.md 的 ID 约定),保证跨批次/跨来源同一产品 ID 恒定、可被小程序 upsert。

4. 继续 or 收尾

  • 问用户:"还有要导入的吗?"
  • 有 → 回到 Step 1。
  • 没有 → 进入 Step 5。

5. 生成最终 Excel

# 英文表头版:
python scripts/build_excel.py asset_import_working.json final_import.xlsx --verify
# 中文表头版(用户模板为中文时,推荐):
python scripts/build_excel_cn.py asset_import_working.json final_import_cn.xlsx

--verify 会做结构自检(必填、枚举、引用、金额、日期)。有 error 必须修复再交付;warning(如平台汇总差额)写入待确认清单交用户。

交付前必跑校验(中文模板、英文值导出文件都能查,防枚举错位):

python scripts/check_value_aliases.py final_import_cn.xlsx
# 也可直接校验用户给的小程序导出备份(英文枚举值):
python scripts/check_value_aliases.py 用户的导出备份.xlsx

check_value_aliases.py 的合法集合 = constants.js 的「中文别名 ∪ 英文规范值」,所以两种文件都能通过;非合法值立即报「行号+字段+当前值+建议」。在仓库外运行时自动回退到技能内置快照 assets/enums.json;也可用 --constants <路径> 显式指定 constants.js。

运行环境:用带 openpyxl 的 Python(macOS/Linux 用 python3,Windows 下若 python3 不可用改用 python)。没有 openpyxl 时可用 uv run scripts/build_excel.py ...——所有 Python 脚本均已内联声明依赖(PEP 723),uv 会自动解析。

6. 交付

  • 交付 final_import.xlsx
  • 待确认清单:仅包含「真正未解决」的项(识别不清、缺失汇率/日期、汇总差额、平台未展开等)——不是猜测清单
  • 提示导入方式:小程序「导入 Excel」→ 二次校验 → 入库。

增量导入模式

用户已用过小程序、库里已有数据时,新增一批资产要对齐已有 ID(铁律 5)。完整流程——导入端硬契约、导出文件格式解码、ID 注册表提取、逐实体对齐规则、增量文件只含新行、工作文件 JSON 结构——见 references/incremental_import_sop.md。第一步固定是 python scripts/extract_ids.py 导出文件.xlsx -o id_registry.json

Resources

  • references/excel_schema.md硬契约:5-Sheet 列名/类型/必填/枚举,与小程序 constants.jsSHEET_SCHEMAS 一字不差。改这个文件前必须先核对 constants.js。
  • references/enum_reference.md枚举权威参考(自动生成,请勿手改):由 scripts/gen_enum_reference.js 直接读取 constants.js 生成,含每个枚举字段的「英文规范值 ↔ 中文标签 ↔ 导入中文别名」完整对照,以及「小程序导出文件 = 中文表头 + 英文值」的格式解密表。这是枚举的唯一权威来源;生成任何 Excel 前先查这里,避免英文字段搞混。枚举新增/改名后重跑生成脚本即可同步。
  • references/classification_guide.md — 标准枚举与分类启发式(关键词→类别)。枚举以 excel_schema.md / enum_reference.md 为准;不确定就问用户。
  • references/recognition_hints.md可选参考,非必读。常见 App 截图布局提示,帮提取更快;但永远不能替代"问用户",更不是强制规则。
  • references/interaction_playbook.md交互协议细节:怎么分批提问、怎么维护工作文件、怎么处理负债/外币/无代码产品/不完整截图等边界。
  • references/incremental_import_sop.md增量导入完整 SOP:导入端硬契约、导出文件格式解码、ID 注册表提取、逐实体对齐规则、增量文件只含新行、工作文件 JSON 结构。增量导入时整本照做。
  • references/value_aliases.md中文化易翻车 4 个真实例子:补充 enum_reference.md 的实战坑(现金类现金第三方平台第三方场内基金ETF受限资产受限)。枚举完整合法取值以 enum_reference.md 为准;本表专门记"看着像但非法"的陷阱。
  • scripts/build_excel.py — 把累计 JSON 封装为标准 5-Sheet xlsx(英文表头,含结构自检与默认值补全)。
  • scripts/build_excel_cn.py — 同上但中文表头 + 中文枚举值(对齐 constants.js 别名,用户中文模板用这个)。
  • scripts/check_value_aliases.py交付前必跑:校对输出 Excel 的全部枚举字段。合法值优先实时读 constants.js(仓库内运行时自动回溯查找,也可 --constants 指定);脱离仓库运行时自动使用技能内置快照 assets/enums.json。非合法值立即报错并点名行号+字段+当前值+建议。
  • scripts/extract_ids.py增量导入第一步:从小程序导出的 Excel/JSON 提取已有 account/asset/holding/liability 的 ID 注册表,防止空 ID 被导入端随机生成新 ID 造成重复实体。
  • scripts/inspect_xlsx.py — 排查辅助:打印任意 xlsx 的 Sheet/表头/枚举实际取值,诊断格式问题用。
  • scripts/gen_enum_reference.js维护用(需本仓库):从 constants.js 自动生成 references/enum_reference.md。项目枚举有变动时重跑即可,勿手改 md。
  • scripts/verify_schema_headers.js维护用(需本仓库):比对 excel_schema.md 的「列名/中文表头/列顺序/Sheet名」与 constants.jsSHEET_SCHEMAS 是否一字不差。改了 excel_schema.md 或 constants.js 后必跑。
  • assets/enums.json — 枚举合法值内置快照(由 check_value_aliases.py --dump-snapshot 在仓库内生成):技能脱离仓库分发时 check_value_aliases.py 的回退数据源。小程序枚举变更后需在仓库内重新生成。