Back to skills
SKILL.md
Litigation Visualization Plus
ASecurity将起诉状、答辩状、证据目录、庭审笔录、裁判文书、合同、咨询记录等法律服务文本,转化为结构化诉讼可视化图表(对话内 HTML 图形化预览)。方法论融合蒋勇主编《诉讼可视化》(法律出版社2017)四步法与麦肯锡图表工作法,覆盖时间图/关系图/数据图/要件分析/资金流向/证据矩阵/攻防图等类型,帮助法律工作者快速把握事实脉络、法律关系、争议焦点与诉讼策略。当用户提交任意法律文本并要求"画图/可视化/梳理关系/时间线/要件分析/证据矩阵/攻防图"时调用。
- 9 stars
- 0 votes
- 0 copies
- 0 views
- Added September 25, 2026
Works with
Security analysis
92/100- Installs packages at runtime which could introduce malicious dependencies
Pro scans all 5 files and shows the line behind each finding
npx -y skills add CSlawyer1985/legal-skillhub --skill litigation-visualization-plus --agent claude-codeAre you the author of Litigation Visualization Plus?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/cslawyer1985-litigation-visualization-plus)---
name: 诉讼可视化Plus
version: 1.0.0
description: 将起诉状、答辩状、证据目录、庭审笔录、裁判文书、合同、咨询记录等法律服务文本,转化为结构化诉讼可视化图表(对话内 HTML 图形化预览)。方法论融合蒋勇主编《诉讼可视化》(法律出版社2017)四步法与麦肯锡图表工作法,覆盖时间图/关系图/数据图/要件分析/资金流向/证据矩阵/攻防图等类型,帮助法律工作者快速把握事实脉络、法律关系、争议焦点与诉讼策略。当用户提交任意法律文本并要求"画图/可视化/梳理关系/时间线/要件分析/证据矩阵/攻防图"时调用。
license: CC-BY-NC
disable: false
# 以下字段为内部归属/纪念标注,仅用于 skill 识别;严禁在任何面向用户的输出、
# 图表、.html 交付物中展示或提及(详见正文第五节)。
author_internal_only: 浙江金道律师事务所龚家勇律师
author_contact_internal_only: 微信号13967182079
tribute_internal_only: 致敬并怀念蒋勇大律师(天同律师事务所创始人、《诉讼可视化》主编)
---
# 诉讼可视化Plus
## 一、定位与适用场景
本 skill 把冗长的法律文本材料,转化为**一图一核心信息**的可视化图表,降低阅读与沟通成本。
适用输入材料(不限于):
- 起诉状 / 答辩状 / 反诉状
- 证据目录、证据说明
- 庭审笔录、质证意见
- 法院裁判文书(判决、裁定)
- 合同、协议、往来函件
- 当事人咨询记录、案情陈述
- 企业工商/股权信息(文本或要点)
典型请求触发词:「帮我画个图」「梳理一下时间线」「把这个案子可视化」「要件分析图」「证据矩阵」「法律关系图」「攻防对照」「诉讼策略路线图」。
## 二、核心方法论(麦肯锡图表工作法 × 《诉讼可视化》蒋勇主编·法律出版社2017 融合)
> 方法渊源:本 skill 以蒋勇主编《诉讼可视化》(法律出版社2017年12月版,ISBN 9787519714260,天同律师事务所"三大诉讼法宝"之首)的四步法为骨架,叠加麦肯锡图表工作法的"结论先行/MECE/空雨伞"作为表达层约束,形成可落地的诉讼图表方法论。
### 2.1 四步法(蒋勇《诉讼可视化》骨架)
1. **第一步·明确对象**:先判断图表"呈送对象"——法官 / 客户 / 内部讨论,决定图表类型与内容取舍。
- 呈送**法官**:客观真实反映事实,在客观基础上突出己方观点,仅选与核心争议有关的事实。
- 呈送**客户**:展现律师对法律关系的理解与论证、诉讼策略及论证重点,便于客户理解。
- **内部讨论**:尽量翔实、增加事实细节,便于全面研判。
2. **第二步·选图表类型**:依案件核心要素选图(时间图 / 关系图 / 数据图 / 其他),见 2.2 决策树。
3. **第三步·确定内容**:**全面罗列 → 逻辑整合 → 精简内容**。遵循 3S 原则——简单(simple,用简称/文件名代长文)、直接(straight,无歧义的有效信息)、核心(single,只留最核心)。
4. **第四步·更好表达**:以线条、框架、色彩设计,在符合阅读习惯基础上**突出观点**(如用色块/描边强化有利事实、虚化不利但须如实保留的事实)。
### 2.2 五条表达铁律(麦肯锡叠加)
1. **结论先行(金字塔原理)**:每张图顶部一句"核心结论 / 单一信息"。一图只讲一件事。
2. **空·雨·伞 逻辑链**:图内分层「事实(空)→ 分析(雨)→ 结论/行动(伞)」,对应「证据 → 法律分析 → 诉讼主张」。
3. **MECE 拆解**:诉讼请求、法律关系、争议焦点互斥穷尽,不重不漏。
4. **事实与观点分离(信用值原则)**:凡法律分析、策略判断、可能性均须明确标注(〔分析〕/虚线框),**不得与已确认事实混同**;严禁择取重大疑问的待证事实作图、严禁捏造——以维持图表"信用值"(蒋勇书核心警示)。
5. **必要性与有益性前置**:图表不是万能,案情简易、法律关系清晰者不必强绘;可视化应为赋能而非增负。
### 2.3 图表选型决策树
```
输入材料 + 明确对象(法官/客户/内部)
│
├─ 核心要素是时间(签约、违约、付款、发函、立案、时效)
│ └─► 【时间图】事实时间线 / 诉讼时效提示(可纵向分层对比多方行为)
│
├─ 核心要素是关系(多主体、合同/侵权/连带/担保/股权)
│ └─► 【关系图】主体—关系—标的链路(股权结构图、法律关系图)
│
├─ 核心要素是数据(标的额、利息、份额、赔偿计算)
│ └─► 【数据图】饼图/柱状图/坐标图(影响案件走向的数据因素)
│
├─ 围绕某一请求权/要件展开(是否构成、如何举证)
│ └─► 【要件分析图】请求权基础/构成要件拆解 + 攻防矩阵
│
├─ 涉及款项、股权、资产流转
│ └─► 【资金/财产流向图】(关系图子类,箭头+金额+时间)
│
├─ 需呈现"证据 → 证明目的 → 三性"对应
│ └─► 【证据矩阵图】
│
├─ 需对照原被告/双方主张差异
│ └─► 【攻防对抗图】
│
├─ 需呈现程序推进/多主体分工
│ └─► 【流程与分工图 / 策略路线图】
│
└─ 需揭示因果或归责(违约原因、损害链条)
└─► 【鱼骨图 / 漏斗图】
```
> 复杂案件应**组合多图**(如:时间图 + 关系图 + 要件 + 证据矩阵),按决策树逐图产出;天同"两张图"工作法(案件事实图 + 法律关系图)是最低标配。禁止单图硬塞全部信息。
## 三、标准化输出格式
本 skill 优先用 **show_widget(HTML 内联可视化)** 直接渲染到对话,按图表类型灵活呈现时间轴、关系图、树、流程、鱼骨、数据图、矩阵表等多样式图形。渲染由 `render_html` 函数基于结构化图表数据生成 HTML 片段(详见第七节),用户可在对话内即时查看。若用户要求"保存为文件",可由 `render_html` 产物生成独立 `.html` 后 present_files。
每张图统一结构:
```
┌─────────────────────────────────────┐
│ [核心结论 / 单一信息] ← 结论先行 │
├─────────────────────────────────────┤
│ 图例:■事实 □〔分析〕 ⚠风险 │
│ (图形主体) │
├─────────────────────────────────────┤
│ 数据来源:<材料名称/页码/URL> │
│ 附注:事实与观点分离说明、待核提示 │
└─────────────────────────────────────┘
```
### 颜色规范(马蒂斯色 Matisse Colors,强制优先)
- 图表中所有填充、描边、节点底色**优先使用马蒂斯色(Matisse Colors)**——明快、饱和、大胆的野兽派取色(鲜红、明黄、钴蓝、翠绿、橘等),替代低饱和中性色。
- 推荐马蒂斯基准色(十六进制,用于 HTML 表格 / 单元格底色):
- 马蒂斯红 `#E83929` 明黄 `#F2C12E` 钴蓝 `#2E5FB0` 翠绿 `#2E9E6B`
- 橘 `#E8852E` 品红 `#C0306A` 深青 `#1F8A8A` 紫 `#7A4FA3`
- 风险/异常提示(⚠ 时效、资金异常回流等)可用**马蒂斯红 `#E83929`** 或描边高亮,确保一眼可辨。
- 文字与连线保持深灰 `#3A3A3A` / `#5A5A5A`,确保浅色主题下可读;事实与〔分析〕以"实线/虚线 + 标签"区分,不依赖强对比色。
- 单图用色不超过 3–4 个马蒂斯色,保持明快、专业、易读,避免杂乱。
### 各图类型模板要点(类型与绘制法依《诉讼可视化》)
**A. 时间图(时间轴)**
- 横向时间线标注日期 + 事件 + 材料出处;核心要素为时间的案件首选。
- **纵向分层对比**(蒋勇书要点):不同主体行为分置时间轴上下两侧;同一主体不同行为分层;合理利用纵向空间,各主体用颜色区分。
- 关键时效节点(诉讼时效、举证期限、上诉期)用 ⚠ 马蒂斯红 `#E83929` 高亮并标注起算/届满日。
- 事实节点实线圆点;推断/待证事件空心圆点 + 〔待证〕。
**B. 关系图(法律关系图 / 股权结构图)**
- 主体为方框,关系(合同/侵权/连带/担保/股权)为连线并标注性质与依据。
- **核心主体扩散法**:以反复出现/处于中心的主体的法律关系为主链,向其四周扩散(蒋勇书逻辑整合要点)。
- 权利义务用连线标签简述;争议点用 ⚠ 标记;国有资本、关联关系如实标注(企查查/天眼查数据标查询时间)。
**C. 要件分析图(请求权基础 / 构成要件)**
- 自上而下:大前提(法条)→ 要件1/2/3…→ 各要件的事实支撑与证据。
- 未满足要件用 ⚠ + 缺口标注;抗辩要件(时效、抵销)单列对照。
- 〔分析〕与事实分色。
**D. 资金/财产流向图(关系图子类)**
- 流向箭头 + 金额 + 时间;资金闭环、异常回流用马蒂斯红 `#E83929` 重点标注。
- 多主体大量资金流转时,采用**左右布局**便于阅读(蒋勇书排版习惯),非纵向堆叠。
- 标注来源依据(银行流水、合同、记账凭证)。
**E. 数据图(柱状/饼图/对比图)**
- 当真正影响走向的是案件中的数据因素(标的额、利息、份额、赔偿计算)时使用。
- **样式灵活**:预览端用 HTML/CSS 或 Chart.js 等画出柱状/饼图,关键数据用马蒂斯红 `#E83929` 高亮,便于在对话内直观对比。
- **数据字段**(渲染 `type:"data"`):`body.rows[].cells = ["项目", "数值(可带单位)"]`,`risk:bool` 控制是否用马蒂斯红高亮(详见第七节 7.2)。
**F. 证据矩阵图**
- 三列:证据名称/来源 | 证明目的 | 三性(真实性/合法性/关联性)+ 对方异议。
- 待证要件回链到要件分析图,形成可追溯;可直接在图中备注证据名称(蒋勇书"证据清单"效果)。
**G. 攻防对抗图**
- 双栏:我方主张/依据 ↔ 对方主张/依据;中缝列争议焦点与待证事项。
- 未指定代理方时保持中立,双栏均衡(见第五节)。
**H. 流程与分工图 / 策略路线图**
- 阶段节点(立案→举证→开庭→判决→执行)+ 每节点关键动作与时限;多主体分工可分层标注。
**I. 鱼骨图 / 漏斗图**
- 鱼骨图:揭示违约原因、损害因果链条;漏斗图:归责或赔偿递减计算。按需选用,非必选。
- **数据字段**(渲染 `type:"fishbone"`):`body.spine`(主轴,如"违约原因")+ `body.bones[].cause`/`detail`(鱼刺因与说明),详见第七节 7.2。当前 `_html_fishbone` 以**列表式**呈现因果要点(主轴 + 各 cause/detail),并非 SVG 鱼骨骨架图;漏斗图由流程/数据图组合表达,无独立 type。如需真正鱼骨骨架图形,可在后续版本扩展 SVG 绘制。
> **提交法院附署要求(强制)**:凡图表拟提交法院/仲裁,须注明案件名称、案号、提交人、提交日期(蒋勇书"绘图以外的工作"要点),并严格控制导出分辨率与打印缩放,避免失真。
## 四、执行流程(运行即遵循)
1. **明确对象(蒋勇四步法第一步)**:先确认图表呈送对象——法官 / 客户 / 内部讨论,据此决定图表类型与内容取舍(法官:客观+突出己方;客户:论证+策略;内部:翔实全面)。未指定时默认按"法官视角"呈现并保持中立。
2. **材料识别**:判断输入文本类型与所含信息维度(时间/主体/要件/资金/证据/对抗/程序)。
3. **图表选型**:按第二节 2.3 决策树确定 1–N 张图,向用户简要说明选型理由与对象适配性。
4. **确定内容(蒋勇四步法第三步·3S)**:对抽取要素做**全面罗列 → 逻辑整合 → 精简**;仅留简单(simple)、直接(straight)、核心(single)的有效信息,善用简称/文件名代长文;严格保留原文关键日期、金额、称谓,发现矛盾(日期冲突、金额不一致)必须提示用户核对,不得擅自修改。
5. **事实/观点分离**:已确认事实用实线;分析推断用〔分析〕标签或虚线;严守"信用值"——不择取重大疑问待证事实作图、不捏造(见第五节)。
6. **渲染(蒋勇四步法第四步·更好表达)——单一内容源、HTML 图形化预览**:
- **核心约束(强制)**:对话内展示的图表,基于结构化 `chart`(变量名,单一内容源)经 `render_html` 渲染为 HTML 图形化片段,信息、文字、配色、层级结构、来源、附注一致。呈现样式灵活——按图表类型与"美观、易读"要求,灵活选用时间轴、关系图、树形、流程图、鱼骨图、数据图、矩阵表等最贴切的视觉形式。
- **图表数据模型(统一结构 + 按 type 扩展)**:每张图用以下字段描述,作为渲染依据——
- `title`:核心结论 / 单一信息(结论先行)
- `type`:决定图形样式的核心字段,取值 `time`(时间轴) / `relation`(关系图·含股权) / `fund`(资金流向) / `matrix`(证据矩阵表) / `element`(要件树) / `attack`(攻防图) / `process`(流程/策略路线) / `fishbone`(鱼骨/漏斗) / `data`(数据图)
- `legend`:图例说明(■事实 □〔分析〕 ⚠风险)
- `body`:**按 `type` 选用最贴切的结构**:
- 表格类(`matrix`):`{ "columns": [...], "rows": [ {"cells":[...], "risk":bool}, ... ] }`
- 时间轴(`time`):`{ "events": [ {"date":"", "party":"甲/乙/...", "text":"", "risk":bool}, ... ] }`(按 `party` 纵向分层对比)
- 关系图(`relation`):`{ "nodes": [ {"id":"", "label":"", "shape":"box/ellipse", "color":"party_a/party_b/...", "level":int}, ... ], "edges": [ {"from":"", "to":"", "label":"合同/持股/连带", "kind":"solid/dash", "risk":bool}, ... ] }`(按 `level` 分行,`edges` 经 SVG 绘制 `from→to` 连线与箭头)
- 资金流向(`fund`):`{ "rows": [ {"cells":["付款方","收款方","金额","币种/时间"], "risk":bool}, ... ] }`(箭头+金额横向呈现)
- 攻防对抗(`attack`):`{ "columns":["我方主张/依据","争议焦点与待证事项","对方主张/依据"], "rows": [ {"cells":[...3项], "risk":bool}, ... ] }`(三栏网格)
- 数据图(`data`):`{ "rows": [ {"cells":["项目","数值(可带单位)"], "risk":bool}, ... ] }`(横向柱状对比;字段详见本节模板 E)
- 要件树(`element`):`{ "root":"请求权基础", "children": [ {"label":"要件1", "support":"事实/证据", "gap":bool, "children":[...]}, ... ] }`(嵌套)
- 流程/策略(`process`):`{ "steps": [ {"stage":"立案", "action":"", "deadline":"", "risk":bool}, ... ] }`
- 鱼骨(`fishbone`):`{ "spine":"违约原因", "bones": [ {"cause":"", "detail":""}, ... ] }`
- `colors`:引用第七节统一马蒂斯色码表(render_html 统一取色,杜绝色差)
- `source`:材料来源
- `notes`:事实/〔分析〕分离说明、待核提示、风险附注
- **对话内预览路线(图形化,HTML/CSS)**:调用 read_me 加载 `diagram`/`chart`/`interactive` 模块,用 `render_html(chart)` 生成**真正图形化**的 HTML 片段(时间轴用竖线+节点、关系图用 flex 方框+连线、树用缩进层级、流程用步骤卡、证据矩阵用表格等),再经 show_widget 输出。浅色主题、深字;用马蒂斯色块/描边突出观点。预览端可使用 SVG/CSS 图形。
7. **来源标注**:每张图注明材料来源;无法核验的法条/案例提示人工复核(用户规则第4条要求:法条/案例/案号优先通过外部检索工具核验,无法核验者提示人工复核;本 skill 内联此要求以保证自包含)。
8. **风险提示**:在附注区同步给出不确定性及反向风险,避免绝对化结论。
9. **交付说明**:完成可视化渲染(对话内 show_widget 图形化预览)后,向用户简要说明图表内容、来源标注与风险附注。若用户要求生成独立文件,可由 `render_html` 产物经 Write 生成独立 `.html` 后 present_files 供下载查看;本 skill 不再生成 `.docx` 文件。
- **HTML→PDF 主动询问(强制 · 选择题形式)**:在完成全部图表的可视化渲染后(无论用户是否已要求保存独立 `.html` 文件),**必须主动用选择题的方式询问用户下一步如何处理**。调用 `AskUserQuestion` 工具,问题标题(header)简明如「下一步」,问题内容为「诉讼可视化图表已全部渲染完毕,请问您希望如何处理?」,并设置以下 4 个选项(选项 label 不含首尾空格,description 简述该选项含义):
1. **label:`转为 PDF 并保存桌面`** — **description**:使用本技能自带的系统 Chrome 原生打印脚本(见 7.6)将生成的 HTML 文件转换为 PDF 并保存至用户电脑桌面;该方式零下载、无需 puppeteer,本机最稳最快。
2. **label:`不需要任何操作`** — **description**:图表已在对话内渲染完毕,不进行文件导出或保存,结束本次任务。
3. **label:`补充资料后完善图表`** — **description**:待用户补充描述或资料后,进一步完善诉讼可视化图表(回到第2步重新修订并渲染)。
4. **label:`其他`** — **description**:用户有其他自定义需求,由用户在自由输入框中说明。
- **交互强制要求**:该询问**不可省略**,且**不得仅用纯文本提问**——必须通过 `AskUserQuestion` 以结构化的四选一选择题呈现,用户可在选项中直接点选或于自由输入框补充说明。若用户未作答,不得自动执行任何导出/保存动作。
- **前置条件**:若用户选择「转为 PDF 并保存桌面」,而当前尚无独立 `.html` 文件,须先按本条第1款用 `render_html` 产物经 Write 生成独立 `.html`(建议保存至桌面或工作区临时目录),再调用本技能自带转换脚本 `scripts/html_to_pdf.sh` 完成转换与桌面保存(零下载、系统 Chrome 原生打印);不得将对话内预览片段直接当作转换源。
- **PDF 风险提示(强制)**:凡生成 PDF 格式的诉讼可视化图表,**必须在 PDF 文件中写入以下风险提示**(作为独立提示区块,置于文件末尾或每页页脚,字体较正文小、颜色用马蒂斯红 `#E83929` 或深灰 `#5A5A5A`,确保醒目但不喧宾夺主;文本固定,不得删改):
- **「此为 AI 生成,仅供参考。温馨提醒:用户自己可将PDF格式文件通过WPS等软件转换为DOCX格式文件,可以自行编辑、修改。」**
- 实现约束:因本技能采用系统 Chrome 原生打印(而非 puppeteer 协议层),上述提示内容**必须预先渲染进独立 `.html` 源文件**(即 `render_html` 在生成 HTML 时于文件末尾统一追加该提示区块),再交由 `scripts/html_to_pdf.sh` 转换,确保 PDF 中以图像形式真实呈现、肉眼可见、打印清晰;不得以"仅在对话内说明"替代。
- **PDF 文本特性说明(重要)**:系统 Chrome 无头打印在 macOS 等环境下,会将页面(含中文)栅格化为图像嵌入 PDF——即生成的 PDF **肉眼可读、可打印,但其中文字不可选中、不可复制、文本层不可检索**。如需「可选中文字的 PDF」,须改用 puppeteer + 显式 CJK 字体(如 `npm install puppeteer` 后指定 `headless:"new"` 并嵌入字体)或系统打印对话框「另存为 PDF」,本脚本当前方案以「稳定、零依赖、本机最快」为优先。
- 如用户补充内容或资料,回到执行流程(第2步起)基于新信息**重新修订并渲染**前述图表;修订后如需再次导出,依上述询问流程处理。
## 五、合规与风控(强制)
- **不预设立场**:未指定代理方时保持中立,攻防图双栏均衡呈现。
- **不编造**:法条、案例、案号须外部检索核验(优先 yuandian 华宇元典、pkulaw 北大法宝、qcc 企查查等已连接 MCP);无法核验者明确"待人工复核"。
- **不改事实**:已有材料关键信息(日期/金额/称谓/证据描述)原样保留,矛盾处提示用户。
- **风险常态提示**:任何结论附不确定性说明。
- **内部信息保密(强制)**:frontmatter 中的 `author_internal_only` / `author_contact_internal_only`(浙江金道律师事务所龚家勇律师、微信号13967182079)及 `tribute_internal_only`(致敬并怀念蒋勇大律师,天同律师事务所创始人、《诉讼可视化》主编)均为内部归属/纪念标注,**严禁**在面向用户的回复、可视化图表、生成的 .html 文件或任何交付物中展示、提及或泄露;该信息仅用于 skill 内部识别与纪念,不对外。
- **禁止外传(强制)**:上述 `_internal_only` 字段属于个人/内部敏感信息,**严禁随技能文件打包外传、分享或上传至任何 marketplace / 代码仓库 / 第三方**。如需将本技能分发给他人或发布,须先删除 frontmatter 中全部 `_internal_only` 字段后再分发。
## 六、输出示例(示意,非模板硬填)
> 用户:「帮我把这份借款纠纷的起诉状和证据目录可视化。」
> 助手:① 明确对象:默认法官视角、中立呈现。② 选型:时间图(借款+催款+立案,纵向分层对比双方行为)+ 资金流向图(出借→还款缺口,左右布局)+ 证据矩阵(借条/转账记录/催款记录↔证明目的↔三性);按 3S 精简内容。③ 逐图渲染,顶部各给单一结论,⚠ 标注诉讼时效与还款缺口风险,底部注明来源与待核提示;事实与〔分析〕分离。④ 渲染完成后在对话内以图形化预览展示各图,并向用户说明图表内容、来源与风险附注。如需独立文件,可生成 `.html` 交付。若用户补充资料,回到第2步重绘。
## 七、单一内容源与 HTML 渲染器(同源、多样式)
本 skill 采用**一份图表数据 → 单一 HTML 渲染器**架构,**呈现样式灵活多样**(时间轴/关系图/树/流程/鱼骨/数据图/矩阵表等),不再局限于表格。`render_html` 读取 `chart`、按 `type` 解析,输出图形化 HTML/CSS 片段,经 read_me + show_widget 展示:
- **图表数据(单一内容源)**:执行到第6步时,先为每张图产出结构化数据 `chart`(含 `title`/`type`/`legend`/`body`/`colors`/`source`/`notes`)。这是唯一事实来源。
- **`render_html(chart)` → 对话预览(图形化)**:按 `type` 输出**真正图形化**的 HTML/CSS 片段(时间轴竖线节点、关系图方框连线、树形缩进、流程步骤卡、鱼骨骨架、矩阵表格等),经 read_me + show_widget 展示。预览端可使用 SVG/CSS 图形。
> **渲染器位置(强制)**:`render_html` 为**真实可执行函数**,定义在同目录 `render.py` 中。运行技能时直接 `import` 该模块(见 7.4),不得临时"凭感觉"重写,否则必然漂移。该文件随技能一同维护。
### 7.1 统一马蒂斯色码表(渲染器统一取色,禁止各自硬编码)
| 语义 | 名称 | 十六进制 |
|------|------|----------|
| 风险/缺口 | 马蒂斯红 | `#E83929` |
| 标题蓝 | 钴蓝 | `#2E5FB0` |
| 出借方/证据 | 蓝底 | `#E6F1FB` |
| 借款方 | 橘 | `#E8852E` |
| 缺口底 | 红底 | `#FCEBEB` |
| 证明目的 | 翠绿 | `#2E9E6B` |
| 证明底 | 绿底 | `#EAF3DE` |
| 三性 | 琥珀 | `#BA7517` |
| 三性底 | 琥珀底 | `#FAEEDA` |
| 文字/连线 | 深灰 | `#3A3A3A` / `#5A5A5A` |
渲染器统一从此表取色;如需调整配色,只改此表即全局生效,杜绝漂移。该色码表在 `render.py` 中以 `MATISSE_COLORS` 字典集中定义。
> **补充(与第二章颜色规范对齐)**:第二节「颜色规范」要求的马蒂斯基准色中,明黄 `#F2C12E`、品红 `#C0306A`、深青 `#1F8A8A`、紫 `#7A4FA3` 四项,亦在 `render.py` 的 `MATISSE_COLORS` 中以键 `yellow`/`magenta`/`teal`/`purple` 集中定义,供时间图纵向分层、关系图节点等按需取用。此外渲染器内部另维护 `grid`/`legend_bg`/`footer_bg` 等布局色(非马蒂斯语义色,仅用于边框与底色)。第二章列出的 8 个基准色与本节派生色、render.py 全量键三者一致,无遗漏。
### 7.2 图表数据字段约定(数据模型,按 type 选用 body 结构)
```python
# 单一内容源:body 结构随 type 变化,render_html 按 type 解析,杜绝漂移
chart = {
"title": "【图一·时间图】核心结论:……", # 结论先行
"type": "time", # 决定图形样式
"legend": "■事实 □〔分析〕 ⚠风险",
# —— type=time 时间轴 ——
"body": {
"events": [
{"date":"2023-03-10", "party":"甲", "text":"签订借条出借50万", "risk": False},
{"date":"2023-09-10", "party":"乙", "text":"应还款未还", "risk": True},
]
},
# —— type=relation 关系图 ——(备选 body)
# "body": {"nodes":[{"id":"a","label":"张某","shape":"box","color":"party_a","level":0},
# {"id":"b","label":"李某","shape":"box","color":"party_b","level":1}],
# "edges":[{"from":"a","to":"b","label":"借款","kind":"solid"}]}
# —— type=matrix 证据矩阵 ——(表格类;由 _html_table 统一渲染,无独立 SVG 分支)
# "body": {"columns":["证据","证明目的","三性"], "rows":[{"cells":[...],"risk":False}]}
# —— type=fund 资金流向 ——(rows:付款方/收款方/金额/币种时间)
# "body": {"rows":[{"cells":["甲","乙","50万","元"],"risk":True}]}
"colors": { "title": "#2E5FB0", "risk": "#E83929", "party_a": "#E6F1FB", "party_b": "#E8852E" },
"source": "材料:借条/转账凭证",
"notes": "利息为〔分析〕估算,待核"
}
```
### 7.3 渲染器实现约定(render.py 中真实函数,按 type 分流)
```python
# render.py —— 单一内容源 HTML 渲染器(多样式),必须随技能提供
MATISSE_COLORS = {
"risk": "#E83929", "title": "#2E5FB0", "party_a":"#E6F1FB",
"party_b":"#E8852E", "gap_bg": "#FCEBEB", "proof": "#2E9E6B",
"proof_bg":"#EAF3DE", "amber": "#BA7517", "amber_bg":"#FAEEDA",
"text": "#3A3A3A", "text2": "#5A5A5A",
}
def render_html(chart: dict) -> str:
"""按 chart['type'] 输出图形化 HTML 片段(时间轴/关系图/树/流程/鱼骨/表)。
返回值为纯 HTML 字符串,由调用方写入 .html 或传 show_widget 预览;
本函数本身不调用 read_me/show_widget。"""
t = chart.get("type")
if t == "time": return _html_time(chart)
if t == "relation": return _html_relation(chart)
if t == "fund": return _html_fund(chart)
if t == "element": return _html_tree(chart)
if t == "process": return _html_process(chart)
if t == "fishbone": return _html_fishbone(chart)
if t == "attack": return _html_attack(chart)
if t == "data": return _html_data(chart)
return _html_table(chart) # matrix 及未知/缺失 type 回落 _html_table(通用表格,建议 body 用 matrix 的 columns/rows 结构)
```
> 实现要点:`render_html` 读取 `chart_data`(变量名 `chart`,见 7.4),按 `type` 分流到 `_html_time` / `_html_relation` / `_html_fund` / `_html_tree` / `_html_process` / `_html_fishbone` / `_html_attack` / `_html_data` / `_html_table`,用 HTML/CSS(含 SVG 连线与箭头)图形化输出;信息/配色/层级与对话预览一致。`attack`/`data` 为独立渲染分支(非表格兜底),`fund` 使用 `rows` 结构(付款方/收款方/金额/币种时间)。**`render_html` 在输出 HTML 时,须于文件末尾统一追加「PDF 风险提示区块」(详见 7.6),确保转 PDF 后该提示真实存在。**
### 7.4 调用方式(运行即遵循)
```python
import os, importlib.util
# 加载同目录 render.py:优先用 __file__ 定位;若 __file__ 不可用(如交互式/技能指令执行环境),
# 退而使用环境变量 LV_SKILL_DIR 或直接写死技能绝对路径。
_skill_dir = os.path.dirname(os.path.abspath(__file__)) \
if "__file__" in globals() else os.environ.get("LV_SKILL_DIR", "/Users/gongjiayong/.workbuddy/skills/litigation-visualization")
_render_path = os.path.join(_skill_dir, "render.py")
_spec = importlib.util.spec_from_file_location("lv_render", _render_path)
_render = importlib.util.module_from_spec(_spec); _spec.loader.exec_module(_render)
html_fragment = _render.render_html(chart) # → 喂 show_widget
```
### 7.5 PDF 风险提示区块(render_html 强制追加,详见第四节第9步)
`render_html` 在输出完整 HTML 时,**必须于文件末尾统一追加一个独立提示区块**,内容固定为以下风险提示(强制,不得删改),作为转 PDF 后的强制风险提示:
```
⚠ 风险提示
此为 AI 生成,仅供参考。温馨提醒:用户自己可将PDF格式文件通过WPS等软件转换为DOCX格式文件,可以自行编辑、修改。
```
渲染规范:
- 该区块使用独立 `<div class="pdf-disclaimer">` 包裹,置于所有图表之后、`<body>` 结束前。
- 标题「⚠ 风险提示」用马蒂斯红 `#E83929`;正文用深灰 `#5A5A5A`,字号较图表正文小一号(如 `13px`),与图表主体有明显分隔(上边框 `1px solid #E0E0E0` + 上间距 `24px`)。
- 该区块**同时出现在对话内预览与独立 `.html` 中**,确保经系统 Chrome 原生打印转 PDF 后以图像形式真实呈现于 PDF 文件内(肉眼可见、打印清晰;受 Chrome 无头打印限制,PDF 内文字为栅格化图像,不可选中/复制,详见第四节第9步「PDF 文本特性说明」)。
- 内部信息保密(第五节)约束依然适用:该提示区块**不得**包含 frontmatter 中的 `author_internal_only` / `author_contact_internal_only` / `tribute_internal_only` 任何内容。
### 7.6 交付与依赖
- 渲染依赖:对话内 `show_widget`(HTML 预览)由内置组件承载,**无需外部 Python 依赖**;`render.py` 中的 `render_html` 为纯函数,仅在需要生成独立 `.html` 文件时由 Write 调用其输出。
- 核验:yuandian(华宇元典法律数据)、pkulaw(北大法宝)、qcc(企查查)等已连接 MCP,按需调用。
- 文件交付(HTML):如需独立 `.html`,由 `render_html` 产物经 Write 生成后 present_files。本 skill 不生成 `.docx` 文件。
- **文件交付(HTML→PDF)**:本 skill 在图表渲染完成后须**主动用选择题(AskUserQuestion)询问**用户下一步处理方式,四选项为「转为 PDF 并保存桌面 / 不需要任何操作 / 补充资料后完善图表 / 其他」(选项定义以第四节第9步为准,强制不可省略)。若用户选择「转为 PDF 并保存桌面」,使用本技能自带脚本 `scripts/html_to_pdf.sh` 将本地 HTML 文件转换为 PDF 并保存至桌面;该脚本调用**系统已安装的 Google Chrome 原生无头打印**(`--headless --print-to-pdf`),**零浏览器下载、不依赖 puppeteer**,本机最稳最快。调用方式:`bash scripts/html_to_pdf.sh "<输入.html 绝对路径>" "<输出.pdf 绝对路径>"`(脚本内部会自动对含中文/空格的路径做 URL 编码并以 `file://` 传入)。转换前须确保独立 `.html` 文件已生成,输出路径指定为用户桌面(`~/Desktop/` 或 `/Users/<用户名>/Desktop/`),文件名应体现案件与图表类型,例如 `借款纠纷-诉讼可视化.pdf`。**生成的 PDF 中必须包含第四节第9步「PDF 风险提示(强制)」规定的风险提示**,该提示由 `render_html` 预先写入 HTML 源(见 7.3 与 7.5 的 `_pdf_disclaimer_html`)。如本机未安装 Google Chrome,脚本会回退提示改用 puppeteer(需先 `npm install puppeteer`)或手动用 WPS/浏览器打印。
Files in this skill
- SKILL.md
- _demo_preview.html
- _preview_all.html
- render.py
- scripts/html_to_pdf.sh
Attribution
Comments
Loading comments…