Files
ai-contract-platform/project-docs/V2-error-monitoring-2026-06-26.md
yuqei a3bb78e06b
Security Quality Gate / npm audit, Bandit, pip-audit, detect-secrets (pull_request) Failing after 16m35s
release: freeze V2 release candidate
2026-07-12 15:32:24 +08:00

2.6 KiB
Raw Permalink Blame History

AI 合同平台 V2 - 错误监控功能闭环记录

日期:2026-06-26

背景

对照《AI 合同平台 V2 重构版开发方案》Phase 7 安全、性能与上线准备,本轮实现错误监控功能。

已完成内容

Trace ID 跨服务串联

新增模块(logging.py):

  • _request_trace_id: ContextVar 存储当前请求的 trace_id
  • set_trace_id() / get_trace_id(): 设置/获取 trace_id
  • set_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_id
  • test_trace_id_from_request_header: 请求头传入 trace_id
  • test_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 的权限矩阵功能,实现角色权限配置和接口级鉴权。