a3bb78e06b
Security Quality Gate / npm audit, Bandit, pip-audit, detect-secrets (pull_request) Failing after 16m35s
2.6 KiB
2.6 KiB
AI 合同平台 V2 - 错误监控功能闭环记录
日期:2026-06-26
背景
对照《AI 合同平台 V2 重构版开发方案》Phase 7 安全、性能与上线准备,本轮实现错误监控功能。
已完成内容
Trace ID 跨服务串联
新增模块(logging.py):
_request_trace_id: ContextVar 存储当前请求的 trace_idset_trace_id()/get_trace_id(): 设置/获取 trace_idset_request_tenant_id()/get_request_tenant_id(): 设置/获取租户ID
中间件实现:
- 自动生成
trace-{uuid}格式的 trace_id - 支持请求头传入
X-Trace-Id - 响应头返回
X-Trace-Id
结构化日志
新增类:
StructuredFormatter: JSON 格式日志格式化器StructuredLogger: 支持额外字段的日志器
日志格式:
{
"timestamp": "2026-06-26T07:30:00Z",
"level": "INFO",
"logger": "yuqei_contract_api",
"message": "Request completed: GET /health",
"trace_id": "trace-abc123",
"tenant_id": "tenant-001",
"extra": {"latency_ms": 12.5, "status_code": 200}
}
API Latency 监控
数据模型:
ApiLatencyMetric: 单次请求延迟指标ApiLatencySummary: 聚合延迟摘要(avg, p50, p95, p99)ApiLatencyPage: 延迟指标分页HealthMetrics: 健康指标
API 接口:
GET /api/v1/metrics/health: 健康指标(uptime, request_count, error_count, avg_latency)GET /api/v1/metrics/latency: 延迟指标聚合GET /api/v1/metrics/errors: 错误日志列表
错误日志收集
数据模型:
ErrorLog: 错误日志(trace_id, error_type, error_message, stack_trace)ErrorLogPage: 错误日志分页
功能:
- 自动捕获异常并记录
- 支持按 trace_id 过滤
- 记录请求上下文(tenant_id, endpoint, method)
测试
test_monitoring.py:
test_trace_id_in_response: 响应头包含 trace_idtest_trace_id_from_request_header: 请求头传入 trace_idtest_health_metrics: 健康指标接口test_latency_metrics: 延迟指标接口test_latency_metrics_filtered: 按端点过滤test_error_logs: 错误日志接口test_error_logs_filtered_by_trace_id: 按 trace_id 过滤
验证结果
python -m pytest yuqei-contract-platform/services/contract-api/tests -q # 43 passed
Phase 7 进度
| 功能 | 状态 |
|---|---|
| 租户隔离 | ✅ |
| 审计完整性 | ✅ |
| 数据备份和恢复 | ✅ |
| 错误监控 | ✅(本轮) |
| 权限矩阵 | 🔄 |
| 性能压测 | 🔄 |
| 安全扫描 | 🔄 |
| 部署文档 | 🔄 |
后续建议
下一步继续 Phase 7 的权限矩阵功能,实现角色权限配置和接口级鉴权。