# 征信解析 Mock Server 后端验证记录

## 自动化验证

### 1. Payload Service 红绿验证

```bash
cd lsfx-mock-server
python3 -m pytest tests/test_credit_payload_service.py -v
```

- 首次执行结果：失败
  - 原因：`services.credit_payload_service` 不存在
- 实现后再次执行结果：通过

### 2. 接口层红绿验证

```bash
cd lsfx-mock-server
python3 -m pytest tests/test_credit_api.py -v
```

- 首次执行结果：失败
  - 原因：`/xfeature-mngs/conversation/htmlEval` 尚未注册，返回 `404`
- 实现后再次执行结果：通过

### 3. 启动注册验证

```bash
cd lsfx-mock-server
python3 -m pytest tests/test_startup.py -v
```

- 首次执行结果：失败
  - 原因：主应用尚未注册征信解析路由
- 实现后再次执行结果：通过

### 4. 目标回归验证

```bash
cd lsfx-mock-server
python3 -m pytest tests/test_credit_payload_service.py tests/test_credit_api.py tests/test_startup.py -v
```

- 结果：`10 passed`

## 手工冒烟验证

### 启动过程

首次按设计默认端口 `8000` 冒烟时，发现本机已有其他 Python 进程占用 `8000`，`curl` 实际命中了外部已有服务而非当前 worktree 内的 Mock 服务。为避免环境噪音，本次手工验证改用 `18000` 端口前台启动当前应用：

```bash
cd lsfx-mock-server
PORT=18000 python3 main.py
```

启动日志确认：

- `Application startup complete.`
- `Uvicorn running on http://0.0.0.0:18000`

### 健康检查验证

```bash
curl -s http://127.0.0.1:18000/credit/health
```

返回结果：

```json
{"status":"healthy","service":"credit-mock"}
```

### 征信解析接口验证

准备示例文件：

```bash
printf '<html></html>' > /tmp/sample-credit.html
```

执行请求：

```bash
curl -s -X POST http://127.0.0.1:18000/xfeature-mngs/conversation/htmlEval \
  -F model=LXCUSTALL \
  -F hType=PERSON \
  -F file=@/tmp/sample-credit.html
```

返回结果要点：

- `status_code` 为 `"0"`
- `message` 为 `"成功"`
- `payload` 包含 `lx_header`、`lx_debt`、`lx_publictype`
- `lx_header.report_time` 为日期格式字符串
- `lx_debt` 下 21 个字段、`lx_publictype` 下 6 个字段均已生成

### 服务停止

本次手工验证采用前台启动，验证完成后已通过 `Ctrl+C` 停止服务，确认未残留由本次验证启动的 Mock 进程。

## 结论

- 征信字段 schema 读取、稳定随机 payload 生成、错误码模拟、主应用路由注册均符合计划要求。
- 自动化测试与手工冒烟验证均通过。
- 本地环境存在外部进程占用 `8000` 的情况，但不影响当前实现正确性；本次已通过切换到空闲端口完成隔离验证。
