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
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,定义PaymentResultTypedDict - 依赖注入:补充 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:创建日志迁移计划(优先级:高)
需要创建一个全局的日志系统迁移计划:
-
评估影响范围:
- 统计所有使用
loguru的文件 - 分析日志配置和格式化需求
- 确定迁移优先级
- 统计所有使用
-
设计标准日志配置:
- 基于 Python
logging模块 - 保持与
loguru相似的功能(结构化日志、日志轮转等) - 统一日志格式和级别
- 基于 Python
-
分批迁移:
- 优先迁移核心模块(
app/core/logging.py) - 然后迁移服务层和 API 层
- 最后迁移任务和迁移脚本
- 优先迁移核心模块(
阶段 2:实现 payment-service(优先级:中)
当前文档已符合技术栈规范,可以开始实现:
- 创建
app/services/payment_service.py - 创建
app/services/payment/wechat_payment.py - 创建
app/services/payment/alipay_payment.py - 补充
app/core/exceptions.py中的PaymentError异常 - 编写单元测试和集成测试
阶段 3:更新相关服务文档(优先级:中)
需要检查并更新其他服务文档,确保符合技术栈规范:
recharge-service.mdcredit-service.mdsms-service.mdwechat-service.mdai-service.md
技术栈合规性检查清单
✅ 已修复
- 日志系统:使用标准库
logging - 依赖版本:固定版本号(
==而非>=) - Pydantic Settings:配置
extra="forbid" - 异常处理:使用项目自定义异常
- 类型注解:金额使用
Decimal,明确返回类型 - 依赖注入:补充 FastAPI
Depends说明 - 测试文档:添加完整测试示例
⚠️ 待处理(全局问题)
- 全局替换
loguru为标准库logging - 统一日志配置和格式
- 更新所有服务、API、任务中的日志调用
相关文档
建议
- 立即行动:创建全局日志迁移 RFC,规划
loguru到logging的迁移路径 - 分批执行:避免一次性修改所有文件,按模块分批迁移
- 保持一致:新代码必须使用标准库
logging,不再引入loguru - 文档先行:所有服务文档必须先符合技术栈规范,再开始实现