@zeyue0329/xiaoma-cli 1.11.0 → 1.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.playwright-cli/console-2026-05-13T06-36-26-793Z.log +2 -0
- package/.playwright-cli/page-2026-05-13T06-36-27-725Z.yml +1 -0
- package/CLAUDE.md +25 -7
- package/XiaoMa-CLI-2026H2-/350/277/255/344/273/243/350/247/204/345/210/222.pptx +0 -0
- package/demo/xiaoma-bug-circle-resolve/SKILL.md +6 -0
- package/demo/xiaoma-bug-circle-resolve/workflow.md +254 -0
- package/demo/xiaoma-bug-resolve/SKILL.md +6 -0
- package/demo/xiaoma-bug-resolve/workflow.md +269 -0
- package/demo/xiaoma-prd-saas-zh/README.md +57 -0
- package/demo/xiaoma-prd-saas-zh/domain-research.md +128 -0
- package/demo/xiaoma-prd-saas-zh/epics.md +303 -0
- package/demo/xiaoma-prd-saas-zh/market-research-2026-q1.md +183 -0
- package/demo/xiaoma-prd-saas-zh/prd-bad-examples.md +268 -0
- package/demo/xiaoma-prd-saas-zh/prd.md +409 -0
- package/demo/xiaoma-prd-saas-zh/product-brief.md +97 -0
- package/demo/xiaoma-prd-saas-zh/validation-report.md +279 -0
- package/docs/roadshow/01-/351/241/271/347/233/256/346/246/202/350/247/210/344/270/216/346/236/266/346/236/204.md +189 -0
- package/docs/roadshow/02-/346/231/272/350/203/275/344/275/223/347/263/273/347/273/237/350/257/246/350/247/243.md +464 -0
- package/docs/roadshow/03-/346/231/272/350/203/275/344/275/223/344/272/244/344/272/222/346/265/201/347/250/213/345/233/276.md +334 -0
- package/docs/roadshow/04-/345/267/245/344/275/234/346/265/201/346/211/247/350/241/214/350/257/246/350/247/243.md +1038 -0
- package/docs/roadshow/05-/346/212/200/346/234/257/345/256/236/347/216/260/344/270/216/345/210/233/346/226/260/344/272/256/347/202/271.md +205 -0
- package/docs/roadshow/06-/350/267/257/346/274/224/346/200/273/347/273/223/344/270/216/346/274/224/347/244/272/345/273/272/350/256/256.md +167 -0
- package/media/doc1_fig1.png +0 -0
- package/media/doc1_fig2.png +0 -0
- package/media/doc1_fig3.png +0 -0
- package/media/doc1_fig4.png +0 -0
- package/media/doc2_fig1.png +0 -0
- package/media/doc2_fig2.png +0 -0
- package/media/doc2_fig3.png +0 -0
- package/media/doc2_fig4.png +0 -0
- package/media/doc3_fig1.png +0 -0
- package/media/doc3_fig2.png +0 -0
- package/media/doc3_fig3.png +0 -0
- package/media/doc3_fig4.png +0 -0
- package/media/doc4_fig1.png +0 -0
- package/media/doc4_fig2.png +0 -0
- package/media/doc4_fig3.png +0 -0
- package/media/doc5_fig1.png +0 -0
- package/media/doc5_fig2.png +0 -0
- package/media/doc5_fig3.png +0 -0
- package/package.json +1 -1
- package/patent-disclosure-optimized/SKILL.md +416 -0
- package/patent-disclosure-optimized/references/disclosure-template.md +84 -0
- package/patent-disclosure-optimized/references/docx-format-spec.md +183 -0
- package/patent-disclosure-optimized/references/mining-principles.md +168 -0
- package/patent-disclosure-optimized/scripts/md2docx.js +777 -0
- package/src/core/tasks/xiaoma-create-prd/data/prd-purpose.md +157 -0
- package/src/core/tasks/xiaoma-create-prd/data/upstream-input-contract.md +168 -0
- package/src/core/tasks/xiaoma-create-prd/templates/prd-skeleton-reference.md +428 -0
- package/src/core/tasks/xiaoma-create-prd/templates/prd-template.md +101 -3
- package/src/xmc/agents/sm.agent.yaml +9 -1
- package/src/xmc/workflows/2-plan-workflows/xiaoma-validate-prd/data/prd-quality-rubric.csv +14 -0
- package/src/xmc/workflows/4-implementation/auto-story-pipeline/SKILL.md +1 -1
- package/src/xmc/workflows/4-implementation/auto-story-pipeline/steps/step-01-init-and-validate.md +10 -13
- package/src/xmc/workflows/4-implementation/auto-story-pipeline/steps/step-02-create-story.md +0 -1
- package/src/xmc/workflows/4-implementation/auto-story-pipeline/steps/step-08-complete-story.md +3 -4
- package/src/xmc/workflows/4-implementation/auto-story-pipeline/steps/step-09-finalize.md +69 -0
- package/src/xmc/workflows/4-implementation/auto-story-pipeline/workflow.md +9 -14
- package/src/xmc/workflows/4-implementation/auto-story-pipeline/xiaoma-skill-manifest.yaml +1 -1
- package/src/xmc/workflows/4-implementation/auto-story-pipeline-batch/SKILL.md +6 -0
- package/src/xmc/workflows/4-implementation/auto-story-pipeline-batch/workflow.md +333 -0
- package/src/xmc/workflows/4-implementation/auto-story-pipeline-batch/xiaoma-skill-manifest.yaml +3 -0
- package/src/xmc/workflows/5-full-pipeline/auto-full-pipeline/steps/step-01-init-and-validate.md +2 -2
- package/src/xmc/workflows/5-full-pipeline/auto-full-pipeline/steps/step-04-run-story-pipeline.md +30 -41
- package/src/xmc/workflows/5-full-pipeline/auto-full-pipeline/steps/step-05-finalize.md +2 -2
- package/src/xmc/workflows/5-full-pipeline/auto-full-pipeline/workflow.md +7 -9
- package/src/xmc/workflows/5-full-pipeline/auto-prd-to-stories/SKILL.md +6 -0
- package/src/xmc/workflows/5-full-pipeline/auto-prd-to-stories/checklist.md +43 -0
- package/src/xmc/workflows/5-full-pipeline/auto-prd-to-stories/steps/step-01-init-and-validate.md +155 -0
- package/src/xmc/workflows/5-full-pipeline/auto-prd-to-stories/steps/step-02-create-epics.md +156 -0
- package/src/xmc/workflows/5-full-pipeline/auto-prd-to-stories/steps/step-03-bridge-sprint-planning.md +143 -0
- package/src/xmc/workflows/5-full-pipeline/auto-prd-to-stories/steps/step-04-batch-create-stories.md +309 -0
- package/src/xmc/workflows/5-full-pipeline/auto-prd-to-stories/steps/step-05-finalize.md +311 -0
- package/src/xmc/workflows/5-full-pipeline/auto-prd-to-stories/workflow.md +105 -0
- package/src/xmc/workflows/5-full-pipeline/auto-prd-to-stories/xiaoma-skill-manifest.yaml +3 -0
- package//344/270/223/345/210/251/344/272/244/345/272/225/344/271/246_1_/351/235/242/345/220/221AI/346/231/272/350/203/275/344/275/223/347/232/204/345/244/232/351/200/232/351/201/223/344/276/235/350/265/226_20260318.md +483 -0
- package//344/270/223/345/210/251/344/272/244/345/272/225/344/271/246_2_/345/237/272/344/272/216/351/205/215/347/275/256/351/251/261/345/212/250/347/232/204/350/267/250/345/271/263/345/217/260IDE/346/231/272/350/203/275_20260318.md +592 -0
- package//344/270/223/345/210/251/344/272/244/345/272/225/344/271/246_3_AI/346/231/272/350/203/275/344/275/223/345/243/260/346/230/216/345/274/217/345/256/232/344/271/211/347/232/204/347/274/226/350/257/221/346/265/201/346/260/264_20260318.md +624 -0
- package//344/270/223/345/210/251/344/272/244/345/272/225/344/271/246_4_/345/237/272/344/272/216/345/223/210/345/270/214/346/214/207/347/272/271/347/232/204/346/231/272/350/203/275/344/275/223/351/231/204/345/261/236/350/265/204/346/272/220/351/200/211_20260318.md +628 -0
- package//344/270/223/345/210/251/344/272/244/345/272/225/344/271/246_5_AI/346/231/272/350/203/275/344/275/223/350/247/246/345/217/221/346/214/207/344/273/244/347/232/204/345/244/215/345/220/210/346/240/274/345/274/217/346/240/241_20260318.md +652 -0
- package/src/xmc/workflows/4-implementation/auto-story-pipeline/steps/step-09-cycle-check.md +0 -147
|
@@ -0,0 +1,416 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: patent-disclosure
|
|
3
|
+
description: "软件专利交底书撰写技能。从完整的软件项目(代码仓库、设计文档、需求文档等)中挖掘专利创新点,并生成符合专利代理人要求的技术交底书 Word 文档(.docx)。核心输出三要素:解决的技术问题、采用的技术手段、达到的技术效果。输出文档模拟人类开发工程师写法,去除 AI 味道。当用户提到以下任何内容时务必触发此技能:专利交底书、技术交底、专利挖掘、专利申请材料、发明创造点、从代码中提取专利、软件专利撰写、知识产权交底、创新点挖掘、写交底书、patent disclosure。即使用户只是随口问'这个项目有没有能申请专利的点'、'帮我看看能不能写个专利'、'这个功能能申请专利吗',也应当触发本技能。也包括用户要求分析项目代码或文档来寻找可申请专利的技术方案,或者讨论某个技术实现是否有专利价值、如何将代码逻辑转化为专利方案等场景。"
|
|
4
|
+
compatibility: "Requires docx skill for Word document generation. Requires bash and Node.js runtime."
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# 软件专利交底书撰写技能
|
|
8
|
+
|
|
9
|
+
## 概述
|
|
10
|
+
|
|
11
|
+
本技能指导 Claude 从软件项目全量材料(源代码、设计文档、需求规格、架构图等)中系统性地挖掘专利创新点,并输出规范的技术交底书 Word 文档。
|
|
12
|
+
|
|
13
|
+
**执行前必读**:在开始任何工作前,先读取以下两份参考文档——它们是本技能的权威参考,遇到细节冲突时以参考文档为准:
|
|
14
|
+
|
|
15
|
+
- `references/mining-principles.md` — 专利挖掘判定原则(三要素判定法、否定/肯定情形、常见规避问题)
|
|
16
|
+
- `references/disclosure-template.md` — 交底书模板(章节结构、各部分撰写要求、注意事项)
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## 第一阶段:项目理解与材料收集
|
|
21
|
+
|
|
22
|
+
拿到项目后,先建立全局认知,不要急于寻找专利点。
|
|
23
|
+
|
|
24
|
+
### 1.1 扫描项目结构
|
|
25
|
+
|
|
26
|
+
根据项目语言选择合适的扫描方式。优先使用 `Glob` 工具按文件类型模式匹配(如 `**/*.java`、`**/*.py`、`**/*.ts`),再用 `Read` 工具阅读关键文件。同时检查构建配置文件(pom.xml、build.gradle、package.json、pyproject.toml 等)了解技术栈。
|
|
27
|
+
|
|
28
|
+
### 1.2 阅读文档材料
|
|
29
|
+
|
|
30
|
+
按优先级阅读:
|
|
31
|
+
1. README 和项目说明
|
|
32
|
+
2. 架构设计文档、概要设计
|
|
33
|
+
3. 需求规格说明书
|
|
34
|
+
4. 数据库设计文档(DDL、ER图描述)
|
|
35
|
+
5. 接口文档、API 说明
|
|
36
|
+
|
|
37
|
+
### 1.3 分析核心代码
|
|
38
|
+
|
|
39
|
+
重点关注:
|
|
40
|
+
- 核心业务逻辑层(Service / Domain)
|
|
41
|
+
- 自定义算法和策略模式实现
|
|
42
|
+
- 中间件集成和自研组件
|
|
43
|
+
- 分布式协调、缓存策略、消息处理
|
|
44
|
+
- 数据库查询中的复杂逻辑(存储过程、复杂SQL)
|
|
45
|
+
- 异常处理和容错机制
|
|
46
|
+
|
|
47
|
+
### 1.4 现有技术调研(可选但推荐)
|
|
48
|
+
|
|
49
|
+
如果环境中有搜索工具(如 Tavily MCP 或 WebSearch),可用于辅助调研:
|
|
50
|
+
- 搜索同领域已有专利的技术方案,帮助定位创新点的差异化
|
|
51
|
+
- 了解行业通用做法,为"技术背景"章节提供素材
|
|
52
|
+
- 确认候选创新点是否已有类似公开专利
|
|
53
|
+
|
|
54
|
+
### 1.5 形成项目认知备忘
|
|
55
|
+
|
|
56
|
+
整理出:项目所属技术领域、整体架构模式、技术栈清单、核心业务流程、与外部系统的集成关系。
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## 第二阶段:专利点挖掘
|
|
61
|
+
|
|
62
|
+
这是整个流程中最关键的判定环节。**必须先阅读 `references/mining-principles.md`**,其中包含完整的三要素判定法、否定情形、肯定情形示例、常见表述陷阱等核心判定标准。
|
|
63
|
+
|
|
64
|
+
### 2.1 判定流程
|
|
65
|
+
|
|
66
|
+
对每个候选创新点,按三要素公式自检(详见参考文档):
|
|
67
|
+
|
|
68
|
+
**因为(技术问题)** → **所以(技术手段)** → **结果(技术效果)**
|
|
69
|
+
|
|
70
|
+
三步都能填满且逻辑自洽 = 合格专利点。某一步含糊或填不出来 = 不够成熟。
|
|
71
|
+
|
|
72
|
+
### 2.2 关键排除项(速查)
|
|
73
|
+
|
|
74
|
+
以下情况不构成合格专利方案(详细说明和示例见 `references/mining-principles.md`):
|
|
75
|
+
- 泛化业务需求、非技术问题、模糊描述
|
|
76
|
+
- 非技术手段、简单组合现有技术、纯智力/管理规则
|
|
77
|
+
- 仅有商业收益、运营效果、主观体验
|
|
78
|
+
- 纯代码/纯公式/纯算法原理(建议走软著)
|
|
79
|
+
- 直接使用开源框架的标准功能
|
|
80
|
+
- 纯 CRUD 操作
|
|
81
|
+
- 通用设计模式的常规应用
|
|
82
|
+
|
|
83
|
+
### 2.3 高价值方向识别
|
|
84
|
+
|
|
85
|
+
在软件项目中,以下方向容易产出合格专利点:
|
|
86
|
+
|
|
87
|
+
- **架构层**:新型服务拆分/聚合策略、自研服务治理机制、多数据源协同一致性方案、特定场景的缓存架构
|
|
88
|
+
- **算法层**:业务规则引擎实现方式、自定义数据匹配/校验算法、复杂查询优化策略、状态机流转控制逻辑
|
|
89
|
+
- **流程层**:多步骤审批编排机制、异步任务调度和补偿策略、跨系统数据同步方案、批量处理分片并行策略
|
|
90
|
+
- **可靠性层**:数据加密/脱敏机制、分布式锁应用和实现、幂等性保障方案、灾备和故障恢复策略
|
|
91
|
+
|
|
92
|
+
### 2.4 输出候选专利点清单
|
|
93
|
+
|
|
94
|
+
完成分析后,向用户呈现候选列表,每个点包含:
|
|
95
|
+
- 创新点名称(一句话概括)
|
|
96
|
+
- 所属模块/代码位置
|
|
97
|
+
- 三要素初步描述(问题→手段→效果,各1-2句话)
|
|
98
|
+
- 建议优先级(高/中/低)
|
|
99
|
+
|
|
100
|
+
**在此暂停,等待用户确认要撰写哪些点后再进入下一阶段。**
|
|
101
|
+
|
|
102
|
+
同时收集交底书所需的基本信息(如果用户尚未提供):
|
|
103
|
+
- 发明人姓名(可以有多位)
|
|
104
|
+
- 技术问题联系人及联系方式(电话、邮箱)
|
|
105
|
+
- 是否有特定的保密要求
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
## 第三阶段:交底书撰写
|
|
110
|
+
|
|
111
|
+
### 3.1 文档结构
|
|
112
|
+
|
|
113
|
+
交底书结构来自 `references/disclosure-template.md`,按以下章节顺序输出:
|
|
114
|
+
|
|
115
|
+
```
|
|
116
|
+
交底书名称:一种基于XXX的YYY方法/系统
|
|
117
|
+
发明人:(由用户提供)
|
|
118
|
+
技术问题联系人:(由用户提供)
|
|
119
|
+
|
|
120
|
+
该发明所属技术领域:
|
|
121
|
+
术语解释:
|
|
122
|
+
|
|
123
|
+
1、详细介绍技术背景,并描述已有的与本发明最相近似的实现方案
|
|
124
|
+
2、现有技术的缺点是什么?针对这些缺点,说明本发明的目的
|
|
125
|
+
3、本发明技术方案的详细阐述(结合附图说明)
|
|
126
|
+
3.1 基本原理
|
|
127
|
+
3.2 详细的技术方案
|
|
128
|
+
4、与第1部分所述的现有技术相比,本发明有何优点
|
|
129
|
+
5、本发明的关键点和欲保护点是什么?
|
|
130
|
+
6、针对第3部分的技术方案,是否还有别的替代方案同样能完成发明目的?
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
### 3.2 各章节撰写要点
|
|
134
|
+
|
|
135
|
+
#### 交底书名称
|
|
136
|
+
格式:"一种基于XXX的YYY方法/系统/装置"。体现核心技术手段和应用领域,不出现商标/产品名/公司名,控制在25字以内。
|
|
137
|
+
|
|
138
|
+
#### 技术领域
|
|
139
|
+
一句话说明。示例:"本发明涉及计算机软件技术领域,具体涉及一种分布式系统中的数据一致性保障方法。"
|
|
140
|
+
|
|
141
|
+
#### 术语解释
|
|
142
|
+
列出代理人可能不理解的专业术语。英文缩写必须有中文译文。全文对同一事物叫法统一。
|
|
143
|
+
|
|
144
|
+
#### 第1部分:技术背景与最相近方案
|
|
145
|
+
- 描述行业中处理同类问题的通用做法(不点名竞品)
|
|
146
|
+
- 客观分析现有做法的技术局限,要有技术细节支撑
|
|
147
|
+
- 可以引用技术原理解释为什么现有方案存在瓶颈
|
|
148
|
+
|
|
149
|
+
#### 第2部分:现有技术缺点与发明目的
|
|
150
|
+
- 缺点要与本发明的优点对应——本发明不能解决的缺点不必写
|
|
151
|
+
- 找不出对比方案缺点时用反推法:根据本发明优点找对应缺点
|
|
152
|
+
- 缺点描述要具体:成本高、效率低、误码率高、反应速度慢等
|
|
153
|
+
|
|
154
|
+
#### 第3部分:技术方案详细阐述(核心章节)
|
|
155
|
+
|
|
156
|
+
这是交底书最重要的部分,代理人写权利要求书主要依赖此章节。
|
|
157
|
+
|
|
158
|
+
**3.1 基本原理**:从原理层面概括说明如何解决上述技术问题。
|
|
159
|
+
|
|
160
|
+
**3.2 详细技术方案**,必须做到:
|
|
161
|
+
- 说明系统包括哪些模块,各模块如何连接和协作
|
|
162
|
+
- 各模块分别起什么作用、完成什么功能
|
|
163
|
+
- 哪个部件、哪种连接是创新点,具体描述结构细节
|
|
164
|
+
- 方法类专利需说明流程步骤,从数据流角度详细描述
|
|
165
|
+
- 涉及数据结构的要说明字段含义
|
|
166
|
+
- 涉及算法的要描述完整逻辑流程
|
|
167
|
+
- 异常场景的处理也要覆盖
|
|
168
|
+
|
|
169
|
+
**容易踩的坑**(专利法第26条"充分公开"要求):
|
|
170
|
+
- 只写原理不写实现步骤——审查员无法判断方案是否可行
|
|
171
|
+
- 只描述功能不说明技术手段——"功能限定"是最常见的驳回理由
|
|
172
|
+
- 标准是:本领域技术人员读完后不需要额外创造性劳动就能实现
|
|
173
|
+
|
|
174
|
+
#### 第4-6部分
|
|
175
|
+
- **第4部分**:结合技术方案,用因果关系推理说明优点,对应第2部分发明目的
|
|
176
|
+
- **第5部分**:提炼关键创新点列表(1、2、3...),对应第4部分有益效果的关键技术点
|
|
177
|
+
- **第6部分**:写明替代方案(部分结构/方法步骤的替代或完整替代方案),有助于扩大保护范围
|
|
178
|
+
|
|
179
|
+
#### 附图说明
|
|
180
|
+
列出建议配图内容(实际绘图由用户完成):方法专利必须提供流程图,并提供相关的系统装置图。所有附图都应有详细文字描述,附图中的标注尽量用中文。
|
|
181
|
+
|
|
182
|
+
---
|
|
183
|
+
|
|
184
|
+
## 第四阶段:去 AI 味道——工程师写作风格
|
|
185
|
+
|
|
186
|
+
专利代理人每天审阅大量交底书,AI 生成的文档有明显的"机器感"。以下风格指南帮助输出更接近真实工程师的写作习惯。
|
|
187
|
+
|
|
188
|
+
### 4.1 用词替换表
|
|
189
|
+
|
|
190
|
+
| 避免(AI 味道重) | 改用(工程师习惯) |
|
|
191
|
+
|---|---|
|
|
192
|
+
| 本发明创造性地提出了 | 本方案采用了 |
|
|
193
|
+
| 显著地提升了性能 | 实测吞吐量提升约40% |
|
|
194
|
+
| 巧妙地解决了 | 通过XX方式解决了 |
|
|
195
|
+
| 革命性的/突破性的 | (删除,直接说效果数字) |
|
|
196
|
+
| 不可忽视的优势 | 主要改进在于 |
|
|
197
|
+
| 值得注意的是 | (删除,直接说) |
|
|
198
|
+
| 在一个实施例中 | 以XX场景为例 |
|
|
199
|
+
| 综上所述 | (一般不需要,直接写结论) |
|
|
200
|
+
| 确保了系统的鲁棒性 | 当XX异常时,系统通过YY机制恢复 |
|
|
201
|
+
| 本发明旨在 | 本方案的目标是 |
|
|
202
|
+
| 进一步地 | 在此基础上 |
|
|
203
|
+
| 需要说明的是 | (直接说,不加前缀) |
|
|
204
|
+
| 可以理解的是 | (删除) |
|
|
205
|
+
| 作为一种可选的实施方式 | 另一种做法是 |
|
|
206
|
+
|
|
207
|
+
### 4.2 工程师句式特征
|
|
208
|
+
|
|
209
|
+
- 喜欢用具体数字:"响应时间从3s降到200ms"而不是"大幅提升"
|
|
210
|
+
- 会提到具体技术组件:"使用 Redis 的 SETNX 命令实现分布式锁"
|
|
211
|
+
- 描述逻辑偏好时序结构:"先...然后...最后..."
|
|
212
|
+
- 解释设计决策:"之所以选择XX,是因为..."、"这里用XX而不是YY,主要考虑是..."
|
|
213
|
+
- 坦诚取舍:"这种方式会增加约15%的内存开销,但换来了..."
|
|
214
|
+
- 常用短句,段落不超过3-6句话
|
|
215
|
+
- 夹杂技术术语英文原词(failover、sharding、backpressure)
|
|
216
|
+
- 用括号补充说明:"消息队列(本方案使用 RocketMQ)"
|
|
217
|
+
|
|
218
|
+
### 4.3 内容真实感
|
|
219
|
+
|
|
220
|
+
- 性能数据要合理(不写不可能的数字)
|
|
221
|
+
- 技术选型符合实际生态(Java 项目不会用 Go 的库)
|
|
222
|
+
- 可以轻描淡写提一句方案局限性,显示作者客观性
|
|
223
|
+
- 适当使用"实际运行中"、"生产环境下"等词汇增强真实感
|
|
224
|
+
|
|
225
|
+
### 4.4 自检清单
|
|
226
|
+
|
|
227
|
+
撰写完成后,逐段检查:
|
|
228
|
+
- [ ] 有没有"显著"、"创造性"、"巧妙"等 AI 常用评价词?删掉
|
|
229
|
+
- [ ] 有没有空泛的效果描述?替换为具体数据或技术指标
|
|
230
|
+
- [ ] 技术方案部分是否有纯原理或纯功能表述?补充实现细节
|
|
231
|
+
- [ ] 每个技术效果是否都能追溯到具体的技术手段?建立因果链
|
|
232
|
+
- [ ] 术语是否统一?同一事物是否存在多种叫法?
|
|
233
|
+
- [ ] 英文缩写是否都有中文解释?
|
|
234
|
+
|
|
235
|
+
### 4.5 完整段落 Before/After 示例
|
|
236
|
+
|
|
237
|
+
**Before(AI 味道浓)**:
|
|
238
|
+
|
|
239
|
+
> 本发明创造性地提出了一种高效的票据签收处理方法。该方法显著提升了系统的处理能力,巧妙地解决了传统方案中存在的性能瓶颈问题。通过采用先进的批量处理技术,本发明确保了系统在高并发场景下的鲁棒性,实现了革命性的性能突破。
|
|
240
|
+
|
|
241
|
+
**After(工程师风格)**:
|
|
242
|
+
|
|
243
|
+
> 本方案针对票据签收环节的并发处理问题,采用了请求合并+批量校验的方式。具体做法是:将200ms时间窗口内到达的签收请求合并为一个批次,对同一承兑人的票据共享额度查询结果,避免重复调用外部征信接口。实测在300笔/秒的并发压力下,单笔平均处理耗时从4.2s降到了380ms,数据库查询次数减少约65%。这种方式会引入最多200ms的额外等待,但在票据业务场景下(用户对秒级延迟不敏感)是可接受的。
|
|
244
|
+
|
|
245
|
+
---
|
|
246
|
+
|
|
247
|
+
## 第五阶段:生成 Word 文档
|
|
248
|
+
|
|
249
|
+
交底书输出为 .docx 格式。**必须先阅读 docx skill 获取 docx-js 最新的使用指南和注意事项**(路径通常在同级 skills 目录下的 `docx/SKILL.md`)。docx skill 中包含了完整的文档创建、验证流程和关键规则,务必遵循。
|
|
250
|
+
|
|
251
|
+
> **格式权威参考**:本节给出的字体、字号、行距、颜色、首行缩进、对齐方式全部来自客户提供的《技术交底书模板.doc》。若客户另外给出模板文件,应以客户模板为准,并按相同方法(unpack → 读 styles.xml + document.xml)提取规范后覆盖此处默认值。
|
|
252
|
+
>
|
|
253
|
+
> 详细格式速查表见 `references/docx-format-spec.md`。
|
|
254
|
+
> 已封装的转换实现见 `scripts/md2docx.js`(推荐直接调用,无需重复编写)。
|
|
255
|
+
|
|
256
|
+
### 5.1 页面与基本参数
|
|
257
|
+
|
|
258
|
+
| 项目 | 取值 | 备注 |
|
|
259
|
+
| --- | --- | --- |
|
|
260
|
+
| 纸张 | A4 | 宽 11906 × 高 16838 DXA |
|
|
261
|
+
| 上下页边距 | 2.54cm(1440 DXA) | |
|
|
262
|
+
| 左右页边距 | 3.17cm(1800 DXA) | 即模板默认值 |
|
|
263
|
+
| 页码 | 底部居中,9pt | 用 `PageNumber.CURRENT` |
|
|
264
|
+
| 默认颜色 | 黑色 `#000000` | 蓝色 `#0000FF` 仅用于占位提示语,正式内容一律用黑色 |
|
|
265
|
+
|
|
266
|
+
### 5.2 四类段落样式(**严格执行**)
|
|
267
|
+
|
|
268
|
+
字号单位说明:docx-js 的 `size` 字段使用半磅,10.5pt = 21,18pt = 36,9pt = 18。
|
|
269
|
+
|
|
270
|
+
| 段落类型 | 触发条件 | 东亚字体 | 西文字体 | 字号 | 字形 | 对齐 | 行距 | 首行缩进 |
|
|
271
|
+
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
|
|
272
|
+
| 大标题 | 仅文档首行的「技术交底书」 | 楷体_GB2312 | Times New Roman | 18pt(sz=36) | 加粗 | 居中 | 固定 21pt(line=420 exact) | 无 |
|
|
273
|
+
| 头部字段 | `**交底书名称:**…` `**本专利发明人:**…` `**技术问题联系人:**…` `**联系人电话:**…` `**E-MAIL:**…` 五行 | 仿宋_GB2312 | Times New Roman | 10.5pt(sz=21) | 加粗 | 左对齐 | 1.5x(line=360 auto) | 无 |
|
|
274
|
+
| 章节标题 | Markdown `#` / `##` / `###` / `####` | 楷体_GB2312 | Times New Roman | 10.5pt(sz=21) | 加粗 | 左对齐 | 固定 21pt(line=420 exact) | 无 |
|
|
275
|
+
| 正文 | 其余段落、列表、表格内文字 | 宋体 | Times New Roman | 10.5pt(sz=21) | 常规 | 两端对齐(both) | 1.5x(line=360 auto) | 2 个汉字(firstLine=420 twips) |
|
|
276
|
+
| 行内代码 / 代码块 | `` `code` `` / ``` ``` ``` | 宋体(兜底) | Consolas | 10pt(sz=20) | 常规 | 左对齐 | 1.25x(line=300 auto) | 无;底色 `#F5F5F5` |
|
|
277
|
+
| 表格表头 | 表格首行 | 宋体 | Times New Roman | 10.5pt | 加粗 | 居中 | 1.25x | — |
|
|
278
|
+
| 表格单元格 | 表格其它行 | 宋体 | Times New Roman | 10.5pt | 常规 | 左对齐 | 1.25x | — |
|
|
279
|
+
| 附图 | 独立成行的 `` | — | — | 等比缩放至内容宽度 540px / 高度上限 720px | — | 居中 | 1.5x | — |
|
|
280
|
+
| 图注 | 紧跟附图,沿用 alt 文字 | 宋体 | Times New Roman | 10pt(sz=20) | 斜体 | 居中 | 1.25x | — |
|
|
281
|
+
|
|
282
|
+
### 5.3 docx-js API 关键写法
|
|
283
|
+
|
|
284
|
+
docx-js 中 `font` 字段必须显式区分四个槽位,否则东亚字体会被覆写:
|
|
285
|
+
|
|
286
|
+
```js
|
|
287
|
+
// ❌ 错误:name 会被同时填到 eastAsia,把中文字体清掉
|
|
288
|
+
new TextRun({ text: "中文 English", font: { name: "Times New Roman", eastAsia: "宋体" } });
|
|
289
|
+
|
|
290
|
+
// ✅ 正确:分别声明 ascii / hAnsi / cs / eastAsia
|
|
291
|
+
new TextRun({
|
|
292
|
+
text: "中文 English",
|
|
293
|
+
font: { ascii: "Times New Roman", hAnsi: "Times New Roman", cs: "Times New Roman", eastAsia: "宋体" },
|
|
294
|
+
size: 21,
|
|
295
|
+
color: "000000",
|
|
296
|
+
});
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
颜色字段必须传 6 位十六进制不带 `#`:
|
|
300
|
+
|
|
301
|
+
```js
|
|
302
|
+
new TextRun({ ..., color: "000000" }); // 全文统一黑色;蓝色 "0000FF" 仅用于占位提示
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
### 5.4 附图嵌入(**强制:必须真正嵌入图片,不可用文本描述代替**)
|
|
306
|
+
|
|
307
|
+
代理人审阅交底书时需要直接看到附图。生成 docx 时,md 中的 `` 必须被解析为真实图片嵌入到对应位置,**严禁**保留 `[附图1 - 四遍扫描整体流程](media/doc1_fig1.png)` 这类纯文本形式。
|
|
308
|
+
|
|
309
|
+
#### 5.4.1 Markdown 写法
|
|
310
|
+
|
|
311
|
+
附图必须 **独立成行**:
|
|
312
|
+
|
|
313
|
+
```markdown
|
|
314
|
+

