4.1 KiB
4.1 KiB
必选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与报告已更新。