# 2026-03-19 LSFX Mock 单员工域修复记录

## 背景

- 现象：新建项目后导入单个流水文件，解析完成后结果总览出现两个员工信息。
- 预期：单个上传文件只应归属到一个员工域，结果总览最多出现该员工本人对应的一条员工信息。

## 根因

- `lsfx-mock-server/services/statement_rule_samples.py` 中的大额交易固定样本同时混入了两名员工及两名家属的证件号。
- `lsfx-mock-server/services/statement_service.py` 中的随机噪声流水继续从四个证件号的全量池随机取值。
- 因此同一个 `logId` 返回的流水天然会覆盖两个员工域，主系统按 `cret_no` 聚合后就会出现两个员工。

## 修改内容

### Mock 造数收敛为单员工域

- 在 `lsfx-mock-server/services/statement_rule_samples.py` 新增 `IDENTITY_SCOPES`。
- 新增 `resolve_identity_scope(log_id)` 和 `resolve_identity_cards(log_id)`，按 `logId` 稳定选择单个员工域。
- 将固定命中样本从“跨两个员工域混用”改为“只使用当前员工域的员工本人及家属”。

### 随机噪声不再污染其他员工

- 在 `lsfx-mock-server/services/statement_service.py` 中改为按 `logId` 读取允许的证件号范围。
- 随机噪声流水的 `cretNo` 仅能从当前员工域的两张证件号中选择。

### 测试补充

- 在 `lsfx-mock-server/tests/test_statement_service.py` 增加“同一 `logId` 只能落在单一员工域”测试。
- 调整大额交易样本测试，改为基于 `resolve_identity_scope(log_id)` 校验，避免继续依赖固定第二名员工。

## 验证结果

- 执行：
  - `cd lsfx-mock-server && python3 -m pytest tests/test_statement_service.py tests/test_file_service.py tests/integration/test_full_workflow.py -q`
- 结果：
  - `17 passed`

## 影响说明

- 本次只修改 `lsfx-mock-server` 的 mock 造数逻辑，不影响主系统 Java/Vue 代码。
- 已存在库中的历史测试项目数据不会自动回写；如需验证页面结果，需要重启 mock 服务后重新上传文件生成新流水。
