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