You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

3.9 KiB

Payment Service 文档技术栈合规性修复

日期: 2026-01-29
类型: 文档更新
影响范围: payment-service.md 文档

修复内容

1. 文档更新

已完成:更新 docs/requirements/backend/04-services/user/payment-service.md

主要变更

  • 日志系统:从 loguru 改为标准库 logging
  • 依赖版本:固定版本号(wechatpayv3==1.2.6, python-alipay-sdk==3.7.0
  • 配置类:添加 Pydantic Field 验证和 extra="forbid"
  • 异常处理:使用项目自定义异常(PaymentError, ValidationError
  • 类型注解:金额使用 Decimal,定义 PaymentResult TypedDict
  • 依赖注入:补充 FastAPI Depends 使用说明和完整示例
  • 测试文档:添加单元测试和集成测试示例

2. 依赖更新

已完成:更新 server/requirements.txt

变更

- # 日志
- loguru==0.7.2
+ # 日志(使用标准库 logging,无需额外依赖)

- # 支付 SDK
- wechatpayv3>=1.2.0
- python-alipay-sdk>=3.0.0
+ # 支付 SDK
+ wechatpayv3==1.2.6
+ python-alipay-sdk==3.7.0

发现的全局问题

⚠️ 重要发现:项目中大量使用了 loguru,需要全局替换为标准库 logging

受影响的文件(共 20+ 个):

  • app/services/*.py - 所有服务层
  • app/api/v1/*.py - 所有 API 路由
  • app/repositories/*.py - 所有仓储层
  • app/tasks/*.py - 所有 Celery 任务
  • app/core/*.py - 核心模块
  • app/migrations/*.py - 数据库迁移脚本

后续工作

阶段 1:创建日志迁移计划(优先级:高)

需要创建一个全局的日志系统迁移计划:

  1. 评估影响范围

    • 统计所有使用 loguru 的文件
    • 分析日志配置和格式化需求
    • 确定迁移优先级
  2. 设计标准日志配置

    • 基于 Python logging 模块
    • 保持与 loguru 相似的功能(结构化日志、日志轮转等)
    • 统一日志格式和级别
  3. 分批迁移

    • 优先迁移核心模块(app/core/logging.py
    • 然后迁移服务层和 API 层
    • 最后迁移任务和迁移脚本

阶段 2:实现 payment-service(优先级:中)

当前文档已符合技术栈规范,可以开始实现:

  1. 创建 app/services/payment_service.py
  2. 创建 app/services/payment/wechat_payment.py
  3. 创建 app/services/payment/alipay_payment.py
  4. 补充 app/core/exceptions.py 中的 PaymentError 异常
  5. 编写单元测试和集成测试

阶段 3:更新相关服务文档(优先级:中)

需要检查并更新其他服务文档,确保符合技术栈规范:

  • recharge-service.md
  • credit-service.md
  • sms-service.md
  • wechat-service.md
  • ai-service.md

技术栈合规性检查清单

已修复

  • 日志系统:使用标准库 logging
  • 依赖版本:固定版本号(== 而非 >=
  • Pydantic Settings:配置 extra="forbid"
  • 异常处理:使用项目自定义异常
  • 类型注解:金额使用 Decimal,明确返回类型
  • 依赖注入:补充 FastAPI Depends 说明
  • 测试文档:添加完整测试示例

⚠️ 待处理(全局问题)

  • 全局替换 loguru 为标准库 logging
  • 统一日志配置和格式
  • 更新所有服务、API、任务中的日志调用

相关文档

建议

  1. 立即行动:创建全局日志迁移 RFC,规划 logurulogging 的迁移路径
  2. 分批执行:避免一次性修改所有文件,按模块分批迁移
  3. 保持一致:新代码必须使用标准库 logging,不再引入 loguru
  4. 文档先行:所有服务文档必须先符合技术栈规范,再开始实现