Files
ccdi/docs/plans/misc/2026-03-19-lsfx-mock-db-backed-identity-selection-implementation.md

55 lines
2.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# LSFX Mock 数据库身份绑定实施计划
> **For agentic workers:** REQUIRED: Use superpowers:subagent-driven-development (if subagents available) or superpowers:executing-plans to implement this plan. Steps use checkbox (`- [ ]`) syntax for tracking.
**Goal:**`lsfx-mock-server` 在创建 `logId` 时从员工信息库随机选择一个员工,并读取该员工亲属,后续同一 `logId` 的流水仅使用这组数据库身份。
**Architecture:** 在 Mock 服务中新增一个只读身份仓储,负责从 `ccdi_base_staff``ccdi_staff_fmy_relation` 读取员工及亲属。`FileService` 在创建 `FileRecord` 时写入选中的员工/亲属身份,`StatementService` 只复用该记录中的证件号,不再依赖内置固定身份证池。
**Tech Stack:** FastAPI, Python 3.9, PyMySQL, pytest
---
### Task 1: 补数据库身份绑定失败测试
**Files:**
- Modify: `lsfx-mock-server/tests/test_file_service.py`
- Modify: `lsfx-mock-server/tests/test_statement_service.py`
- [ ] Step 1: 写出 `FileService` 需要保存员工与亲属身份的失败测试
- [ ] Step 2: 运行对应测试,确认当前实现失败
- [ ] Step 3: 写出 `StatementService` 只能使用该员工及其亲属证件号的失败测试
- [ ] Step 4: 运行对应测试,确认当前实现失败
### Task 2: 新增只读身份仓储
**Files:**
- Create: `lsfx-mock-server/services/staff_identity_repository.py`
- Modify: `lsfx-mock-server/config/settings.py`
- Modify: `lsfx-mock-server/requirements.txt`
- [ ] Step 1: 定义员工/亲属身份查询结果结构与仓储接口
- [ ] Step 2: 接入 MySQL 只读查询配置
- [ ] Step 3: 实现“随机取一个有身份证号员工 + 读取该员工有效亲属”的最小查询逻辑
- [ ] Step 4: 保持仓储可被测试替身替换
### Task 3: 将 logId 与数据库身份绑定
**Files:**
- Modify: `lsfx-mock-server/services/file_service.py`
- Modify: `lsfx-mock-server/services/statement_service.py`
- Modify: `lsfx-mock-server/routers/api.py`
- [ ] Step 1: 在 `FileRecord` 中增加员工/亲属身份字段
- [ ] Step 2: 在上传文件与拉取行内流水时写入随机员工及其亲属
- [ ] Step 3: 在流水生成阶段只使用 `FileRecord` 中的员工/亲属证件号
- [ ] Step 4: 保留 deterministic fallback但不影响真实记录链路
### Task 4: 回归验证与文档沉淀
**Files:**
- Create: `docs/reports/implementation/2026-03-19-lsfx-mock-db-backed-identity-selection-fix.md`
- [ ] Step 1: 运行 `lsfx-mock-server` 相关测试
- [ ] Step 2: 记录根因、改动点和验证结果