注册征信解析Mock路由并补充说明
This commit is contained in:
@@ -1,12 +1,13 @@
|
|||||||
# 流水分析 Mock 服务器
|
# 流水分析 Mock 服务器
|
||||||
|
|
||||||
基于 Python + FastAPI 的独立 Mock 服务器,用于模拟流水分析平台的 7 个核心接口。
|
基于 Python + FastAPI 的独立 Mock 服务器,用于模拟流水分析平台的 7 个核心接口,并提供征信解析 Mock 能力。
|
||||||
|
|
||||||
## ✨ 特性
|
## ✨ 特性
|
||||||
|
|
||||||
- ✅ **完整的接口模拟** - 实现所有 7 个核心接口
|
- ✅ **完整的接口模拟** - 实现所有 7 个核心接口
|
||||||
- ✅ **文件解析延迟** - 使用 FastAPI 后台任务模拟 4 秒解析延迟
|
- ✅ **文件解析延迟** - 使用 FastAPI 后台任务模拟 4 秒解析延迟
|
||||||
- ✅ **错误场景触发** - 通过 `error_XXXX` 标记触发所有 8 个错误码
|
- ✅ **错误场景触发** - 通过 `error_XXXX` 标记触发所有 8 个错误码
|
||||||
|
- ✅ **征信解析 Mock** - 支持稳定随机生成三大主题域征信 `payload`
|
||||||
- ✅ **自动 API 文档** - Swagger UI 和 ReDoc 自动生成
|
- ✅ **自动 API 文档** - Swagger UI 和 ReDoc 自动生成
|
||||||
- ✅ **配置驱动** - JSON 模板文件,易于修改响应数据
|
- ✅ **配置驱动** - JSON 模板文件,易于修改响应数据
|
||||||
- ✅ **零配置启动** - 开箱即用,无需数据库
|
- ✅ **零配置启动** - 开箱即用,无需数据库
|
||||||
@@ -100,6 +101,44 @@ response = requests.post(
|
|||||||
)
|
)
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### 征信解析 Mock
|
||||||
|
|
||||||
|
```bash
|
||||||
|
curl -s -X POST http://localhost:8000/xfeature-mngs/conversation/htmlEval \
|
||||||
|
-F model=LXCUSTALL \
|
||||||
|
-F hType=PERSON \
|
||||||
|
-F file=@./sample-credit.html
|
||||||
|
```
|
||||||
|
|
||||||
|
成功时返回:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"message": "成功",
|
||||||
|
"status_code": "0",
|
||||||
|
"payload": {
|
||||||
|
"lx_header": {},
|
||||||
|
"lx_debt": {},
|
||||||
|
"lx_publictype": {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
调试错误码时,可在 `model` 中追加错误标记:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
curl -s -X POST http://localhost:8000/xfeature-mngs/conversation/htmlEval \
|
||||||
|
-F model=error_ERR_10001 \
|
||||||
|
-F hType=PERSON \
|
||||||
|
-F file=@./sample-credit.html
|
||||||
|
```
|
||||||
|
|
||||||
|
健康检查:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
curl -s http://localhost:8000/credit/health
|
||||||
|
```
|
||||||
|
|
||||||
### 错误场景测试
|
### 错误场景测试
|
||||||
|
|
||||||
```python
|
```python
|
||||||
@@ -213,6 +252,8 @@ pytest tests/ -v --cov=. --cov-report=html
|
|||||||
| 4 | POST | `/watson/api/project/upload/getpendings` | 检查解析状态 |
|
| 4 | POST | `/watson/api/project/upload/getpendings` | 检查解析状态 |
|
||||||
| 5 | POST | `/watson/api/project/batchDeleteUploadFile` | 删除文件 |
|
| 5 | POST | `/watson/api/project/batchDeleteUploadFile` | 删除文件 |
|
||||||
| 6 | POST | `/watson/api/project/getBSByLogId` | 获取银行流水 |
|
| 6 | POST | `/watson/api/project/getBSByLogId` | 获取银行流水 |
|
||||||
|
| 7 | POST | `/xfeature-mngs/conversation/htmlEval` | 征信解析 Mock |
|
||||||
|
| 8 | GET | `/credit/health` | 征信解析健康检查 |
|
||||||
|
|
||||||
## ⚠️ 错误码列表
|
## ⚠️ 错误码列表
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import argparse
|
|||||||
import os
|
import os
|
||||||
|
|
||||||
from fastapi import FastAPI
|
from fastapi import FastAPI
|
||||||
from routers import api
|
from routers import api, credit_api
|
||||||
from config.settings import settings
|
from config.settings import settings
|
||||||
|
|
||||||
# 创建 FastAPI 应用实例
|
# 创建 FastAPI 应用实例
|
||||||
@@ -16,7 +16,7 @@ app = FastAPI(
|
|||||||
description="""
|
description="""
|
||||||
## 流水分析 Mock 服务器
|
## 流水分析 Mock 服务器
|
||||||
|
|
||||||
模拟流水分析平台的 7 个核心接口,用于开发和测试。
|
模拟流水分析平台的 7 个核心接口,并补充征信解析接口,用于开发和测试。
|
||||||
|
|
||||||
### 主要功能
|
### 主要功能
|
||||||
|
|
||||||
@@ -26,6 +26,7 @@ app = FastAPI(
|
|||||||
- **解析状态** - 轮询检查文件解析状态
|
- **解析状态** - 轮询检查文件解析状态
|
||||||
- **文件删除** - 批量删除上传的文件
|
- **文件删除** - 批量删除上传的文件
|
||||||
- **流水查询** - 分页获取银行流水数据
|
- **流水查询** - 分页获取银行流水数据
|
||||||
|
- **征信解析** - 上传 HTML 并返回结构化征信 payload
|
||||||
|
|
||||||
### 错误模拟
|
### 错误模拟
|
||||||
|
|
||||||
@@ -39,6 +40,7 @@ app = FastAPI(
|
|||||||
2. 上传文件: POST /watson/api/project/remoteUploadSplitFile
|
2. 上传文件: POST /watson/api/project/remoteUploadSplitFile
|
||||||
3. 轮询解析状态: POST /watson/api/project/upload/getpendings
|
3. 轮询解析状态: POST /watson/api/project/upload/getpendings
|
||||||
4. 获取流水: POST /watson/api/project/getBSByLogId
|
4. 获取流水: POST /watson/api/project/getBSByLogId
|
||||||
|
5. 征信解析: POST /xfeature-mngs/conversation/htmlEval
|
||||||
""",
|
""",
|
||||||
version=settings.APP_VERSION,
|
version=settings.APP_VERSION,
|
||||||
docs_url="/docs",
|
docs_url="/docs",
|
||||||
@@ -47,6 +49,7 @@ app = FastAPI(
|
|||||||
|
|
||||||
# 包含 API 路由
|
# 包含 API 路由
|
||||||
app.include_router(api.router, tags=["流水分析接口"])
|
app.include_router(api.router, tags=["流水分析接口"])
|
||||||
|
app.include_router(credit_api.router, tags=["征信解析接口"])
|
||||||
|
|
||||||
|
|
||||||
@app.get("/", summary="服务根路径")
|
@app.get("/", summary="服务根路径")
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
|
from main import app
|
||||||
from main import parse_args as parse_main_args
|
from main import parse_args as parse_main_args
|
||||||
from dev import parse_args as parse_dev_args
|
from dev import parse_args as parse_dev_args
|
||||||
|
|
||||||
@@ -17,3 +18,10 @@ def test_main_parse_args_should_accept_all_mode():
|
|||||||
def test_dev_parse_args_should_reject_invalid_mode():
|
def test_dev_parse_args_should_reject_invalid_mode():
|
||||||
with pytest.raises(SystemExit):
|
with pytest.raises(SystemExit):
|
||||||
parse_dev_args(["--rule-hit-mode", "invalid"])
|
parse_dev_args(["--rule-hit-mode", "invalid"])
|
||||||
|
|
||||||
|
|
||||||
|
def test_app_should_register_credit_mock_routes():
|
||||||
|
paths = {route.path for route in app.routes}
|
||||||
|
|
||||||
|
assert "/xfeature-mngs/conversation/htmlEval" in paths
|
||||||
|
assert "/credit/health" in paths
|
||||||
|
|||||||
Reference in New Issue
Block a user