34 lines
1.4 KiB
Markdown
34 lines
1.4 KiB
Markdown
# 框架合同金额按产品小计汇总 — 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:** 框架销售/采购合同在新建或保存时,按产品行小计汇总合同金额(随行就市/按需行贡献 0)。
|
||
|
||
**Architecture:** 后端 `_normalize_framework_contract_data` 去掉头金额强制 0,改为累加行小计;更新接口将规范化后的 amount 写回 apply 所用 payload。前端去掉 `amount = 0` 短路,统一 `calculateTotalAmount`。交付生产备份+回填 SQL。
|
||
|
||
**Tech Stack:** FastAPI / pytest;Vue 3 web-admin
|
||
|
||
---
|
||
|
||
### Task 1: 后端单测 + 实现
|
||
|
||
**Files:**
|
||
- Create: `backend/tests/test_crm_framework_contract_amount.py`
|
||
- Modify: `backend/app/crud/crm/contract.py`
|
||
|
||
- [x] 写失败用例(固定价合计、混用、全 market)
|
||
- [x] 改 `_normalize_framework_contract_data` 并同步 update 路径 amount
|
||
- [x] 跑通 pytest
|
||
|
||
### Task 2: 前端
|
||
|
||
**Files:**
|
||
- Modify: `web-admin/src/views/crm/contract/components/ContractFormDialog.vue`
|
||
- Modify: `web-admin/src/views/crm/contract/form.vue`
|
||
|
||
- [x] `calculateTotalAmount` / 切类型 / 载入产品:框架合同改为累加
|
||
|
||
### Task 3: 生产 SQL
|
||
|
||
- [x] 输出备份表 + 按 `crm_contract_product.subtotal` 回填框架合同金额的语句
|