Skip to main content

word-fillter-438c-sdd

当用户提到「GJB 438C」「438C-2021」「5.11」「软件设计说明」「SDD」「概要设计」「详细设计」「CSCI 体系结构」「CSCI 详细设计」并需要生成或填写软件设计说明 .docx 时触发。基于 GJB 438C-2021 [5.11] `[11][SDD] 软件设计说明-438C-2021.docx`,严格按真实 Word 模板的锚点段落和表格表头定位,支持封面字段填写、正文段落替换、4.3/5 动态子节插入、引用文档表与需求追踪表填充,并在生成后标记 Word 目录字段为待刷新。

インストールへ移動

ソース情報

リポジトリ
CMoments/GJB438C-DocSkill
ソースの最終更新活動
2026年7月8日 15:46
検出された SKILL.md の言語
中国語
スター
72
フォーク
16

インストール方法

デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。

ソースファイルを確認

インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。

ファイルエクスプローラー
14 ファイル

SKILL.md を表示中

SKILL.md
ソースの指示 · 読み取り専用プレビュー
name
word-fillter-438c-sdd
description
当用户提到「GJB 438C」「438C-2021」「5.11」「软件设计说明」「SDD」「概要设计」「详细设计」「CSCI 体系结构」「CSCI 详细设计」并需要生成或填写软件设计说明 .docx 时触发。基于 GJB 438C-2021 [5.11] `[11][SDD] 软件设计说明-438C-2021.docx`,严格按真实 Word 模板的锚点段落和表格表头定位,支持封面字段填写、正文段落替换、4.3/5 动态子节插入、引用文档表与需求追踪表填充,并在生成后标记 Word 目录字段为待刷新。
# GJB 438C SDD 严格填写 使用本 Skill 填写 GJB 438C-2021 [5.11] 软件设计说明(SDD)。模板文件为 `documents/[11][SDD] 软件设计说明-438C-2021.docx`。 ## 何时使用 当用户需要基于 `[11][SDD] 软件设计说明-438C-2021.docx` 生成或修改 GJB 438C-2021 软件设计说明(SDD)时使用本 Skill。 ## 设计原则 - **严格模式**:模板锚点、命中数、原型段落、表头任何一项不符合预期都直接报错,不做静默跳过、不做兜底、不猜测模板结构。 - **只改内容**:脚本只读取/写入 JSON 中的 `content` 与 `rows`,不修改模板的 `id`、`name`、`type`、`columns`、`replacement_pattern`、`locator_rows` 等结构字段。 - **JSON 驱动**:所有可填写内容通过 `templates/config.json` 与 `templates/project.json` 配置,脚本不硬编码业务内容。 - **目录刷新**:脚本只写入标题并标记 `w:updateFields`,目录的实际刷新发生在 Word 首次打开文档时。 ## 当前模板的严格规则 以下规则基于 `documents/[11][SDD] 软件设计说明-438C-2021.docx` 的实际扫描结果,**不是**通用 438C 模板约定,与 SRS 模板的封面锚点也不同: - `外部型号+产品名称` 必须在模板中精确出现 **1** 次(封面表格第 1 行)。 - `软件需求规格说明` 必须在封面区域精确出现 **1** 次(模板封面书写为 SRS 标题,脚本将其替换为 `document.title`,例如「软件设计说明」)。 - `产品型号-XXXX` 必须精确出现 **1** 次(封面表格第 2 行)。 - `文档标识号:TN/x-DO-DS-V{N.xx};`、`标题:`、`软件名称:`、`软件缩写:`、`软件版本号。` 各精确出现 **1** 次(1.1 标识的 Normal Indent 段落块)。 - 本 SDD 模板封面**没有** `XXXXXXXX公司`、`XXXX年XX月XX日`、`密 级: 内部`、`阶 段: `、`版 次: A 版` 等锚点;这些字段不会出现在 `config.json`,也不会在生成时被替换。 - `4.3` 接口设计 是动态章节父节点,使用模板中的 `4.3.X (接口的唯一标识符)` 作为插入原型,从 `4.3.2` 起按 `subsections` 顺序克隆插入。 - `5` CSCI详细设计 是动态章节父节点,使用模板中的 `5.X (软件单元的唯一标识符,或者一组软件单元的标志符)` 作为插入原型,从 `5.1` 起按 `subsections` 顺序克隆插入。 - `4.3.X`、`5.X` 原型段及其后的模板示例说明文字会被一并删除,再按 `subsections` 重新生成;4.3.1(接口标识和接口图)和第 5 章引言段保留并由 `content` 字段决定其文字。 - 引用文档表(第 2 章)、需求正向追踪表与逆向追踪表(第 6 章)按 `locator_rows` 精确匹配表头;行数不够时按数据行原型克隆扩行。 - 模板「表 X-X」题注由脚本按章号重写:`表2-X 引用文件` → `表2-1 引用文件`、`表X-X 需求的正向追踪性` → `表6-1 需求的正向追踪性`、`表X-X需求的逆向追踪性` → `表6-2需求的逆向追踪性`。 ## 与 SRS 模板的关键差异 - 封面锚点每个仅出现 1 次(SRS 大多为 2 次)。 - 封面没有 `XXXXXXXX公司`、`密级`、`阶段`、`版次`、`日期` 等字段,不要在 `config.json` 里给 SDD 加这些字段并期望被写入封面。 - 封面正文写错了文档标题(写作「软件需求规格说明」),脚本默认将其替换为 `document.title`;若 `document.title` 与封面锚点完全相同(例如仍填写 `软件需求规格说明`),脚本仍会按 1 次精确命中替换。 - 第 1 章「范围」标题在模板里是 `Normal` 段落,不是 `Heading 1`;脚本据此调整了题注号编排逻辑,不会把第 2 章的 `表2-X` 误编为 `表1-X`。 - 动态章节父节点为 `4.3` 和 `5`,不是 SRS 的 `3.1`/`3.2`/`3.3`/`3.4`。 ## 目录结构 - `documents/[11][SDD] 软件设计说明-438C-2021.docx`:SDD 模板文档 - `templates/config.json`:封面与标识配置(仅 `project.name/short_name/version` 与 `document.id/title` 会被写入模板) - `templates/project.json`:章节内容、动态子节、表格数据 - `scripts/main.py`:命令行入口(推荐) - `scripts/process.py`:免参数入口 - `scripts/strict_word_filler/`:严格填充运行时 - `loader.py`:解析 JSON、构造 `BuildPlan`、调用模板规则 - `docx_ops.py`:Word 段落 / 表格 / 题注 / 目录刷新操作 - `template_rules.py`:SDD 模板锚点、动态章节规则、模式覆盖 - `models.py`:`BuildPlan` 等数据类 - `errors.py`:`StrictTemplateError` / `StrictDataError` - `pipeline.py`:CLI 入口 ## JSON 规则 ### config.json `config.json` 沿用 SRS 三段式结构(`project`、`document`、`content`),脚本只读取下列字段的 `content`: - `project.name`:外部型号+产品名称(写入封面表格第 1 行第 1 段) - `project.short_name`:项目简称(与「产品型号-」前缀拼接写入封面表格第 2 行) - `project.version`:版本号(写入 1.1 标识块的「软件版本号:…。」) - `document.id`:文档标识号(写入 1.1 标识块的「文档标识号:…;」) - `document.title`:文档标题(同时写入封面「软件需求规格说明」位置和 1.1 标识块的「标题:…」) `project.company`、`project.department`、`document.classification`、`document.phase`、`document.date`、`content.*` 仅为兼容 SRS 命令行参数保留,SDD 模板里没有对应锚点,**不会**被写入文档。 ### project.json - 顶层 `structure` 中的每个章节按章号(`"1"`、`"2"`、…、`"7"`)组织。 - 章节可选字段: - `replacement_pattern` + `content`:将该章正文里的占位段替换为 `content`(多行用 `\n\n` 分段)。 - `placeholders`:章节下的固定子节列表(如 1.1/1.2/1.3、4.1/4.2),每个 placeholder 同样支持 `replacement_pattern` + `content`,并可在 `subsections` 中定义更深层子节。 - `tables`:严格表格填充定义(见下)。 - 动态章节父节点 `4.3` 和 `5` 必须作为顶层 `structure` 条目(不能放在某个章节的 `placeholders` 里),结构为: ```json "4.3": { "title": "接口设计", "type": "content_generation", "content": "<4.3.1 接口标识和接口图 段的正文>", "subsections": { "4.3.2": {"name": "<接口标题>", "content": "<接口正文,多行用 \n\n>"}, "4.3.3": {"name": "...", "content": "..."} } } ``` - 脚本会把模板里 `4.3.X` 原型段及其后的所有示例说明删除,再按 `subsections` 顺序生成 `4.3.2`、`4.3.3`、… 每个子节都使用原型段的样式。 - `content` 会替换 4.3 章节首段的文本(模板中是 4.3.1 的正文)。 - 表格填充(`tables` 数组,每项): - `table_id`:脚本内部使用的表名(仅用于错误信息) - `locator_rows`:按从上到下顺序匹配模板表头行的精确文本(每个单元格必须完全一致) - `data_start_row`:模板里第一行数据行的索引(0 基,从表头之下开始计数) - `preserve_tail_rows`:模板末尾需要原样保留的行数(例如正向追踪表尾部的「若存在一对多则此形式表达」示例行) - `columns`:列名列表,**必须**与每个 `rows` 项的键完全一致 - `rows`:数据行数组,每行的字段集合必须严格等于 `columns` - 不允许在 `subsections` 中给一个既没有 `replacement_pattern` 又不是动态章节的子节随便塞内容;脚本会报错。 ## 工作流 1. 修改 `templates/config.json` 中 `project.*` 与 `document.*` 的 `content`。 2. 修改 `templates/project.json` 中各章节的 `content`、`subsections`、`tables.rows`: - 第 1 章(范围)使用 `placeholders` 数组。 - 第 2 章(引用文档)使用 `tables`。 - 第 3 章(CSCI 级设计决策)使用 `replacement_pattern` + `content`。 - 第 4 章(CSCI 体系结构设计)使用 `placeholders`(4.1、4.2),4.3 作为顶层动态章节。 - 第 4.3 章(接口设计)作为顶层 `structure.4.3` 动态章节,含 `subsections`。 - 第 5 章(CSCI 详细设计)作为顶层 `structure.5` 动态章节,含 `subsections`。 - 第 6 章(需求可追踪性)使用 `tables`(正向 + 逆向)。 - 第 7 章(注释)使用 `replacement_pattern` + `content`。 3. 运行生成脚本(见下)。 4. 在 Word 中打开输出文件,按 F9 或右键「更新域」刷新目录与题注。 ## 运行 安装依赖(首次): ```bash pip install -r scripts/requirements.txt ``` 生成文档(推荐,使用命令行入口): ```bash python scripts/main.py \ --template "documents/[11][SDD] 软件设计说明-438C-2021.docx" \ --config "templates/config.json" \ --project "templates/project.json" \ --output "output/[11][SDD] 软件设计说明-438C-2021-filled.docx" ``` 或使用免参数入口: ```bash cd scripts python process.py ``` ## 已知约束 - 目录不是静态文本,脚本只负责写入标题并标记字段更新;首次打开 Word 时应刷新目录(F9 或「更新域」)。 - 模板里第 1 章标题「范围」是 `Normal` 段落而非 `Heading 1`,因此 Word 自动生成的 TOC 默认不会列出「1 范围」这条目,但章节下的 1.1/1.2/1.3 子节会照常出现;这是模板本身的行为,脚本不强行修正。 - 题注号编排以题注文字中显式给出的章号为准(例如 `表2-X` 编为 `表2-1`),`表X-X` 形式则按当前 Heading 1 章号编排。 - 这套实现是针对当前模板定制的严格版本,不是通用任意 `.docx` 模板引擎。
GitHubで見る