# 诉讼可视化Plus

> 将起诉状、答辩状、证据目录、庭审笔录、裁判文书、合同、咨询记录等法律服务文本，转化为结构化诉讼可视化图表（对话内 HTML 图形化预览）。方法论融合蒋勇主编《诉讼可视化》（法律出版社2017）四步法与麦肯锡图表工作法，覆盖时间图/关系图/数据图/要件分析/资金流向/证据矩阵/攻防图等类型，帮助法律工作者快速把握事实脉络、法律关系、争议焦点与诉讼策略。当用户提交任意法律文本并要求"画图/可视化/梳理关系/时间线/要件分析/证据矩阵/攻防图"时调用。

- Skill: `cslawyer1985/plus-2` (Agent Skill, multi-file: 5 files)
- Install (CLI): `npx skillmds@latest add cslawyer1985/plus-2`
- Raw SKILL.md: https://api.skillmd.com/api/skills/cslawyer1985/plus-2/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Web & Frontend
- License: CC-BY-NC
- Author: cslawyer1985 (https://skillmd.com/u/cslawyer1985)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/cslawyer1985/plus-2

---


# 诉讼可视化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/浏览器打印。

