40 lines
1.7 KiB
Markdown
40 lines
1.7 KiB
Markdown
⚠️ 本文档已过时,仅留档备查,请勿删除。该历史任务已落地;当前状态见 `../任务清单.md`。
|
|
|
|
# [P0] 持久化层与不可变银行导入基础
|
|
|
|
## 背景
|
|
|
|
当前 `/api/parse` 只在临时文件中解析并返回摘要,随后删除文件。公司、账户、交易、导入批次和异常均无数据库记录,页面“原始文件已保留”的文案与实际行为不一致。
|
|
|
|
## 范围
|
|
|
|
- 选择并记录数据库、迁移工具和文件存储方案。
|
|
- 建立公司、账户、源文件、导入批次、工作表批次、规范化源行、解析异常和审计字段的最小模型。
|
|
- 源文件在解析前计算内容哈希并不可变保存。
|
|
- 每条规范化交易保存源文件、工作表、原始行号和模板版本。
|
|
- 实现文件级与源行级幂等,重复上传不重复影响后续计算。
|
|
- 定义失败状态、重试状态和事务边界。
|
|
|
|
## 约束
|
|
|
|
- 原始文件和源行不能被静默修改或覆盖。
|
|
- 金额继续使用十进制定点类型,不能转为二进制浮点。
|
|
|
|
## 验收标准
|
|
|
|
- [ ] 空数据库可通过迁移命令完整创建,重复执行无副作用。
|
|
- [ ] 上传成功后重启服务,原文件、批次、工作表和源行仍可查询。
|
|
- [ ] 同一文件重复上传返回已存在批次或明确重复状态,不创建第二份有效事实。
|
|
- [ ] 每条源行可反查文件哈希、工作表、行号和解析模板版本。
|
|
- [ ] 解析失败也保留异常批次和诊断,但不产生已确认交易。
|
|
- [ ] 有数据库约束和自动化测试证明幂等与不可变性。
|
|
|
|
## 测试
|
|
|
|
- 迁移向前/回滚测试。
|
|
- 重复文件、重复行、解析失败、服务重启后的集成测试。
|
|
|
|
## 依赖
|
|
|
|
Issue 001。
|