Files
shanxia2.0/docs/superpowers/plans/2026-08-30-crm-contract-plan-linkage.md
T
2026-08-30 18:33:13 +08:00

2.2 KiB

合同详情 · 运输计划联动 Implementation Plan

For agentic workers: REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (- [ ]) syntax for tracking.

Goal: 合同详情展示关联运输计划与产品安排数量,安排运输时自动将已审批合同开始执行。

Architecture: 后端按 pl_plan_contract(含遗留 pl_plan.contract_id)聚合计划列表与按产品 plan_qty;前端在 ContractDetailDialog/detail.vue 增加 Tab 与三列;arrange_transport 后幂等 start_execute。

Tech Stack: FastAPI + SQLAlchemy · Vue 3 + Element Plus · 现有 flattenPlanListRows / PlPlanViewDialog


Task 1: Backend — product plan qty aggregation

Files:

  • Create: backend/app/services/pl_contract_plan_qty.py

  • Test: backend/tests/test_pl_contract_plan_qty.py

  • Modify: contract detail serialization to attach qty fields on products

  • Write unit tests for archived / unarchived-arranged / total

  • Implement aggregation service

  • Attach fields on contract detail products (archivedQty, arrangedUnarchivedQty, arrangedTotalQty)

Task 2: Backend — list plans by contract

Files:

  • Modify: backend/app/api/pl/plan.py, schemas as needed

  • Modify: web-admin/src/api/pl/index.ts

  • GET /transport/plan/by-contract/{contractId} page list reusing plan detail shaping

  • Frontend API wrapper

Task 3: Backend — arrange auto start_execute

Files:

  • Modify: backend/app/api/pl/transport.py (or arrange service)

  • Test: backend/tests/test_pl_arrange_auto_start_execute.py

  • After successful arrange, start_execute all linked contracts with status approved

  • Idempotent when already executing

Task 4: Frontend — product columns + 运输计划 tab

Files:

  • Modify: ContractDetailDialog.vue, detail.vue

  • Possibly extract small helper for plan list span in dialog

  • Three green columns after 税费

  • New tab with merge-cell list + open PlPlanViewDialog on planNo click

Task 5: Verify

  • Run relevant pytest
  • ./scripts/update-graph.sh for touched projects