29 lines
2.0 KiB
Markdown
29 lines
2.0 KiB
Markdown
|
|
# Mock 服务随机 logId 实施记录
|
||
|
|
|
||
|
|
## 问题背景
|
||
|
|
- 2026-03-20 联调过程中,`lsfx-mock-server` 的 `logId` 仍使用进程内递增方式分配。
|
||
|
|
- 仓库文档与接口预期要求 Mock 返回随机 `logId`,避免联调时对顺序值形成隐式依赖。
|
||
|
|
|
||
|
|
## 根因分析
|
||
|
|
- [`lsfx-mock-server/services/file_service.py`](/Users/wkc/Desktop/ccdi/ccdi/lsfx-mock-server/services/file_service.py) 中,`upload_file()` 与 `fetch_inner_flow()` 都直接通过 `self.log_counter += 1` 生成 `logId`。
|
||
|
|
- 现有测试只覆盖了 `logId` 落在 `10000-99999` 区间内,没有约束“冲突时需要重试并避让已有记录”。
|
||
|
|
|
||
|
|
## 本次修改
|
||
|
|
- 在 [`lsfx-mock-server/tests/test_file_service.py`](/Users/wkc/Desktop/ccdi/ccdi/lsfx-mock-server/tests/test_file_service.py) 先新增红灯测试 `test_generate_log_id_should_retry_when_random_value_conflicts`。
|
||
|
|
- 固定随机值第一次命中已存在 `logId` 时必须重试。
|
||
|
|
- 同步把行内流水测试中的旧递增断言改为随机区间断言。
|
||
|
|
- 在 [`lsfx-mock-server/services/file_service.py`](/Users/wkc/Desktop/ccdi/ccdi/lsfx-mock-server/services/file_service.py) 新增统一 `_generate_log_id()`。
|
||
|
|
- 在 `10000-99999` 区间内随机生成。
|
||
|
|
- 若命中 `file_records` 中已存在的 `logId`,则继续重试直到拿到未占用值。
|
||
|
|
- `upload_file()` 与 `fetch_inner_flow()` 均切换为调用该方法。
|
||
|
|
|
||
|
|
## 验证结果
|
||
|
|
- `python3 -m pytest lsfx-mock-server/tests/test_file_service.py -k "fetch_inner_flow_persists_primary_binding_record or generate_log_id_should_retry_when_random_value_conflicts" -v`
|
||
|
|
- 结果:`2 passed`
|
||
|
|
- `python3 -m pytest lsfx-mock-server/tests/test_file_service.py lsfx-mock-server/tests/test_statement_service.py lsfx-mock-server/tests/test_api.py lsfx-mock-server/tests/integration/test_full_workflow.py -v`
|
||
|
|
- 结果:`39 passed, 20 warnings`
|
||
|
|
|
||
|
|
## 实施结果
|
||
|
|
- Mock 服务的新建上传记录与行内流水记录已改为随机 `logId`。
|
||
|
|
- 同一 `logId` 下的规则命中计划、流水样本与上传状态复用逻辑保持不变。
|