要素式诉讼文书填写(element-form-filler)
目的
以最高人民法院《第二批要素式示范文本》官方模板(内置 70 份)为基础,依据用户提供的
传统起诉状/申请书及案件材料,填写生成规范的要素式 .docx 文书,保证版式与官方模板
完全一致,并对无法填写的内容向用户作出明确提示。
铁律(五条,按优先级执行)
- 先判断适用范围:动笔前必须依据传统文书与案件材料确定纠纷类型/案由,对照
references/scope.md判断是否属于要素式文书范围。不属于范围的,明确告知用户并
停止,不得强行套用模板。 - 以传统文书为准:填写内容以已有的传统起诉状/申请书为首要依据;传统文书与
其他案件材料(合同、判决、聊天记录等)冲突时,一律以传统文书记载为准,
并在最终提示中向用户说明冲突点及取舍。 - 无法填写即留空并提示:材料不足或与案件无关的栏目,在 docx 中留空
(或勾选项留空),同时在给用户的输出中逐项列出未填栏目及原因;
区分"材料未提供(需补充)"与"本案不涉及(可留空)"。 - 多当事人自动增行:当事人(原/被告、申请执行人/被执行人、自诉人/被告人等)
或代理人超过一人的,用add_row复制相应行,逐人填写,不得挤占同一行。 - 不改变模板结构:只填内容,不得增删要素栏目、改变表格结构或版式;
文书标题、说明区、落款保持模板原样。
工作流程
第 1 步:范围分析(对应铁律 1)
通读用户提供的传统起诉状/申请书及案件材料,确定:
- 文书种类(民事起诉状/行政起诉状/刑事自诉状/国家赔偿申请书/强制执行申请书/
执行程序申请书/第三人意见陈述书);
- 纠纷类型/案由(以传统文书所载为准)。
对照 references/scope.md 的适用范围表:
- 命中 → 选定模板(assets/templates/{卷}/ 下按 manifest.json 的
case_type 匹配),并告知用户选用的模板名称;
- 未命中 → 说明不在适用范围,建议沿用传统文书格式,流程终止;
- 近似但不确定 → 向用户确认案由归属后再选定模板。
第 2 步:研读材料,整理事实清单
从传统文书提取(按优先级):当事人信息(逐一列出自然人/法人)、诉讼请求/
申请事项、事实与理由、金额与日期、利率/期限、担保、管辖、保全、证据清单、
案号与执行依据(执行类文书)。其他材料仅作补充。
制作事实清单时标注每项信息的来源(传统文书/其他材料/未提供),冲突处按
铁律 2 处理并记录,供第 6 步提示。
第 3 步:研读模板结构
python3 scripts/dump_template.py assets/templates/{卷}/{模板文件}.docx
输出逐行结构(行号 + 各单元格文本)。据此确定:
- 每个事实应对应的行(row 关键字)与标签(label);
- 当事人行中自然人行/法人行的 occurrence 编号;
- 要素栏("1. 本金"等)与"(可完整表述……)"提示行的位置。
第 4 步:编写 spec 并执行填写
按 references/spec-format.md 编写 spec JSON,然后运行:
python3 scripts/fill_element_doc.py \
--template assets/templates/{卷}/{模板文件}.docx \
--spec {spec.json} --output {输出.docx} --report {fill_report.json}
操作选用原则:
- 单个栏目填写用 field(自动处理勾选/日期/空白,保留同段其他栏目);
- 要素栏、诉讼请求/事实与理由完整表述用 cell(\n 分段);
- 独立勾选用 check;
- 多当事人/多代理人用 add_row(注意 copy_from 选对自然人行/法人行),
新增行用 occurrence 递增填写;
- line 仅在需整段重写时使用(多栏目同行必须写全段)。
运行环境需 python-docx:pip install python-docx。
第 5 步:核对填写结果
fill_report.json的errors必须为 0;非 0 时按错误信息修正 spec 重跑
(常见原因:row关键字与模板行标签不一致、occurrence越界、
prefix/label与模板文字不一致)。- 抽样比对 docx 内容与传统文书的关键信息(当事人姓名、请求金额、
日期、案号等),确认无串行、无丢失。
第 6 步:向用户输出(对应铁律 3)
输出包含两部分:
1. 生成的 .docx(用 present_files 交付);
2. 未填项提示清单:从 fill_report.json 的 unfilled 逐条整理,按
"需补充(材料未提供)"与"本案不涉及(可留空)"分类说明;同时列出第 2 步
记录的材料冲突点及"以传统文书为准"的取舍说明。
未填项清单示例格式:
> 未填写栏目提示:
> 1.【需补充】被告出生日期、民族、证件号码——案件材料未提供;
> 2.【需补充】执行依据文书号——请提供生效法律文书案号;
> 3.【不涉及】第三人信息——本案无第三人,留空;
> 4.【冲突】传统起诉状载明借款本金 50 万元,银行流水显示 48 万元,
> 已按传统起诉状填写 50 万元,请确认。
输出位置
默认保存到用户指定目录;未指定时保存到当前工作目录下,文件名建议
{文书类型}({案由})-{主要当事人}.docx,如
民事起诉状(民间借贷纠纷)-张三诉李四.docx。
注意事项
- 模板中的"说明"区、"★特别提示★"、调解意愿宣传栏不属于填写范围(调解意愿栏
可按当事人意愿勾选,未勾选时在提示中说明)。 - 落款"具状人(签字、盖章)"与"日期"默认留空由用户手签;用户提供日期再用
para操作填写。 - 法人当事人行("(法人、非法人组织)"行)在当事人为自然人时保持空白,
在提示中说明即可,不要删除该行。 - 证据清单栏位可概括列举并注明"详见附件证据目录"。
资源
assets/templates/:70 份官方示范文本模板(上册/中册/下册),
manifest.json为机器可读清单(idx/volume/file/doc_type/case_type)。scripts/dump_template.py:导出模板逐行结构,供研读与编写 spec。scripts/fill_element_doc.py:填写引擎(field/cell/check/add_row/line/para
六种操作 + 未填项扫描 + 填写报告)。references/scope.md:适用范围判断规则与模板对照表。references/spec-format.md:spec JSON 完整格式与示例。