软件交付总体技术解决方案 Skill
定位与边界
适用场景:项目立项、启动会、技术交底、交付内审、售前预沟通(客户给出初步需求、要求乙方提供方案以决策是否合作)等"乙方内部对齐 + 甲方技术线确认 + 合作决策评估"场景。
输出性质:合格初稿。能保障技术设计自洽、结构规范、常见需求不遗漏;不能保障设计完全符合客户真实业务逻辑(需人工验证)。
能力边界(明确不做):
- 不输出商务方案(人月单价、硬件清单、License 报价、付款节点、知识产权归属)
- 不输出"我方"章节(公司资质、类似案例、团队履历、方法论沉淀)
- 不输出行业合规深度内容(等保 2.0 三级测评条款、个保法/数安法落地、国密、信创栈替换)只在附录留待确认占位
- 不评估业务 ROI/TCO/回收期等财务收益指标
- 不替代售前/解决方案经理在投标场景的全套交付物——本 skill 产出物在投标场景仅作"技术分册"使用
执行工作流
严格按顺序执行,每步明确指定读取的文件。每步必须显式产出"输出物"(用 <step-N-output> 块标注),供后续 Step 引用,避免隐性动作。
Step 1 — 解析输入
输入:用户原始需求描述 读取:无(使用下方【功能类型快速识别表】) 动作:识别输入类型(场景描述型 / 功能清单型 / 混合型),提取信息。 功能点粒度规则:一个独立的业务对象 + 一组操作 = 一个功能点(如"采购申请的提交/审批/查询"是一个功能点而非三个)。 输出物(必须显式产出):
<step-1-output>
输入类型: {场景描述型/功能清单型/混合型}
显性功能点列表(带类型标签):
- {功能点1}(类型: 数据管理/流程审批/统计报表/权限控制/系统集成)
- {功能点2}(类型: ...)
业务领域和行业背景: {领域}
已明确的约束条件: {约束列表}
外部系统集成需求: {集成清单 或 "无"}
</step-1-output>
Step 2 — 输入质量检查
输入:Step 1 输出
读取:@references/input-validation.md
动作:识别 A/B/C 三类问题。
异常处理:A 类非空时,停止后续 Step,按 input-validation.md 提问格式一次性提出所有问题,等待回复后从 Step 2 重新开始。
输出物:
<step-2-output>
A 类(致命缺失,需澄清): {问题列表 或 "无"}
B 类(推断缺失,记录默认值): {缺失项 → 默认值}
C 类(歧义,做出选择): {歧义点 → 选择 + 备选差异}
</step-2-output>
Step 3 — 需求补全
输入:Step 1 输出 + Step 2 输出
读取:@references/implicit-inference.md
按需读取:@references/nfr-defaults.md(仅当客户未明确非功能需求时)
动作:按功能类型逐项补全隐性需求;按行业 + 规模填充 NFR。
多源值合并规则(关键,避免行业默认值覆盖客户明确值):
- 优先级:客户明确值 > 行业叠加值 > 规模默认值(高位覆盖低位)
- 例 1:客户说"等保三级",nfr-defaults 政务行业默认"二级起步",按客户取三级
- 例 2:规模默认 99% 可用性,客户说 99.9%,按客户值
- 客户值与默认值冲突时,方案中明确标注"按客户要求 X,覆盖行业默认 Y"
输出物:
<step-3-output>
完整需求全景:
- 显性需求: {Step 1 提取的功能点}
- 隐性需求(按功能类型补全): {补全清单}
- 共有隐性需求: 认证/RBAC/审计/错误提示/防重提交
- 交付类隐性需求: 数据迁移/培训/运维交付物
NFR 指标(标注来源 = 客户/行业/规模默认):
- 性能: {QPS/响应时间} (来源: ...)
- 可用性: {%} (来源: ...)
- 数据留存: {期限} (来源: ...)
- 安全: {等级/合规要求} (来源: ...)
</step-3-output>
Step 4 — 建立域模型
输入:Step 3 输出
读取:@references/complexity-detection.md
动作:按下方【域归并原则】将功能点归并为业务域;用 complexity-detection 5 条标准识别复杂模块。
输出物(按 complexity-detection.md 末尾输出格式):
<step-4-output>
业务域划分:
- {域1名}: 负责管理 {一句话职责}
- 模块: {模块清单}
- {域2名}: ...
- 系统管理域: 用户、角色、组织、字典、日志(独立)
- 分析报表域: {如有}(独立,只读依赖各业务域)
[核心复杂模块] (第 4 章详细说明):
- {模块名}(原因: 状态流转/数据权限/性能/外部集成/定时任务)
[标准实现模块]:
- {模块名列表}
</step-4-output>
Step 5 — 确认受众
输入:Step 1 输出(业务领域)+ 客户类型 读取:无(使用下方【受众判断规则】) 动作:按客户行业和受众层级,确定各章节技术深度。 输出物:
<step-5-output>
客户类型: {政府/企业/事业单位/...}
混合受众标记: {是/否}
各章节表达策略:
- 第 1、5 章、附录: 业务方语言,不出现技术术语
- 第 2 章: 业务语言(功能描述)+ 量化指标(非功能需求)
- 第 3、4 章: 技术语言 + SCQA + 三要素
</step-5-output>
Step 6 — 逐章生成
输入:Step 3 + Step 4 + Step 5 全部输出物 读取:每章按需读取对应章节指南(不提前全量加载,章节生成完毕后释放上下文)。 动作:严格按 ch1 → ch2 → ch3 → ch4 → ch5 → 附录 顺序生成,禁止并行。
为什么必须串行(依赖关系):
- 第 5 章工期估算依赖第 2 章功能架构表(模块数 + 复杂模块数)
- 附录 A 待确认事项依赖第 1 章假设 + 第 5 章风险表
- 附录 B 术语表需扫描第 1、5 章中泄漏的技术术语
- 并行生成会导致依赖断裂、术语漂移、工期估算无依据
所有设计描述基于以下固定栈,不做选型决策:
| 层次 | 约束 |
|---|---|
| 前端 | Vue3 + Ant Design |
| 后端 | Spring Boot 单体(分层架构) |
| 数据库 | MySQL |
| 缓存 | Redis(按需引入) |
| 任务调度 | Quartz(按需引入) |
| 章节 | 标题 | 主要受众 | 读取文件 |
|---|---|---|---|
| 第 1 章 | 项目概述与价值定位 | 业务决策层 | @references/chapter-guides/ch1.md |
| 第 2 章 | 需求分析与功能范围 | 业务方 + 技术方 | @references/chapter-guides/ch2.md + @references/diagram-guides.md |
| 第 3 章 | 技术架构与部署方案 | 技术架构师 | @references/chapter-guides/ch3.md + @references/backend-constraint.md + @references/middleware-constraints.md + @references/diagram-guides.md |
| 第 4 章 | 核心模块设计 | 技术架构师 | @references/chapter-guides/ch4.md + @references/frontend-constraint.md + @references/backend-constraint.md |
| 第 5 章 | 项目实施与交付计划 | 业务决策层 + 项目管理 | @references/chapter-guides/ch5.md |
| 附录 | 待确认事项与术语表 | 全部受众 | @references/chapter-guides/appendix.md |
生成每章时,参考 @references/writing.md 中对应的受众表达规范:
- 第 1、5 章、附录参考"一、受众表达规范-业务方"
- 第 2 章参考"一、受众表达规范-业务方" + "二、量化规范"
- 第 3、4 章参考"一、受众表达规范-技术架构师" + "三、论证结构规范" + "四、实现思路表达规范"
Step 7 — 一致性自查
输入:Step 6 全部章节输出
读取:@references/validation.md
动作:执行 9 项跨章节检查 + 5 类自查清单,发现问题直接修正,不暴露自查过程。
修正失败兜底:如某项检查反复修正后仍不达标(例如功能模块覆盖不全且无法补充),在文档末尾"生成说明"中显式标注"未通过自查项: {项目} - 原因: {原因} - 建议人工补充方向: {方向}",不强行掩盖。
输出物:完整 5 章 + 附录文档,文档末尾附"生成说明"段,标注所有默认假设、推断来源、未通过自查项。
内联快速判断表
以下规则直接在工作流中使用,无需读取外部文件。
【功能类型快速识别表】
| 关键词 / 特征 | 功能类型 | 技术含义 |
|---|---|---|
| 台账、档案、清单、维护、配置 | 数据管理类 | 标准 CRUD,重点在数据模型 |
| 申请、审批、工单、流程、驳回 | 流程审批类 | 状态机、通知、事务边界 |
| 统计、报表、看板、分析、导出 | 统计报表类 | 查询性能、数据权限、导出格式 |
| 用户、角色、权限、组织、登录 | 权限控制类 | RBAC、动态路由、Session 管理 |
| 对接、同步、推送、第三方 | 系统集成类 | 协议、容错、数据映射 |
【图形格式判断表】
| 图类型 | 输出格式 | 原因 |
|---|---|---|
| 功能架构图 | Markdown 表格 | 层次归属关系,表格更清晰 |
| 核心业务流程图 | Mermaid flowchart | 分支和流转必须用图形表达 |
| 系统架构图 | Mermaid 示意 + 组件表格 | 拓扑 Mermaid 近似,细节表格补充 |
| 技术架构图 | Markdown 表格 | 分层对应关系,表格更清晰 |
【域归并原则】
- 按业务对象聚合,不按技术功能聚合
- 系统管理域独立(用户、角色、组织、字典、日志)
- 分析报表域独立(跨域的统计报表统一归入)
- 每个域用一句话能说清楚"负责管理什么"
- 依赖方向:系统管理域 ← 所有域依赖;分析报表域 → 依赖所有域(只读)
【受众判断规则】
| 章节 | 主要受众 | 表达策略 |
|---|---|---|
| 第 1、5 章、附录 | 业务决策层 | 业务语言,不出现技术术语 |
| 第 2 章 | 业务方 + 技术方 | 功能描述用业务语言,非功能需求用量化指标 |
| 第 3、4 章 | 技术架构师 | 技术语言,每个设计决策给出理由 |
混合受众场景:先给业务语言结论,再展开技术细节。
参考文档索引
| 文档 | 用途 | 由哪些 Step / 章节加载 |
|---|---|---|
references/input-validation.md |
A/B/C 三类输入问题判定与处理 | Step 2 |
references/implicit-inference.md |
按功能类型补全隐性需求 | Step 3 |
references/nfr-defaults.md |
非功能需求按规模 + 行业的默认值 | Step 3(按需) |
references/complexity-detection.md |
5 条复杂模块识别标准 + 输出格式 | Step 4 |
references/validation.md |
跨章节一致性 9 项 + 5 类自查清单 | Step 7 |
references/writing.md |
受众表达规范 + SCQA + 量化 + 三要素 | Step 6 各章节 |
references/chapter-guides/ch1.md |
第 1 章结构与写作规则 | Step 6 第 1 章 |
references/chapter-guides/ch2.md |
第 2 章结构与写作规则 | Step 6 第 2 章 |
references/chapter-guides/ch3.md |
第 3 章结构与写作规则 | Step 6 第 3 章 |
references/chapter-guides/ch4.md |
第 4 章结构与写作规则 | Step 6 第 4 章 |
references/chapter-guides/ch5.md |
第 5 章结构与写作规则 | Step 6 第 5 章 |
references/chapter-guides/appendix.md |
附录 A/B/C 生成规则 | Step 6 附录 |
references/frontend-constraint.md |
前端 6 种标准页面模式 + 接口约定 + 能力边界 | Step 6 第 4 章 |
references/backend-constraint.md |
分层职责 + 域边界 + 横切关注点 + 单体演进 | Step 6 第 3、4 章 |
references/middleware-constraints.md |
MySQL/ES/Redis/Quartz 的引入条件与边界 | Step 6 第 3 章 |
references/integration-patterns.md |
外部系统集成模式(同步/异步/降级/对账) | Step 3 + Step 6 第 3、4 章(按需) |
references/diagram-guides.md |
4 类图表生成规范 + Mermaid 语法 | Step 6 第 2、3 章 |