财务Windows 应用
报销分类小助手
把同事提交的报销单按类型自动归类、合计金额,月底关账省半天。
要解决的问题
每月几百张报销单,类目五花八门:差旅、餐饮、办公、培训……手工归类容易错,月底总要返工。
解决方案
做一个本地小工具:把报销明细 Excel 拖进去,按关键字+金额规则自动分类,未识别的列在一栏让你点几下确认。
预期效果
- 左侧导入 Excel,右侧实时显示分类结果。
- 十几个常见类目预置规则,可以增删改。
- 未识别项独立一栏,下拉选类目即可,规则记住下次自动用。
- 底部按类目汇总金额,一键导出分类后的 Excel。
- 全部本地运行,不上传。
示例输入字段
复制提示词前,把你的 Excel / CSV 表头改成这些字段名,或把真实表头一起贴给 Codex。
订单号金额交易时间摘要/备注状态
可直接使用的提示词
你是一名擅长本地桌面小工具的资深工程师。请帮我做一个本地运行的桌面小工具,用户是公司财务,关注业务结果和操作体验。
【目标】
把每月几百行报销明细按类目自动分类、汇总金额,未识别的让用户点几下补齐。
【平台与技术】
- Windows 10/11 + macOS 桌面应用
- Electron + React + TypeScript
- 表格用 SheetJS;规则存本地 JSON
【核心功能】
1. 主界面:左侧"导入报销 Excel",支持拖拽;右侧表格实时显示分类结果。
2. 默认 12 个类目(差旅交通、住宿、餐饮、办公用品、培训、招待、通讯、快递、福利、设备、软件、其他),每个类目有关键字规则和金额范围规则,可在"规则设置"页里改。
3. 自动匹配:备注/摘要含关键字即归类;多条命中按优先级;都不命中归"待确认"。
4. "待确认"列表里每行下拉选择类目,并可勾选"记住为新规则"。
5. 底部汇总卡片:每类合计金额、占比、笔数。
6. "导出已分类 Excel"按钮,文件名 "报销分类-YYYY-MM.xlsx"。
【UI 最低视觉标准】
- 标题 ≥ 20px 加粗,正文 ≥ 14px,辅助文字 ≥ 12px
- 元素间距 ≥ 8px,区块间距 ≥ 16px,页面边距 ≥ 24px
- 主色、辅色、强调色不超过 3 个,用 CSS 变量统一管理
- 所有按钮/可点击元素有 hover 和 active 状态反馈
- 空状态显示引导文案和操作按钮,不要留白屏
- 加载状态用 spinner 或骨架屏,不要无反馈
- 错误状态用红色边框/文字 + 具体原因 + 重试按钮
- 圆角统一(推荐 6-8px),阴影柔和(0 2px 8px rgba(0,0,0,0.1))
【约束】
- 收到提示词后直接动手实现,不要先问方案、不要等确认。
- 全部本地处理,数据不上传外部服务。
- 缺真实数据时先造脱敏 sample-data,不等用户提供文件才开工。
- 不引入不存在的 npm 包;不确定时先查 npm view。
- 不写死 API Key、绝对路径、个人邮箱或内网地址。
- 输出不覆盖原文件,冲突加时间后缀。
- 同一问题 3 次失败 → 降级边缘功能,先交付主流程。
- 每个功能写完立即运行验证,不要攒到最后才测。
【项目结构】
├── src/main/ # Electron 主进程(main.ts, preload.ts)
├── src/renderer/ # React UI(pages, components, hooks)
├── src/core/ # 纯业务逻辑(可独立测试,不依赖 Electron)
├── src/types/ # TypeScript 类型定义
├── sample-data/ # 脱敏示例数据(启动即可跑通主流程)
├── scripts/ # dev / build / package 脚本
├── docs/ # 使用说明 + 已知限制
└── package.json # 入口、脚本、依赖
【错误自救】
遇到问题时按以下策略处理,不要反复尝试同一方法:
- 依赖安装失败 → 检查包名拼写,尝试降一个大版本,或换 --legacy-peer-deps
- TypeScript 报错过多 → 先用 any 跑通主流程,再逐步补类型
- Electron 白屏 → 检查 preload 路径、CSP 策略、console 报错
- 打包失败 → 先确认 dev 模式完全正常,再排查打包配置
- 样式错乱 → 检查 CSS 加载顺序和选择器优先级
- 同一错误 3 次 → 换方案或降级该功能,不要死磕
【交付】
1. 搭建 Electron 框架,实现 Excel 导入和 12 类目规则引擎。
2. 完成自动分类、待确认列表和规则学习功能。
3. 实现汇总卡片、导出功能,打包 .exe,附使用说明。
验收清单(全部通过才算完成):
□ 双击启动,第一屏是主工作台
□ 导入示例 Excel 后自动分类结果正确
□ 待确认项可手动分类并记住规则
□ 导出文件名含日期,数据完整
□ 路径含中文/空格时正常工作
本地处理;桌面工具风格;中文沟通。
【高质量交付补充】
若上文要求等待确认,改为:≤8 行摘要后直接实现、运行、修复、验证;只因真实文件、账号、证书或不可逆操作停下。
【快速启动协议】
收到提示词后立即按以下顺序执行,不要先输出方案等确认:
1. 创建项目目录,初始化 package.json + tsconfig.json
2. 安装核心依赖:electron, react, react-dom, typescript, @types/react
3. 写最小 main.ts(创建窗口)+ index.html + renderer 入口,确认窗口能弹出
4. 创建 sample-data/ 目录,放入贴近业务的脱敏示例数据
5. 按功能逐个实现,每完成一个功能立即运行验证
6. 最后补文档、打包脚本、使用说明
【桌面交付契约】
- 交付本地可运行应用,不是方案;第一屏就是主工作台。M1≤15 分钟先出可启动窗口+示例数据/试用模式,M2 接通真实主流程,M3 补异常/UI/隐私,M4 测试+打包+文档。
- 没有用户真实文件时,先创建贴近业务的脱敏 sample-data 并继续推进。
- 每个里程碑卡住时的降级策略:M1 卡住 → 换更简单的实现方式先出窗口;M2 卡住 → 先跑通核心 3 步,边缘路径后面补;同一问题 3 次失败 → 降级或禁用边缘功能,先交付主流程。
- 每次汇报≤6行:完成、验证、跳过原因、下一步+预计时间,让进度清楚。
- 用业务语言写按钮、错误和说明;支持拖拽+系统打开/保存;空/错格式/取消/无权限/大文件/重名冲突都友好处理,不暴露堆栈。
- 路径兼容中文、空格、括号、长路径和 Windows/macOS 分隔差异;Windows 快捷键用 Ctrl/Alt,macOS 用 Command/Option。
- 默认离线、本地处理;不覆盖原文件;不写死密钥、绝对路径、个人邮箱或内网地址。
- 项目分层:desktop shell / controlled API / UI / core / tests / sample-data / docs;IPC 白名单化,UI 不直接执行本地命令。
- 真实接线:导入、预览、生成/保存、导出、错误状态都可用;不把 TODO、空函数、未用大组件或假数据当完成。
【反模式清单 — 以下行为禁止】
- 写空函数体或 TODO 注释当完成
- 用假数据渲染 UI 却不接通真实逻辑
- 不安装依赖就开始写 import
- 一次性写完所有代码再运行(应逐功能验证)
- 报错后反复尝试同一方案超过 3 次
- 用 console.log 代替真实的错误处理 UI
- 忽略空状态和加载状态
【DoD / 停止 Vibe Coding】
完成标准(逐条检查,全部通过才停手):
□ 能启动;示例数据跑通真实主流程并产生产物
□ 异常路径友好(空数据、错格式、取消、重名冲突 → 不闪退)
□ UI 符合最低视觉标准(字号层级清晰、间距舒适、空状态有引导)
□ lint/typecheck/test/build 通过
□ 已用 sample-data 完成 启动 → 主流程 → 导出/保存 烟测,并记录结果
□ 有 setup/dev/package 脚本、README、使用说明、已知限制、示例数据
满足即停,新想法写 v2;同一 bug 3 次失败就降级或禁用边缘功能,先交付主流程。复制之后
1
打开 Codex 桌面版,新建任务
2
整段粘贴到对话框,发送
3
让 Codex 实现并验证,再根据需要调整名称、字段和按钮