|
|
315
|
+
```
|
|
316
|
+
|
|
317
|
+
不要把附图与正文混排在同一段;非独立行的 `![]()` 不会触发图片嵌入。
|
|
318
|
+
|
|
319
|
+
#### 5.4.2 文件组织
|
|
320
|
+
|
|
321
|
+
- 每篇交底书 md 的同目录下建立 `media/` 子目录,把附图统一放在里面
|
|
322
|
+
- 命名建议:`doc{交底书序号}_fig{图序}.png`,如 `media/doc1_fig1.png`、`media/doc2_fig3.png`
|
|
323
|
+
- 路径解析以 md 文件所在目录为基准,支持相对路径或绝对路径
|
|
324
|
+
|
|
325
|
+
#### 5.4.3 嵌入规则(已在 `scripts/md2docx.js` 中实现)
|
|
326
|
+
|
|
327
|
+
| 项 | 取值 |
|
|
328
|
+
| --- | --- |
|
|
329
|
+
| 支持格式 | png / jpg / jpeg / gif / bmp / svg |
|
|
330
|
+
| 真实像素读取 | png:解析 IHDR 块;其它:按 4:3 兜底 |
|
|
331
|
+
| 目标宽度 | 540 px(≈A4 内容区宽 8306 DXA 留少量边距) |
|
|
332
|
+
| 高度上限 | 720 px;超限时按高度反算宽度 |
|
|
333
|
+
| 缩放方式 | 等比,绝不拉伸 / 绝不裁剪 |
|
|
334
|
+
| 图片段落 | 居中,1.5x 行距,段前 120 / 段后 40 twips |
|
|
335
|
+
| 图注 | 自动用 `alt` 文本生成;居中宋体 10pt 斜体;alt 为空时不输出 |
|
|
336
|
+
| 容错 | 图片不存在时插入红色 `[图片缺失] alt (src)`,不中断转换 |
|
|
337
|
+
|
|
338
|
+
#### 5.4.4 docx-js 关键写法
|
|
339
|
+
|
|
340
|
+
```js
|
|
341
|
+
new ImageRun({
|
|
342
|
+
type: "png", // 必填
|
|
343
|
+
data: fs.readFileSync(absPath),
|
|
344
|
+
transformation: { width: 540, height: 360 },
|
|
345
|
+
altText: { title: alt, description: alt, name: path.basename(absPath) }, // 三字段全填
|
|
346
|
+
});
|
|
347
|
+
```
|
|
348
|
+
|
|
349
|
+
`scripts/md2docx.js` 已封装路径解析、IHDR 读取、等比缩放、图注、容错;直接调用脚本即可,无需手写 ImageRun。
|
|
350
|
+
|
|
351
|
+
### 5.5 生成流程
|
|
352
|
+
|
|
353
|
+
推荐路径(无需重复造轮子):
|
|
354
|
+
|
|
355
|
+
1. 阅读 docx skill(`docx/SKILL.md`),掌握 docx-js 基本规则与 `scripts/office/validate.py` 的调用方式
|
|
356
|
+
2. `npm install docx`(项目级或工作区)
|
|
357
|
+
3. 把 md 与 `media/` 子目录放好;md 中通过 `` 引用附图
|
|
358
|
+
4. 直接调用本技能自带的 `scripts/md2docx.js`:
|
|
359
|
+
```bash
|
|
360
|
+
node patent-disclosure-optimized/scripts/md2docx.js \
|
|
361
|
+
专利交底书_<发明名称简写>_<YYYYMMDD>.md \
|
|
362
|
+
专利交底书_<发明名称简写>_<YYYYMMDD>.docx
|
|
363
|
+
```
|
|
364
|
+
脚本会按 5.2 / 5.4 节规范自动处理:大标题、五个头部字段、章节标题、正文、表格、列表、代码块、**附图嵌入与图注**。
|
|
365
|
+
5. 用 `docx/scripts/office/validate.py` 校验生成文件
|
|
366
|
+
6. 解包抽样核对(**附图与字体颜色都要查**):
|
|
367
|
+
```bash
|
|
368
|
+
python scripts/office/unpack.py 输出.docx tmp/
|
|
369
|
+
grep -oE 'w:eastAsia="[^"]+"' tmp/word/document.xml | sort | uniq -c
|
|
370
|
+
grep -oE 'w:color w:val="[A-F0-9]+"' tmp/word/document.xml | sort | uniq -c
|
|
371
|
+
ls tmp/word/media/ | wc -l # 内嵌图片数应等于 md 中独立 ![]() 行数
|
|
372
|
+
```
|
|
373
|
+
期望:
|
|
374
|
+
- 楷体_GB2312(标题)≥ 章节数;仿宋_GB2312 = 5(五个头部字段);其余 = 宋体
|
|
375
|
+
- 颜色仅 `000000`(除非保留蓝色占位语)
|
|
376
|
+
- **`tmp/word/media/` 下图片数 = md 中独立 `` 行数**
|
|
377
|
+
7. 将最终文件保存到用户的工作目录
|
|
378
|
+
|
|
379
|
+
### 5.6 文档命名
|
|
380
|
+
|
|
381
|
+
`专利交底书_<发明名称简写>_<日期YYYYMMDD>.docx`
|
|
382
|
+
|
|
383
|
+
### 5.7 客户给了不同模板的情况
|
|
384
|
+
|
|
385
|
+
若客户提供新模板(如《技术交底书模板.doc》),按以下流程更新格式:
|
|
386
|
+
|
|
387
|
+
1. 用 `soffice.py --convert-to docx` 把 .doc 转为 .docx
|
|
388
|
+
2. `python scripts/office/unpack.py 模板.docx tmpl/` 解包
|
|
389
|
+
3. 读 `tmpl/word/styles.xml`(默认 rFonts、字号、行距)与 `tmpl/word/document.xml`(实际样例段落的 rPr)
|
|
390
|
+
4. 重点提取:默认字体(rFontsDefault)、行距(spacing.line + lineRule)、首行缩进(ind.firstLineChars / firstLine)、各类标题字体与颜色、占位提示语颜色(如 `0000FF`)
|
|
391
|
+
5. 把新参数覆盖到 `scripts/md2docx.js` 顶部的常量(FONT_BODY_EAST / FONT_HEADING_EAST / FONT_TITLE_EAST / FONT_HEADER_FIELD_EAST / SIZE_BODY / SIZE_TITLE / BODY_LINE_SPACING / HEADING_LINE_SPACING / BODY_FIRST_LINE_INDENT),同时在本节表格里记录变更
|
|
392
|
+
|
|
393
|
+
---
|
|
394
|
+
|
|
395
|
+
## 工作流程总结
|
|
396
|
+
|
|
397
|
+
```
|
|
398
|
+
用户提交项目材料(代码仓库 + 文档)
|
|
399
|
+
|
|
|
400
|
+
[阶段1] 扫描结构 → 读文档 → 分析核心代码 → (可选)现有技术调研 → 形成项目认知
|
|
401
|
+
→ 输出:项目技术概况备忘
|
|
402
|
+
|
|
|
403
|
+
[阶段2] 阅读 mining-principles.md → 三要素判定法筛选 → 排除否定情形 → 输出候选清单
|
|
404
|
+
→ 输出:候选专利点列表(含优先级)
|
|
405
|
+
|
|
|
406
|
+
⏸️ 暂停:等用户确认写哪些点 + 收集发明人信息
|
|
407
|
+
|
|
|
408
|
+
[阶段3] 阅读 disclosure-template.md → 按模板6章节结构逐章撰写
|
|
409
|
+
→ 输出:交底书文本初稿
|
|
410
|
+
|
|
|
411
|
+
[阶段4] 逐段去 AI 味道检查 → 自检清单过一遍
|
|
412
|
+
→ 输出:工程师风格的终稿
|
|
413
|
+
|
|
|
414
|
+
[阶段5] 阅读 docx skill → 生成 .docx → 校验 → 交付
|
|
415
|
+
→ 输出:专利交底书_XXX_日期.docx
|
|
416
|
+
```
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
**技术交底书**
|
|
2
|
+
|
|
3
|
+
**交底书名称:**
|
|
4
|
+
|
|
5
|
+
**本专利发明人:刘二杨**
|
|
6
|
+
|
|
7
|
+
**技术问题联系人: 刘二杨**
|
|
8
|
+
|
|
9
|
+
**联系人电话:** 13473186668
|
|
10
|
+
|
|
11
|
+
**E-MAIL:** [liueryang@yljr.com]{.underline}
|
|
12
|
+
|
|
13
|
+
**该发明所属技术领域:**
|
|
14
|
+
|
|
15
|
+
**术语解释:**(请将您认为代理人可能不理解的术语进行解释)
|
|
16
|
+
|
|
17
|
+
**1、详细介绍技术背景,并描述已有的与本发明最相近似的实现方案**
|
|
18
|
+
|
|
19
|
+
> (背景技术及现有技术方案)
|
|
20
|
+
|
|
21
|
+
**2、现有技术的缺点是什么?针对这些缺点,说明本发明的目的。**
|
|
22
|
+
|
|
23
|
+
> (请客观评价,现有技术的缺点是针对于本发明的优点来说的,本发明不能解决的缺点不必写;基于本发明能解决的问题写出发明的目的。
|
|
24
|
+
>
|
|
25
|
+
> 2.1
|
|
26
|
+
> 如果找不出对比技术方案及其缺点,可用反推法,根据本发明的优点来找现有技术对应的缺点;
|
|
27
|
+
|
|
28
|
+
2.2 本发明不能解决的缺点,不需提供;
|
|
29
|
+
|
|
30
|
+
2.3 缺点可以是成本高、效率低、不环保、误码率高、反应速度慢等类似问题。)
|
|
31
|
+
|
|
32
|
+
> **3、本发明技术方案的详细阐述,应该结合附图进行说明(附图可以是流程图、原理框图、电路图、时序图等)**
|
|
33
|
+
>
|
|
34
|
+
> (所有附图都应该有详细的文字描述,同时附图中的关键词或方框图中的注释都尽量用中文;方法专利都应该提供一个流程图,并提供相关的系统装置)。
|
|
35
|
+
>
|
|
36
|
+
> 3.1 基本原理(从原理、概括的层次说明本发明是如何解决上述技术问题的?)
|
|
37
|
+
>
|
|
38
|
+
> 3.2
|
|
39
|
+
> 详细的技术方案*(*专利必须是一个技术方案,应该阐述发明目的通过什么技术方案来实现的,不能只有原理,也不能只做功能介绍.
|
|
40
|
+
> )
|
|
41
|
+
|
|
42
|
+
*例如,对于您开发完成的产品而言,包括哪些模块(部件),各个模块(部件)之间是如何相关连接和相互工作的?各个模块(部件)分别起什么作用,完成什么功能?*
|
|
43
|
+
|
|
44
|
+
*对于您需要保护的结构而言,哪个部件、哪种连接是您的创新,具体部件、连接的结构细部描述、在产品中所起的关键作用。对于您需要保护的工艺或制作方法而言,需要哪些步骤,如何控制工艺参数的设置。对于您希望保护的方法而言,需要哪些流程步骤?请详细说明,需要采用数据流的角度说明流程步骤。*
|
|
45
|
+
|
|
46
|
+
**4、与第1部分所述的现有技术相比,本发明有何优点**
|
|
47
|
+
|
|
48
|
+
> *4.1
|
|
49
|
+
> 结合技术方案来描述,做到有理有据,即用推理或因果关系的方式推理说明;*
|
|
50
|
+
>
|
|
51
|
+
> *4.2 可以对应第2部分的发明目的来描述。*
|
|
52
|
+
|
|
53
|
+
**5、本发明的关键点和欲保护点是什么?**
|
|
54
|
+
|
|
55
|
+
> (本部分是提炼出技术方案的关键创新点,列出1、2、3\...,以提醒代理人注意,便于专利代理人撰写权利要求书)
|
|
56
|
+
>
|
|
57
|
+
> *5.1简单点明;*
|
|
58
|
+
>
|
|
59
|
+
> *5.2 具体可以对应第4部分能给本发明带来有益效果(优点)的关键技术点。*
|
|
60
|
+
|
|
61
|
+
**6、针对第3部分的技术方案,是否还有别的替代方案同样能完成发明目的?**
|
|
62
|
+
|
|
63
|
+
> *6.1
|
|
64
|
+
> 如果有,请尽量写明,内容的提供可以扩大专利的保护范围,防止他人绕过本技术去实现同样的发明目的;*
|
|
65
|
+
>
|
|
66
|
+
> *6.2
|
|
67
|
+
> 所述替代可以是部分结构、器件、方法步骤的替代,也可以是完整的技术方案。*
|
|
68
|
+
|
|
69
|
+
**注意:**
|
|
70
|
+
|
|
71
|
+
1\.
|
|
72
|
+
代理人并不是技术专家,交底书要使代理人能看懂,**尤其是第3点本发明技术方案**,一定要写的全面、清楚。
|
|
73
|
+
|
|
74
|
+
2.英文缩写有中文译文,避免使用英文单词,最好在术语解释部分给出。
|
|
75
|
+
|
|
76
|
+
3.全文对同一事物的叫法应统一,避免出现一种东西多种叫法。
|
|
77
|
+
|
|
78
|
+
4.认为需要保密的地方可在交底书中注明,对代理人不必保密。
|
|
79
|
+
|
|
80
|
+
5.专利法规定:
|
|
81
|
+
|
|
82
|
+
1) 专利必须是一个技术方案,应该阐述发明目的是通过什么技术方案来实现的,不能只有原理,也不能只做功能介绍;
|
|
83
|
+
|
|
84
|
+
2) 专利必须充分公开,以本领域技术人员不需付出创造性劳动即可实现为准。
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
# 专利交底书 .docx 输出格式规范
|
|
2
|
+
|
|
3
|
+
本文档是 `SKILL.md` 第五阶段格式规范的详细附录,来源于客户提供的《技术交底书模板.doc》。规范用于驱动 `scripts/md2docx.js` 生成符合代理人审阅习惯的 .docx 文档。
|
|
4
|
+
|
|
5
|
+
## 1. 页面参数
|
|
6
|
+
|
|
7
|
+
| 项 | 取值 |
|
|
8
|
+
| --- | --- |
|
|
9
|
+
| 纸张 | A4(宽 11906 DXA × 高 16838 DXA) |
|
|
10
|
+
| 上下页边距 | 1440 DXA(≈2.54 cm) |
|
|
11
|
+
| 左右页边距 | 1800 DXA(≈3.17 cm) |
|
|
12
|
+
| 页码 | 底部居中,9pt(sz=18),字体随正文 |
|
|
13
|
+
| 行号、装订线 | 不启用 |
|
|
14
|
+
|
|
15
|
+
## 2. 字体清单
|
|
16
|
+
|
|
17
|
+
| 角色 | 东亚字体(eastAsia) | 西文字体(ascii / hAnsi / cs) | 用途 |
|
|
18
|
+
| --- | --- | --- | --- |
|
|
19
|
+
| 正文 | 宋体 | Times New Roman | 段落、表格单元格、列表项 |
|
|
20
|
+
| 章节标题 | 楷体_GB2312 | Times New Roman | `#` / `##` / `###` / `####` |
|
|
21
|
+
| 大标题 | 楷体_GB2312 | Times New Roman | 文档首行「技术交底书」 |
|
|
22
|
+
| 头部字段 | 仿宋_GB2312 | Times New Roman | 交底书名称 / 发明人 / 联系人 / 电话 / E-MAIL |
|
|
23
|
+
| 代码 | 宋体(兜底) | Consolas | 行内 `` ` `` 与 ``` ``` |
|
|
24
|
+
|
|
25
|
+
> 字体名按模板原文写为 `宋体`、`楷体_GB2312`、`仿宋_GB2312`。Mac/Linux 缺字时可在 fontTable.xml 中追加 fallback,本规范不强制。
|
|
26
|
+
|
|
27
|
+
## 3. 字号
|
|
28
|
+
|
|
29
|
+
| 角色 | 字号 | docx-js `size`(半磅) | 行内字符 size |
|
|
30
|
+
| --- | --- | --- | --- |
|
|
31
|
+
| 大标题 | 18pt(二号) | 36 | — |
|
|
32
|
+
| 正文 / 标题 / 头部字段 | 10.5pt(五号) | 21 | — |
|
|
33
|
+
| 代码 | 10pt | 20 | — |
|
|
34
|
+
| 页码 | 9pt | 18 | — |
|
|
35
|
+
|
|
36
|
+
> 章节标题与正文同字号,仅"字体 + 加粗"区分;不要把章节标题做大字号,与模板不符。
|
|
37
|
+
|
|
38
|
+
## 4. 段落参数
|
|
39
|
+
|
|
40
|
+
| 段落 | 行距 | 对齐 | 首行缩进 | 段前 / 段后 |
|
|
41
|
+
| --- | --- | --- | --- | --- |
|
|
42
|
+
| 大标题 | line=420 exact | center | 无 | 240 / 240 |
|
|
43
|
+
| 头部字段 | line=360 auto(1.5x) | left | 无 | 0 / 0 |
|
|
44
|
+
| 章节标题 H1 | line=420 exact | left | 无 | 240 / 120 |
|
|
45
|
+
| 章节标题 H2 | line=420 exact | left | 无 | 160 / 80 |
|
|
46
|
+
| 章节标题 H3 | line=420 exact | left | 无 | 140 / 60 |
|
|
47
|
+
| 章节标题 H4 | line=420 exact | left | 无 | 120 / 60 |
|
|
48
|
+
| 正文 | line=360 auto(1.5x) | both(两端对齐) | 420 twips(2 字) | 0 / 0 |
|
|
49
|
+
| 列表项 | line=360 auto | both | 720 hanging 360 | 0 / 0 |
|
|
50
|
+
| 代码块行 | line=300 auto | left | 无 | 0 / 0;底色 `#F5F5F5` |
|
|
51
|
+
|
|
52
|
+
行距单位说明:在 docx-js 里 `spacing.line` 单位为二十分之一磅;`lineRule: "exact"` 表示固定行高,`"auto"` 表示倍数(240 = 1x,360 = 1.5x,420 = 21pt 固定)。
|
|
53
|
+
|
|
54
|
+
## 5. 颜色
|
|
55
|
+
|
|
56
|
+
| 角色 | RGB |
|
|
57
|
+
| --- | --- |
|
|
58
|
+
| 正文 / 标题 / 头部 / 表格 / 列表 / 代码 | `#000000`(黑) |
|
|
59
|
+
| 占位提示语(如「(请客观评价…)」) | `#0000FF`(模板蓝),仅出现在保留模板占位的场合 |
|
|
60
|
+
| 表格表头底色 | `#E7E6E6` |
|
|
61
|
+
| 代码块底色 | `#F5F5F5` |
|
|
62
|
+
|
|
63
|
+
> 正式交付的交底书中不应出现模板蓝;若文档中出现蓝色文字,说明仍残留模板占位语,需替换为真实内容。
|
|
64
|
+
|
|
65
|
+
## 6. 附图嵌入规范
|
|
66
|
+
|
|
67
|
+
代理人审阅交底书时需要直接看到附图,**不能**接受 `[]` 这类文本描述形式。生成 docx 时必须把图片真正嵌入到对应位置。
|
|
68
|
+
|
|
69
|
+
### 6.1 Markdown 写法
|
|
70
|
+
|
|
71
|
+
附图必须 **独立成行**:
|
|
72
|
+
|
|
73
|
+
```markdown
|
|
74
|
+

|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
不要把附图与正文混排在同一段;非独立行的 `![]()` 不会触发图片嵌入,仍按文本处理。
|
|
78
|
+
|
|
79
|
+
### 6.2 文件组织
|
|
80
|
+
|
|
81
|
+
- 推荐每篇交底书 md 的同目录下建立 `media/` 子目录,把附图放在里面
|
|
82
|
+
- 命名建议:`doc{交底书序号}_fig{图序}.png`,例如 `media/doc1_fig1.png`、`media/doc1_fig2.png`
|
|
83
|
+
- 路径解析以 md 文件所在目录为基准;只支持相对路径或绝对路径
|
|
84
|
+
|
|
85
|
+
### 6.3 嵌入与缩放规则
|
|
86
|
+
|
|
87
|
+
| 项 | 取值 |
|
|
88
|
+
| --- | --- |
|
|
89
|
+
| 支持格式 | png / jpg / jpeg / gif / bmp / svg |
|
|
90
|
+
| 真实像素读取 | png:解析 IHDR 块拿真实宽高;其它格式:按 4:3 兜底 |
|
|
91
|
+
| 目标宽度 | 540 px(≈内容区宽度 8306 DXA,留少量边距) |
|
|
92
|
+
| 高度上限 | 720 px |
|
|
93
|
+
| 缩放 | 等比;高度超限时按高度反算宽度,绝不裁剪、绝不拉伸 |
|
|
94
|
+
| 图片段落对齐 | 居中 |
|
|
95
|
+
| 图片段落行距 | 1.5x(line=360 auto);段前 120 / 段后 40 twips |
|
|
96
|
+
|
|
97
|
+
### 6.4 图注
|
|
98
|
+
|
|
99
|
+
`` 中的 `alt` 文字会自动生成图注段落紧跟在图片下方:
|
|
100
|
+
|
|
101
|
+
- 字体:宋体(东亚)+ Times New Roman(西文)
|
|
102
|
+
- 字号:10pt(sz=20)
|
|
103
|
+
- 字形:斜体
|
|
104
|
+
- 对齐:居中
|
|
105
|
+
- 行距:1.25x(line=300 auto),段后 120 twips
|
|
106
|
+
|
|
107
|
+
`alt` 为空时不输出图注段落。
|
|
108
|
+
|
|
109
|
+
### 6.5 容错
|
|
110
|
+
|
|
111
|
+
- 图片路径不存在:在文档中插入红色 `[图片缺失] alt (src)` 文本,**不**抛错中断转换
|
|
112
|
+
- 非 png 图片读取尺寸失败:按 4:3 兜底
|
|
113
|
+
- 跨平台路径分隔符:始终用 `path.resolve` 统一为绝对路径再读
|
|
114
|
+
|
|
115
|
+
### 6.6 docx-js API 关键写法
|
|
116
|
+
|
|
117
|
+
`ImageRun` 必须传 `type` 参数,且 `altText` 三字段全填:
|
|
118
|
+
|
|
119
|
+
```js
|
|
120
|
+
new ImageRun({
|
|
121
|
+
type: "png",
|
|
122
|
+
data: fs.readFileSync(absPath),
|
|
123
|
+
transformation: { width: 540, height: 360 },
|
|
124
|
+
altText: { title: "附图1", description: "附图1", name: "doc1_fig1.png" },
|
|
125
|
+
});
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
`scripts/md2docx.js` 已封装以上全部逻辑,调用脚本即可,无需手写 ImageRun。
|
|
129
|
+
|
|
130
|
+
## 7. 表格规范
|
|
131
|
+
|
|
132
|
+
- 宽度模式:`WidthType.DXA`(不要用百分比)
|
|
133
|
+
- 表格总宽 = 列宽之和 = 内容区宽度(A4 默认 8306 DXA)
|
|
134
|
+
- 单元格四周边框:`BorderStyle.SINGLE`,size=4,color=`808080`
|
|
135
|
+
- 单元格 padding:`{ top: 80, bottom: 80, left: 120, right: 120 }`
|
|
136
|
+
- 表头:底色 `#E7E6E6`,居中加粗
|
|
137
|
+
- 单元格段落行距:1.25x(line=300 auto)
|
|
138
|
+
|
|
139
|
+
## 8. 头部字段识别规则
|
|
140
|
+
|
|
141
|
+
满足以下任一正则的段落会被识别为"头部字段",自动套用仿宋_GB2312 加粗:
|
|
142
|
+
|
|
143
|
+
```text
|
|
144
|
+
^\s*\*\*交底书名称[::].*\*\*
|
|
145
|
+
^\s*\*\*本专利发明人[::].*\*\*
|
|
146
|
+
^\s*\*\*技术问题联系人[::].*\*\*
|
|
147
|
+
^\s*\*\*联系人电话[::].*\*\*
|
|
148
|
+
^\s*\*\*E-?MAIL[::].*\*\*
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
为避免相邻头部字段被合并为单段,tokenizer 在遇到 `**xxx:**` 形式的行时不与上下行合并。
|
|
152
|
+
|
|
153
|
+
## 9. 自检(生成后)
|
|
154
|
+
|
|
155
|
+
生成 docx 后,建议执行:
|
|
156
|
+
|
|
157
|
+
```bash
|
|
158
|
+
python scripts/office/unpack.py 专利交底书_X_20260318.docx tmp/
|
|
159
|
+
grep -oE 'w:eastAsia="[^"]+"' tmp/word/document.xml | sort | uniq -c
|
|
160
|
+
grep -oE 'w:color w:val="[A-F0-9]+"' tmp/word/document.xml | sort | uniq -c
|
|
161
|
+
ls tmp/word/media/ 2>/dev/null | wc -l # 内嵌图片数
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
期望输出:
|
|
165
|
+
|
|
166
|
+
- `仿宋_GB2312` 恰好出现 **5** 次(五个头部字段)
|
|
167
|
+
- `楷体_GB2312` 出现次数 ≥ 章节标题数
|
|
168
|
+
- 其余东亚字体均为 `宋体`
|
|
169
|
+
- `w:color` 仅出现 `000000`(除非显式保留蓝色占位语)
|
|
170
|
+
- 内嵌图片数 = md 中独立行 `` 的个数(即 md 中 `grep -cE '^\s*!\[' *.md`)
|
|
171
|
+
|
|
172
|
+
任一项不满足,需检查 md 源文档结构与 `scripts/md2docx.js` 的常量配置。
|
|
173
|
+
|
|
174
|
+
## 10. 客户换模板的更新步骤
|
|
175
|
+
|
|
176
|
+
1. 转换为 .docx:`soffice --headless --convert-to docx 新模板.doc`
|
|
177
|
+
2. 解包:`python scripts/office/unpack.py 新模板.docx tmpl/`
|
|
178
|
+
3. 在 `tmpl/word/styles.xml` 中读取:
|
|
179
|
+
- `<w:docDefaults>` → 默认 rFonts / sz(决定正文默认值)
|
|
180
|
+
- `Heading1` / `Heading2` 等内置标题样式 → 章节标题字体、字号、行距
|
|
181
|
+
4. 在 `tmpl/word/document.xml` 中抽样几段实际文本,确认实际使用的 rPr 是否覆盖了 styles 默认值
|
|
182
|
+
5. 将差异写入本规范 § 2~7 表格,同时同步修改 `scripts/md2docx.js` 顶部常量
|
|
183
|
+
6. 重跑 § 9 自检
|