补充Mock主体账号绑定实施记录
This commit is contained in:
@@ -8,6 +8,22 @@
|
|||||||
|
|
||||||
**Tech Stack:** Python 3, FastAPI, pytest, httpx TestClient
|
**Tech Stack:** Python 3, FastAPI, pytest, httpx TestClient
|
||||||
|
|
||||||
|
## 执行结果
|
||||||
|
|
||||||
|
- 2026-03-18 已按计划完成 Task 1 至 Task 5,功能实现、实施记录与最终验证均已落地。
|
||||||
|
- 代码提交顺序:
|
||||||
|
- `0120d09` `收敛Mock文件记录主体账号绑定模型`
|
||||||
|
- `6fb7287` `让拉取本行信息链路复用Mock主体账号绑定`
|
||||||
|
- `0a85c09` `统一Mock上传状态主体账号绑定优先级`
|
||||||
|
- `5195617` `让Mock流水查询复用logId主体账号绑定`
|
||||||
|
- 最终验证已通过:
|
||||||
|
- `python3 -m pytest tests/test_file_service.py -v`
|
||||||
|
- `python3 -m pytest tests/test_statement_service.py -v`
|
||||||
|
- `python3 -m pytest tests/test_api.py -v`
|
||||||
|
- `python3 -m pytest tests/integration/test_full_workflow.py -v`
|
||||||
|
- `python3 verify_implementation.py`
|
||||||
|
- 实施细节见 `docs/reports/implementation/2026-03-18-lsfx-logid-primary-binding-implementation.md`
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### Task 1: 收敛 FileRecord 为单一主体账号绑定模型
|
### Task 1: 收敛 FileRecord 为单一主体账号绑定模型
|
||||||
|
|||||||
@@ -0,0 +1,49 @@
|
|||||||
|
# LSFX Mock LogId 主体账号绑定实施记录
|
||||||
|
|
||||||
|
## 变更概述
|
||||||
|
|
||||||
|
- 在 `lsfx-mock-server/services/file_service.py` 为 `FileRecord` 增加 `primary_enterprise_name`、`primary_account_no`,统一维护 `logId -> 主体/账号` 单一主绑定。
|
||||||
|
- 上传文件、拉取本行信息两条链路都改为创建并保存完整 `FileRecord`,后续上传状态查询优先读取真实记录,未命中时才回退到 deterministic 生成。
|
||||||
|
- `lsfx-mock-server/services/statement_service.py` 改为按 `logId` 从 `FileService` 读取主绑定,并将 `leName`、`accountMaskNo` 统一注入分页流水结果。
|
||||||
|
- `lsfx-mock-server/routers/api.py` 改为让 `statement_service` 与 `file_service` 共享同一份 `FileService` 实例,确保上传状态接口与查流水接口使用同一组绑定数据。
|
||||||
|
- 补齐 `tests/test_file_service.py`、`tests/test_statement_service.py`、`tests/test_api.py`、`tests/integration/test_full_workflow.py` 回归测试,并在 `tests/conftest.py` 增加单例状态重置夹具,避免测试串扰。
|
||||||
|
|
||||||
|
## 联动结果
|
||||||
|
|
||||||
|
- 上传文件:创建 `FileRecord` 时同时生成主绑定,并同步回填 `accountsOfLog`、`uploadLogList`。
|
||||||
|
- 拉取本行信息:返回 `logId` 前即落库 `FileRecord`,后续 `bs/upload`、`getpendings`、`getBSByLogId` 都可复用同一主绑定。
|
||||||
|
- 上传状态:优先读取真实 `FileRecord`;只有当 `logId` 没有已存记录时,才走 deterministic fallback。
|
||||||
|
- 银行流水:优先从 `FileService` 读取 `primary_enterprise_name`、`primary_account_no`,统一写入每条流水的 `leName`、`accountMaskNo`。
|
||||||
|
|
||||||
|
## 优先级说明
|
||||||
|
|
||||||
|
- `FileService.get_upload_status()`:真实 `FileRecord` 优先,deterministic fallback 兜底。
|
||||||
|
- `StatementService` 主绑定解析:真实 `FileRecord` 优先,服务内 fallback 仅在记录不存在时生效。
|
||||||
|
- deterministic fallback 的时间字段、主体字段、账号字段都已改为基于 `logId` 的稳定生成,保证同一 `logId` 重复查询结果一致。
|
||||||
|
|
||||||
|
## 提交记录
|
||||||
|
|
||||||
|
- `0120d09` `收敛Mock文件记录主体账号绑定模型`
|
||||||
|
- `6fb7287` `让拉取本行信息链路复用Mock主体账号绑定`
|
||||||
|
- `0a85c09` `统一Mock上传状态主体账号绑定优先级`
|
||||||
|
- `5195617` `让Mock流水查询复用logId主体账号绑定`
|
||||||
|
|
||||||
|
## 验证记录
|
||||||
|
|
||||||
|
- `cd lsfx-mock-server && python3 -m pytest tests/test_file_service.py -v`
|
||||||
|
- `cd lsfx-mock-server && python3 -m pytest tests/test_statement_service.py -v`
|
||||||
|
- `cd lsfx-mock-server && python3 -m pytest tests/test_api.py -v`
|
||||||
|
- `cd lsfx-mock-server && python3 -m pytest tests/integration/test_full_workflow.py -v`
|
||||||
|
- `cd lsfx-mock-server && python3 verify_implementation.py`
|
||||||
|
|
||||||
|
## 验证结果
|
||||||
|
|
||||||
|
- `tests/test_file_service.py`:3 个用例全部通过。
|
||||||
|
- `tests/test_statement_service.py`:1 个用例通过。
|
||||||
|
- `tests/test_api.py`:14 个用例全部通过。
|
||||||
|
- `tests/integration/test_full_workflow.py`:4 个用例全部通过。
|
||||||
|
- `verify_implementation.py`:接口字段完整性与模板文件校验全部通过。
|
||||||
|
|
||||||
|
## 进程说明
|
||||||
|
|
||||||
|
- 本次验证仅运行 pytest 与 `verify_implementation.py`,未启动 `python main.py` 或 `uvicorn`,无需额外停止服务进程。
|
||||||
Reference in New Issue
Block a user