从需求描述生成经典报价 Excel 或敏捷任务拆分 Excel,并优先复用当前工作区中的客户/项目模板。 完整工作流: (1) 用户提供需求、客户名称、项目名称或参考模板 (2) 使用 vscode_askQuestions 让用户选择“经典报价”或“敏捷方式” (3) 根据客户名称、项目类型、历史模板和现有 Python/Excel 文件确定输出结构与风格 (4) 生成或更新 Excel / Python 生成脚本,并校验工时、费用、税率、Sprint 拆分和样式一致性 USE FOR: 做报价、工时报价、项目报价、经典报价单、敏捷任务拆分、Sprint 拆分、敏捷排期、报价 Excel、 工时报价 Excel、报价模板复用、按客户生成报价、按项目生成报价、生成报价脚本。 DO NOT USE FOR: 接口文档(使用 doa-apidoc)、PPT(使用 doa-ppt)、会议纪要(使用 doa-metting)。
Scanned 5/31/2026
Install via CLI
openskills install medalsoftchina/workcopilot---
name: doa-quotation
description: >
从需求描述生成经典报价 Excel 或敏捷任务拆分 Excel,并优先复用当前工作区中的客户/项目模板。
完整工作流:
(1) 用户提供需求、客户名称、项目名称或参考模板
(2) 使用 vscode_askQuestions 让用户选择“经典报价”或“敏捷方式”
(3) 根据客户名称、项目类型、历史模板和现有 Python/Excel 文件确定输出结构与风格
(4) 生成或更新 Excel / Python 生成脚本,并校验工时、费用、税率、Sprint 拆分和样式一致性
USE FOR: 做报价、工时报价、项目报价、经典报价单、敏捷任务拆分、Sprint 拆分、敏捷排期、报价 Excel、
工时报价 Excel、报价模板复用、按客户生成报价、按项目生成报价、生成报价脚本。
DO NOT USE FOR: 接口文档(使用 doa-apidoc)、PPT(使用 doa-ppt)、会议纪要(使用 doa-metting)。
argument-hint: 提供需求、客户名称、项目名称,以及是否做经典报价或敏捷任务拆分
---
# 报价与敏捷任务拆分生成
## 工作流概览
```text
用户提供需求/客户/项目信息
→ 确认输出模式(经典报价 / 敏捷方式)
→ 搜索并比对当前工作区模板
→ 结构化整理报价项或 Sprint/任务项
→ 生成 Excel 或 Python 生成脚本
→ 校验工时/金额/税率/样式
→ 输出最终文件路径与说明
```
## 何时使用
- 用户说“帮我做报价”“生成报价单”“整理工时报价”
- 用户说“按敏捷方式拆任务”“做 Sprint 拆分”“生成敏捷排期 Excel”
- 用户提供客户名称、项目名称,希望参考已有模板生成新的 Excel
- 用户提供 Python/openpyxl 脚本或历史 Excel,要求按同类风格生成新版本
## Step 0: 必须先确认输出模式
当用户只说“做报价”或“做任务拆分”,**必须先使用 `vscode_askQuestions` 确认**:
- 经典报价
- 适合固定范围、按模块/工时/费用输出传统报价单
- 敏捷方式
- 适合按 Sprint、任务、人天、验收标准输出敏捷任务拆分表
推荐问题:
```text
问题:本次希望采用哪种输出方式?
选项:
- 经典报价 ← recommended
- 敏捷方式(Sprint / 任务拆分)
```
如果用户已经明确说了“经典报价”或“敏捷方式”,可以跳过这一步。
## Step 0.5: 必须确认期望总工时范围
在进入模板选择和任务拆分前,**必须再使用 `vscode_askQuestions` 确认期望的总工时范围**,单位为人天。
推荐问题:
```text
问题:本次期望的总工时范围是?
选项:
- 10人天以下
- 10-30人天
- 30-50人天
- 50-70人天 ← recommended
- 70-100人天
```
使用规则:
1. 这个范围是生成报价和任务拆分时的重要约束,不应跳过
2. 若用户已明确给出目标工时或目标预算可推导工时范围,可直接采用并在最终说明中写明
3. 若用户选择的工时范围与参考模板差距很大,应优先调整任务粒度、Sprint 数量或模块范围,而不是机械照搬模板
4. 经典报价与敏捷方式都应记录该范围,作为总人天校验依据
## Step 1: 收集最小必要信息
至少确认以下信息;如用户未提供,继续追问缺失项:
1. 客户名称
2. 项目名称
3. 需求描述或范围说明
4. 输出模式
5. 期望总工时范围
6. 人天单价(必填,单位:元/人天,例如 2200、3000、3500)
7. 是否有参考模板
> **人天单价必须由用户提供**,不使用任何默认值。如果用户未主动给出,使用 `vscode_askQuestions` 追问。
建议补充信息:
1. 报价主体
- 默认:用户公司名称(需用户提供)
2. 税率
- 默认沿用模板;无模板时单独确认
3. 交付周期
4. 角色与单价口径
- 例如 PM/BA 与 PG/PT 是否同价,SA、QA 是否有独立单价
5. 是否需要同时输出 Python 生成脚本
## Step 2: 先找模板,再决定结构
优先在当前工作区搜索并复用现有模板,而不是从零随意生成。
### 模板搜索优先级
1. 同客户、同项目族的 Excel 或 Python 生成脚本
2. 同类型文档模板
- 报价单、敏捷任务拆分、Sprint 计划、工时校验
3. 用户本次显式提供的附件或脚本
4. 如果仍然没有,再基于通用结构新建
### 客户名称自动匹配规则
在搜索模板前,优先根据客户名称锁定候选目录,再在目录内按输出模式挑选模板。
#### 当前工作区已知映射
> 以下为示例映射,实际使用时根据工作区中的客户目录自动发现。
1. 客户名称包含:`示例客户`、`ExampleCorp`
- 优先目录:`ExampleCorp/`
- 经典报价优先模板:
- `ExampleCorp/示例项目.工时报价.xlsx`
- 敏捷拆分优先模板:
- `ExampleCorp/示例项目_敏捷任务拆分.xlsx`
- Python 参考脚本:
- `ExampleCorp/示例项目_敏捷任务拆分.py`
#### 匹配流程
1. 先读取用户输入中的客户名称
2. 如果客户名称命中已知映射,先限定到对应目录搜索
3. 在对应目录中按输出模式筛选:
- 经典报价:优先 `报价`、`工时报价`、`quotation`
- 敏捷方式:优先 `敏捷任务拆分`、`Sprint`、`工时校验`
4. 如果同目录存在多个候选模板:
- 优先用户显式提到的项目名
- 其次优先最新日期版本
- 再其次优先已有配套 Python 脚本的模板族
5. 如果客户名称未命中任何已知映射,再退回通用搜索策略
#### 使用原则
- 命中客户目录时,不要跨目录随意混用其他客户模板
- 同一客户目录下,经典报价和敏捷模板可以共用配色、公司抬头、税率口径,但仍应分别遵守各自模板结构
- 如果用户上传了新的客户模板,应优先以用户上传模板覆盖目录默认模板
### 搜索建议
- 先搜索客户名、项目名、关键词:报价、拆分、Sprint、工时、POC
- 同时查找:`.xlsx`、`.py`、`.html`、`.md`
- 如果已有 Python 脚本可生成 Excel,优先继承其表结构、颜色、字体、列宽、汇总方式
### 复用原则
- 保持原有模板的视觉风格和结构层级
- 保持客户名称、项目名称、币种、税率口径一致
- 不随意更换已成熟模板中的字段命名方式
- 如果模板存在明显数据错误,可以修正,但需在最终说明中指出
## Step 3A: 经典报价模式
适用于固定范围报价、模块报价、工时报价单。
### 经典报价默认模板
经典报价统一使用以下模板结构生成。该模板已内嵌在骨架脚本中。
> **脚本路径**:`references/classic-quotation-template.py`
> **品牌素材**:`brand-assets/company_logo.png`(请替换为您的公司 Logo)
### 模板画像
- 面向客户的正式 `Service Quotation / 服务报价单`
- 工作簿 **2 个工作表**:`项目报价` + `开发工作量`
- 左上角(A1:D6)嵌入公司 Logo(缩小显示 150×35px,原图 445×104px)
- 中英文双语字段,适合对外发送
- 统一人天单价(由用户提供),PM/BA 与 PG/PT 默认同价
- 无折扣行,只有"未税小计" + "含税合计"
- 税率默认 6%,金额格式 `¥#,##0.00`
- 字体:Sheet 1 项目报价用微软雅黑,Sheet 2 开发工作量用 DengXian(等线),浅蓝表头底色(`#D9EAF7`)
#### 推荐文件命名
- 输出目录:`output/{客户名称}.{项目名称}/`(每次新任务创建独立子文件夹)
- `{客户名称}.{项目名称}.工时报价 {YYYYMMDD}.xlsx`
- 若同项目存在多个工时版本,可追加 `_V2`、`_45MD` 等后缀
#### `项目报价` 页布局(A1:N26,共 26 行)
```
┌────────────────────────────────────────────────────────────┐
│ [Logo 445×104] │ Service Quotation │ {您的公司名称} │
│ A1:D6 │ 服务报价单 E1:K6 │ L1:N6 (右对齐) │
├─────────────────┴────────────────────┴────────────────────┤
│ To: │ From: │
│ Contact/联系人 Company │ Contact Email Phone │
│ Address Email Phone │ Quo date Due Date │
├────────────────────────────────────────────────────────────┤
│ 项目服务价格 section header │
│ PM/BA: =E小计 * {单价} │ PG/PT: =F小计 * {单价} │
│ 未税小计 =L15+L16 │ 含税合计 =L17*1.06 │
├────────────────────────────────────────────────────────────┤
│ CR/Enhancement 费用(同结构,QTY留空) │
├────────────────────────────────────────────────────────────┤
│ Notes/备注:(备注1~7条,wrap_text) │
└────────────────────────────────────────────────────────────┘
```
**关键公式**:
- `H15` = `=开发工作量!E{小计行}` (PM/BA 人天引用)
- `H16` = `=开发工作量!F{小计行}` (PG/PT 人天引用)
- `L15` = `=H15*J15`,`M15` = `=ROUND(H15*J15+H15*J15*N15,2)`
- `L17` = `=L15+L16` (未税小计),`L18` = `=L17*1.06` (含税合计)
#### `开发工作量` 页布局
| 列 | 内容 |
|---|---|
| B | ID(按场景分组,同场景多行时垂直合并) |
| C | 用户场景(同场景多行时垂直合并) |
| D | 任务名称 |
| E | PM/BA/SA |
| F | PG/PT |
| G | 费用小计(同场景多行时垂直合并,公式按场景组汇总 `=SUM(E{组起}:F{组止})*单价`) |
| H | 备注 |
- **场景分组合并**:相同 `scenario` 的相邻行,B 列(ID)、C 列(用户场景)和 G 列(费用小计)垂直合并
- 小计行:`=SUM(E{start}:E{end})`
- 合计行:`=SUM(G{start}:G{end})`,标注"不含税价"
#### 默认口径与样式
| 参数 | 默认值 | 说明 |
|------|--------|------|
| 统一单价 | 用户提供(无默认值) | PM/BA 与 PG/PT 默认同价 |
| 税率 | 6% | 增值税 |
| 账期 | Net30天 | 报价日期 +30 |
| 字体 | 微软雅黑 / DengXian | Sheet1 微软雅黑,Sheet2 DengXian(等线) |
| 表头底色 | `#D9EAF7` | 浅蓝 |
| 金额格式 | `¥#,##0.00` | 两位小数 |
| Logo | `company_logo.png` | 显示 150×35px(原图 445×104) |
人天单价必须由用户提供,不使用任何硬编码默认值。税率和客户专属口径同样以用户输入为准。
#### Logo 自动注入
Logo 内嵌在 `brand-assets/company_logo.png`,脚本自动查找并缩小显示(150×35px)嵌入 A2 位置。
如未找到 Logo 文件,A1:D6 区域留空,不影响其他内容生成。
#### 经典报价完成标准
- 明细金额可回溯到人天和单价
- 项目报价页金额通过公式引用开发工作量页的小计
- Logo 正确嵌入左上角
- 文件名、抬头、公司名、客户名全部正确
### 经典报价内容整理规则
- 把需求拆成可报价模块,不要直接复制原始需求长文
- 优先使用"场景 + 任务名称 + PM/BA 人天 + PG/PT 人天"的结构
- 如果用户给的是结果导向需求,先推导实施模块
- 费用公式统一用 `=SUM(E:F)*单价`,不按角色差异定价
- 涉及税率时,明确"不含税 / 含税"口径
- 生成后检查总人天是否落在用户选择的工时范围内;若超出,应收缩范围、拆阶段或说明超出原因
## Step 3B: 敏捷方式模式
适用于 Sprint 排期、任务拆分、用户故事追溯、工时校验。
### 敏捷方式标准模板规则
如果用户提供了类似 `C-level_Conversations_Assistant_POC_敏捷任务拆分.xlsx` 的模板,或当前工作区存在同类模板,则优先按该模板族生成。
#### 模板画像
该类模板的核心特征是:
- 以 `Sprint总览` 作为首页,而不是单纯的任务表
- 至少包含 7 个工作表,形成“总览 + 明细 + 校验 + 图表 + 风险 + 追溯 + 仪式”的完整闭环
- 同时体现报价口径与敏捷执行口径
- 既能给管理层看总览,也能给项目团队看任务拆分细节
#### 推荐文件命名
- 输出目录:`output/{客户名称}.{项目名称}/`(每次新任务创建独立子文件夹)
- `{项目名称}_敏捷任务拆分.xlsx`
- `{客户名称}.{项目名称}_敏捷任务拆分.xlsx`
- 如果属于某个 POC 或阶段项目,可保留 `POC`、`Phase1`、`SprintPlan` 等关键词
#### 推荐工作表结构
1. `Sprint总览`
- 项目概览 + 6 个左右 Sprint 的目标、周期、里程碑、验收标准
2. `任务明细拆分`
- 核心任务表,按任务 ID、Sprint、分类、角色、人天、依赖、验收标准拆分
3. `工时校验`
- 按 Sprint 汇总 PM/BA、PG/PT、费用、累计费用,并映射回报价项
4. `燃尽图`
- 计划剩余人天、Sprint 交付人天、累计交付、完成比例、理想线
5. `风险追踪`
- 风险描述、影响 Sprint、影响程度、发生概率、应对措施、责任人、状态
6. `用户故事追溯`
- 用户故事与任务、Sprint、人天、费用的映射关系
7. `Scrum仪式`
- Sprint Planning、Daily Standup、Sprint Review、Retrospective、Backlog Refinement、DoD
#### `Sprint总览` 推荐字段
- 项目名称
- 开发商 / 报价主体
- 客户
- 迭代周期
- 总周期
- 方法论
- 报价总额(不含税)
- 报价总额(含税)
- 税率
- PM/BA 人天
- PG/PT 人天
- 总人天
Sprint 总览表推荐列:
1. Sprint
2. 名称
3. 周期
4. Sprint目标
5. PM/BA 人天
6. PG/PT 人天
7. 费用小计(不含税)
8. 交付里程碑
9. 验收标准
#### `任务明细拆分` 推荐列
1. 任务ID
2. Sprint
3. 报价ID
4. 分类
5. 子项
6. 任务名称
7. 任务描述
8. 负责角色
9. PM/BA 人天
10. PG/PT 人天
11. 费用(不含税)
12. 优先级
13. 前置依赖
14. 用户故事ID
15. 验收标准
16. 状态
#### `工时校验` 推荐列
1. Sprint
2. PM/BA 人天
3. PG/PT 人天
4. 人天合计
5. 费用(不含税)
6. 累计费用
7. 对应报价ID
8. 校验说明
并建议追加一个“报价工作量 → Sprint 映射对照”区块,用于把报价模块映射回 Sprint。
#### `燃尽图` 推荐列
1. 时间节点
2. 计划剩余人天
3. Sprint交付人天
4. 累计交付人天
5. 完成比例
6. PM/BA 累计
7. PG/PT 累计
8. 累计费用(不含税)
9. 理想线
#### `风险追踪` 推荐列
1. 风险ID
2. 风险描述
3. 影响Sprint
4. 影响程度
5. 发生概率
6. 应对措施
7. 责任人
8. 状态
9. 更新日期
#### `用户故事追溯` 推荐列
1. 用户故事ID
2. 用户故事描述
3. 关联任务ID
4. 关联Sprint
5. PM/BA 人天
6. PG/PT 人天
7. 费用(不含税)
#### `Scrum仪式` 推荐列
1. 仪式名称
2. 频率
3. 时长
4. 参与人
5. 目的
6. 输出物
并建议在该页追加 `Definition of Done` 清单。
#### 样式与视觉规则
- 主题色以商务蓝系为主,深蓝表头、中蓝汇总、浅蓝副标题
- 默认字体沿用微软雅黑
- 主表头白字深底,正文使用浅灰斑马纹
- 每个 Sprint 可使用单独的浅色底区分行块
- 优先级推荐:`P0` 红色、`P1` 橙色、`P2` 黄色
- 金额统一 `¥#,##0`
- 建议启用冻结窗格与筛选
#### 敏捷方式完成标准
- Sprint 总览、任务明细、工时校验三者数据一致
- 总人天、总费用与报价口径对齐
- 每个 Sprint 都有目标、里程碑、验收标准
- 每个核心任务都有责任角色、依赖和验收标准
- 风险、追溯、Scrum 仪式页至少保留基础结构,不能只交一个任务表
### 推荐输出结构
1. Sprint 总览
- Sprint 名称、周期、目标、交付里程碑、验收标准
2. 任务明细拆分
- 任务 ID、Sprint、分类、子项、任务名称、描述、角色、人天、优先级、依赖、状态
3. 工时校验
- 按 Sprint 汇总 PM/BA、PG/PT、费用、累计费用
4. 可选工作表
- 燃尽图、风险追踪、用户故事追溯、Scrum 仪式
### 敏捷拆分规则
- 先按阶段分 Sprint,再在 Sprint 内分任务
- 每个 Sprint 应包含目标、里程碑、验收标准
- 每个任务都尽量具备:依赖、责任角色、验收标准、状态
- 拆分结果必须能回溯到原始需求或报价项
- 任务粒度以“便于排期和验收”为准,避免过粗或过碎
- 生成后检查总人天是否落在用户选择的工时范围内;若超出,应调整 Sprint 数量、任务深度或明确说明原因
## Step 4: 生成方式选择
根据上下文选择生成方式:
### 直接生成 Excel
适用于:
- 结构简单
- 当前任务只需要交付 `.xlsx`
- 不要求后续大规模复用脚本
### 生成 Python 脚本再输出 Excel
优先适用于:
- 已有 openpyxl 模板脚本可参考
- 需要大量格式控制
- 需要后续迭代复用
- 需要多工作表、图表、复杂样式或校验逻辑
当工作区已有类似 Python 脚本时,优先沿用其写法和样式约定。
### 推荐复用脚本骨架
当需要快速生成新脚本时,优先读取并复制以下模板骨架,再替换其中的占位数据:
- 经典报价脚本骨架:[references/classic-quotation-template.py](./references/classic-quotation-template.py)
- 敏捷拆分脚本骨架:[references/agile-sprint-template.py](./references/agile-sprint-template.py)
- 标准参数说明:[references/parameter-standard.md](./references/parameter-standard.md)
使用原则:
1. 如果是对客正式报价,优先从经典报价骨架开始
2. 如果是 Sprint 任务拆分、排期、追溯、风险管理,优先从敏捷拆分骨架开始
3. 如果工作区已有客户专属脚本,先参考客户脚本,再回落到骨架模板
4. 骨架中的公司名、税率、单价、字段文案都允许按项目覆盖,但不要改坏公式关系和整体结构
### 标准占位参数
为了降低每次生成脚本时的改动范围,优先使用统一参数接口:
- 通用参数:`output_file`、`project_name`、`customer_name`、`vendor_name`、`template_source`、`quote_date`、`tax_rate`
- 经典报价优先补充:`role_rates`、`change_request_rates`、`sales_contact`、`customer_contact`
- 敏捷拆分优先补充:`iteration_cycle`、`duration_text`、`amount_ex_tax`、`amount_inc_tax`、`pm_days_total`、`pg_days_total`
如果客户模板需要新增字段,优先在标准参数的基础上做扩展,而不是随意改名或分裂成另一套命名体系。
## Step 5: Excel 设计与样式要求
生成内容必须兼顾商务美观与可维护性。
### 通用要求
- 标题层级清晰,字体、底色、边框统一
- 冻结表头、设置筛选、合理列宽、启用自动换行
- 金额、税率、人天采用统一数字格式
- 汇总区域突出显示
- 客户可直接用于汇报或交付,不要生成“开发草稿感”过重的表格
### 美观要求
- 优先复用模板已有主题色
- 无模板时采用商务蓝系或与客户品牌相近的克制风格
- 不使用杂乱高饱和色块
- 表格密度适中,保证打印与屏幕查看都清晰
### 安全与严谨要求
- 不凭空捏造客户敏感信息
- 金额、人天、税率、总计必须可追溯
- 如果基于估算,应明确标注为“预估”或“假设”
- 对外文档避免出现内部调试字段或无意义注释
## Step 6: 校验清单
生成完成后至少检查以下内容:
1. 客户名称、项目名称是否正确
2. 输出模式是否与用户选择一致
3. 总人天是否落在用户选择的工时范围内
4. 人天合计、金额合计、税额、含税金额是否正确
5. Sprint 与任务分配是否前后一致
6. 样式是否与参考模板一致或至少保持商务统一
7. 工作表名称、筛选、冻结窗格、列宽是否可用
8. 如使用公式,确保无 `#REF!`、`#DIV/0!`、`#VALUE!` 等错误
## Step 7: 最终交付说明
完成后向用户明确说明:
1. 采用的是经典报价还是敏捷方式
2. 参考了哪些模板或脚本
3. 用户选择的总工时范围,以及最终总人天是否落在该范围内
4. 输出文件路径
5. 若有关键假设、缺失信息或人工估算项,需要单独列出
## 触发示例
- 帮我做一个给示例客户的经典报价 Excel
- 根据这个需求做一个敏捷任务拆分,参考当前工作区模板
- 帮我生成一份工时报价单
- 这个项目你帮我先判断应该走经典报价还是敏捷方式,再生成 Excel
## 完成标准
- 用户完成了模式选择,或用户已明确指定模式
- 输出文件已生成
- 模板来源清楚
- 金额/工时/Sprint 数据校验完成
- 最终表格可直接用于商务沟通或内部评审
No comments yet. Be the first to comment!