# 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` 下的规则命中计划、流水样本与上传状态复用逻辑保持不变。