Files
shanxia2.0/docs/superpowers/plans/2026-10-27-wechat-completion-cert-notices.md
T

4.1 KiB
Raw Blame History

必选3与必选6 Implementation Plan

使用 subagent-driven-development 按独立业务域实施;当前工作区含既有未提交功能,保留并在原目录增量修改,不自动提交。

Goal: 实现四类支付完成通知与指定角色每日证件汇总,复用服务号通知基础。

Architecture: 支付完成hook和每日调度向同一outbox写入独立事件;发送器按kind复核,日期使用Asia/Shanghai。通过原有角色和绑定界面配置接收人。

Tech Stack: Python 3.9 / FastAPI / SQLAlchemy / APScheduler / MySQL 5.7。

1. 队列与配置(主代理)

  • 新增 backend/tests/test_wechat_notice_events.py,先验证缺失,再覆盖禁用、重复、租户及外层事务回滚。
  • 新增 backend/app/services/wechat_notice_events.py:enqueue_event(db, *, tenant_no, business_type, business_id, event_id, kind, recipient_id, template_id, payload, page='', actor_id='system', invalid_error=None);唯一键包含模板应用、业务事件及收件人;冲突仅回滚保存点。
  • 修改 wechat_approval_notices.py,在 _valid_now 中识别 completion 与 cert_daily,旧审批查询取消操作仅作用于pending/result,避免删除独立通知。
  • 配置新增两模板、证件开关/角色/小时/分钟;tasks/pl_cert_expiry.py 在原扫描提交之后入队,tasks/__init__.py为原任务配置上海时区及可配置时间,避免重复扫描任务。

2. 完成通知(业务代理)

  • 调查四类业务真实完成动作与取消操作。
  • 新增 services/wechat_completion_notices.py 与 tests/test_wechat_completion_notices.py;完成事件必须有真实记录、状态与处理时间,构建准确模板。
  • 最小修改备用金、报销、运费与充值完成函数,在提交前入队;验证去重、事务回滚、最终金额无字段、跨租户及撤销失效。

3. 证件摘要(证件代理)

  • 新增 services/wechat_cert_notices.py 与 tests/test_wechat_cert_notices.py,测试指定角色、租户、数据权限并集、当日去重、跨日取消、续期和无提醒。
  • 实现 enqueue_daily_cert_notices(db, *, now=None) 和 refresh_cert_notice(db, notice, *, now=None),不提交事务。
  • 新增 docs/sql/20261027_wechat_cert_notice_role.sql,MySQL5.7幂等初始化角色、提醒页面和祖先菜单,默认空自定义权限,无用户自动授权。

4. 验证交付

  • backend/venv/bin/python -m pytest backend/tests/test_wechat*.py(在backend目录使用tests相对路径)及涉及业务回归。
  • 检查配置与调度注册、两类事件发送路径、独立事务回滚;执行字段一致性脚本(存在时)。
  • 完成规格与代码质量复核,修复实际问题后复验。
  • 更新 docs/wechat-approval-notices-setup.md 和SQL基线,运行 ./scripts/update-graph.sh backend 与 graphify update .。
  • 交付实际验证结果、配置默认时间、角色分配步骤与真实微信尚未联调的边界。

验证记录(2026-10-27)

  • 微信通知全部隔离测试198项通过;加证件扫描和数据权限共211项通过。5项新增端到端集成测试使用真实SQLite队列与假的微信客户端,核对四种完成通知及证件动态摘要,没有真实发送。

  • 扩大业务回归493项通过、2项既有充值列表mock失败:test_pl_vehicle_recharge_mine_vehicles中模拟对象缺少既有油卡逻辑需要的recharge_type。没有修无关业务测试。

  • 规格与代码质量独立复核通过。运费锁读结果复用、充值sending撤销、瞬时重试覆盖status后仍靠revoked标记失效均增加回归。

  • Python编译和修改文件空白检查通过。scripts/check_field_consistency.py仍不存在,无法执行;本次无CRUD表单字段增改。

  • SQL只静态复核,未运行真实MySQL迁移或并发测试;默认总开关仍关闭,未部署/真实微信联调。角色需执行SQL后在现有管理界面分配人员及可见数据范围。

  • 后端及根目录知识图谱更新命令均成功;图谱较大,HTML可视化按工具阈值跳过,JSON与报告已更新。