mqc-legal-courseware-master · v0.8.4 · 2026-10-14 · sha256 6e46eba292aa883d

mqc-legal-courseware-master v0.8.4A

Immutable. This exact content never changes and is served at /api/v1/blob/6e46eba292aa883d.

---
name: mqc-legal-courseware-master
description: 法律课件大师(法律图表页助手)。只做课件里的法律图表那一页:把 V1–V6 的图(案情时间轴、法律关系图、争点对抗图、大事记简表、类案数据图)放进 12 栏 × 6 行的磁吸网格,配上一句话结论、读图要点、法条、裁判要旨、案例、争议焦点等卡片,导出后整页复制或框选复制进律师自己的 PPT。磁吸做到图里:V7 认得出图里的事件、主体、关系、柱子,能在图上放读图编号(要点卡同号联动)、切片只取几件事放大、聚焦只点亮几个元素(可按编号拆成几页),V6 图表可一键换一种图,导出时按编号自动生成讲课动画(点一下出一个)。V5 对抗图可按页面尺寸现出图、一个要件一页。左栏按「选图 → 排法 → 说明 → 适配 → 导出」排,新建一页先选法律场景;一句话结论卡吸在图的上下方。版面可铺满全屏,也可按律所模板或一张截图预留 Logo、天头地脚的位置;风格为奇川风、歸藏风或自定义(模板、截图或一个主色)。用户在编辑器里点「AI 生成」写一句想法,由对话里的 AI 写卡片或调用 V1–V6 出图。法条与要旨照录原文、案号不编、数字要能由图表推出、字不小于 11px。整套课件用的封面、律所名片、介绍页仍保留。
tags: [法律, 课件, PPT, 演示文稿, 律师, 律所, 讲座, 诉讼可视化]
metadata:
  version: 0.8.4
---

# 法律课件大师(V7)

**我们不跟 PowerPoint 比编辑能力。** 比的是:法律人从一堆材料到一套像样的课件有多快,内容靠不靠得住。

做法是「骨架定死、内容交给 AI」:网格、风格、卡片样子、核对规则是固定的;用户说一句想法,AI 按法律场景
生成模块和页面,用户在磁吸界面上拖一拖、改一改,再导出。自由度在想法上,不在像素上。

和其他模块一样:**模型只写 JSON(deck.json),几何由脚本算,导出后回读审计。** V7 只读 V1–V6,不改它们。

## 〇、用户怎么开口

句式:**用法律课件大师,把【材料 / 想法】做成【几页】课件,在【场合】讲给【谁】,用【奇川风 / 歸藏风】。**

| 用户要的 | 怎么做 |
| --- | --- |
| 「打开编辑器,我自己排」 | 第三节:开编辑器,并在后台等编辑器里的 AI 请求 |
| 一套类案课件 | 先用 V6 出图表说明放进 `assets/`,再写 deck.json(「类案研究」组合) |
| 案情汇报 / 庭前准备 | 用 V2 / V3 / V5 出 SVG 放进 `assets/`(V3 加 `--shape wide` 出横版,竖版放进课件页字太小),配争议焦点卡、风险提示卡 |
| 法条解读 / 普法讲座 | 法条卡(照录原文)+ 要点 + 风险提示;案例复盘用案例卡 + 裁判要旨卡 |
| 律所推介 / 律师介绍 | 先填律所名片(第五节),一键生成介绍页,再按场合润色 |

## 〇之二、运行与交付须知

- **命令从哪里跑。** 本文件里写的 `scripts/…`、`examples/…`、`references/…` 都在**本技能目录**下(这份 SKILL.md 所在的文件夹)。
  请在**用户的工作目录**里运行,命令写成 `python3 <本技能目录>/scripts/…`,不要先 `cd` 进本技能目录;脚本自己找得到依赖,在哪里调用都一样。
- **产物放哪里。** 用户的材料、JSON 与产物一律放在用户的工作目录,**不要写进本技能目录**:插件更新时那里会被整个替换,用户也找不到。`build.py 课件名 --new` 在当前目录建课件文件夹;课件文件夹放在用户的工作目录。
- **照实交付。** 脚本打印的核对清单照原样转告用户;没有真的打开看过图片,就不要说「看过了、效果没问题」。

## 一、课件目录

```
my-deck/
  deck.json     课件说明(编辑器自动保存;AI 与模型也直接写它)
  assets/       素材:V6 图表说明 *.json、V1–V5 的图 *.svg
  brand/        (可选)这套课件专用的律所名片;没有就用本机公共名片 ~/.mqc-nlv/brand/
  ai/           编辑器发给 AI 的请求(requests.json)
  exports/      导出的 PPTX
```

目录名与文件名用 ASCII:Windows 解压 ZIP 时中文文件名会失败。内容、标题用中文没问题。
新建:`python3 scripts/build.py my-deck --new --title "民间借贷类案研究"`

## 二、磁吸网格与卡片

一页 1280×720,**12 栏 × 6 行**,页边距左右 48、上下 56,模块之间一律留 16px。每个模块写它占哪几格:
`x`(第几栏,0 起)、`y`(第几行)、`w`、`h`,都是整数。**不写像素、颜色、字号**——由网格和风格决定。

**法律内容卡**

| type | 卡片 | 字段 | 最小 |
| --- | --- | --- | --- |
| statute | 法条 | `law` 法律名称、`article` 条款、`text` 条文原文 | 4×2 |
| holding | 裁判要旨 | `text` 要旨原文、`court` 法院、`case_no` 案号(至少写一个出处) | 4×2 |
| case | 案例 | `case_no`(必填)、`court`、`cause` 案由、`heading`、`result` 裁判结果、`point` 要点 | 3×2 |
| issue | 争议焦点 | `heading`、`text`;按阅读顺序自动标「争议焦点一、二、三」 | 3×2 |
| risk | 风险提示 | `heading`、`text` | 3×2 |
| evidence | 证据 | `heading`、`items`(一行一份:「名称——证明目的」,自动标证据 1、2、3) | 5×2 |

**通用卡**:title 标题(`level` page / cover / section,`kicker`,`sub`)、text 正文、bullets 要点、step 编号卡、
stat 大数字(`value`、`label`、`note`、`from` 出处图表)、quote 金句(`source` 必填)、note 注释。

**图卡**(关联 V1–V6):chart(V6 图表说明,`file` 或 `spec`,按卡片尺寸重画并过 V6 守卫)、
figure(V1–V5 的 SVG,`file` + `from` 写来自哪个模块,如 `"V2 时间轴大师"`;等比缩放,字小于 11px 就拒)。

**律所卡**:logo(来自名片)、profile 介绍(`who`: `"firm"` 或 `"lawyer:<id>"`,内容实时读名片)、contact 联系方式。

外观 `tone`:card 卡片 / accent 重音卡(只给大数字、编号卡、正文、要点、争议焦点、风险提示;一页只该有一张)/ outline 描边 / bare 无底。
**连成一组**:相邻的同类卡片(法条与要旨一家、正文与要点一家、大数字、编号卡、案例、争议焦点、风险提示各一家),
并排等高或上下等宽、外观相同,自动连成一组(间距收到 4px、内角收小);`"join": false` 拆开。

**组合**(模板):律所(封面带 Logo、律所介绍、律师简介、结束页)、法律(法条解读、案例复盘、争议焦点、庭前准备、
证据梳理、案情经过、类案研究)、通用(封面、章节页、一图一讲、一图一数一讲、整页图、左右两图、图 + 金句、
数字一排、三卡并列、左右对照、标题 + 要点、整页出血图、整页关系图、金句页)。坐标照抄组合,只填字段。
完整格式、坐标见 `references/deck-format.md`。

## 三、编辑器与 AI(主要用法)

```bash
python3 scripts/studio.py my-deck          # 打开编辑器(浏览器自动打开;只听本机,材料不出电脑)
```

编辑器:左边按做一页图表页的顺序排——「选图(法律场景 + 已有的图)/ 排法 / 说明(读图、依据)/ 适配(风格、版面)/ 导出」,
最下面「更多」放整套课件用的(封面、章节页、律所名片、介绍页、AI 做整套);再点一下当前入口可收起左栏。
中间是页面(拖进来吸到格子、同类卡片自动连组、拖到被占的地方旁边的卡片让位、落在卡片上一分为二、拖角和边按格子改大小,
按住 Ctrl / ⌘ 不吸附),新的一页是空页、先选法律场景。右下角可放大缩小(Ctrl / ⌘ + 滚轮,Ctrl+0 适应窗口)。右边是属性、读图(放编号、切片、聚焦、按编号拆页、V5 选要件;V6 图表还有「换一种图」)与检查。
顶上「AI」:重做这一页、后面加一页;选中一张卡:让 AI 写这张卡 / 再来一版;选中一张图卡:让 AI 用 V1–V6 生成。

**用户点了「AI 生成」,请求记在 `ai/requests.json`,由你(对话里的 AI)来做。** 开编辑器之后:

```bash
python3 scripts/ai.py my-deck wait --timeout 900      # 等请求;有就打印上下文(JSON)
python3 scripts/ai.py my-deck take r3                 # 开始做(编辑器里显示「AI 正在做」)
python3 scripts/ai.py my-deck apply r3 result.json    # 交回结果:先校验,过了才写进课件;编辑器自动刷新,可撤销
python3 scripts/ai.py my-deck fail r3 --note "缺判决书原文,请先上传"
python3 scripts/ai.py my-deck done r3 --note "法条原文请您上传后再核"   # apply 后还有改不了的:收尾并说明
```

循环:`wait` → 读上下文 → `take` → 写结果 → `apply`(看它打印的「还要改」,改到没有为止)→ 回到 `wait`。
apply 打印了「还要改」,请求就还是「正在做」:改好后**对同一个请求**再 `apply`(加页类会换掉上次加的那几页,不会越加越多);
改不了的(缺用户的原文、材料)用 `done --note` 收尾,说清缺什么。上下文里的 `answer` 给了这一类请求的交回写法与照抄就能跑的命令。
用户在对话里说「处理课件请求」时,用 `list` 看所有未处理的。

上下文里有:请求(类型、想法 prompt、目标页 / 卡)、这一页的现状、整套大纲、律所名片摘要、素材清单、
目标卡片的像素尺寸(`target_box`)、规矩。结果的写法:

| 请求 kind | 交回 |
| --- | --- |
| module | `{"module": {字段…}}`:并进那张卡(不写 x/y/w/h 就不动位置) |
| tool | 先按那个模块(V1–V6)的 SKILL.md 出图,V1–V5 的 SVG 或 V6 的图表说明写进 `assets/`(可用 `"assets": {"x.json": …}`),再 `{"module": {"file": "assets/x…"}}`。图要按 `target_box` 出,字缩完不小于 11px;风格与课件一致 |
| page / cover | `{"modules": [模块…]}`:换掉这一页(按网格写坐标) |
| new-page / deck | `{"slides": [{"modules": […]}, …]}`:插在这一页后面 |

都可以加 `"note": "给用户的一句话"`,编辑器里会显示。

**法律垂类的规矩(AI 生成时也一样,最要紧的三条):**
1. **法条、裁判要旨照录原文,不凭记忆写。** 原文只能来自用户给的材料或你查到的官方来源;拿不到就把 `text` 留空,
   在 note 里说「请上传原文 / 我查到的出处是…」。导出清单会提醒逐字核对。
2. **案号、法院、当事人不编。** 没有就不写;示例一律标「示例」「虚构」。
3. **数字只许算、不许编。** 大数字写 `from` 指向图表,脚本用 V6 的数字核对推一遍,推不出就拒。

其余:一页说一件事;一张要点卡不超过 5 条;字放不下就拆页,不缩到 16px 以下;整套一种风格,V1–V5 的图风格不符就回原模块重出;不留空卡片。

## 四、检查与导出(不开编辑器时)

```bash
python3 scripts/build.py my-deck --check      # 逐页检查,不写文件
python3 scripts/build.py my-deck               # 导出到 my-deck/exports/<标题>.pptx
```

退出码:0 成功;1 说明有错;2 有页面没准备好;3 导出后回读没过。**不是 0 就不要交付。**
「请核」是提醒人看一眼的地方(法条、要旨、金句的逐字核对,约数,手填的大数字),照实转告用户。

## 五、律所名片

编辑器「律所」页填一次:Logo(PNG / JPG / SVG,≤ 2MB)、律所名称 / 介绍 / 业务领域 / 地址 / 电话 / 邮箱 / 网址、
每位律师的姓名 / 职务 / 介绍 / 专长 / 代表业绩。存在课件目录的 `brand/`(有就用它),否则存本机公共名片
`~/.mqc-nlv/brand/`(环境变量 `NLV_BRAND_DIR` 可改),以后每套课件都能用。格式见 `scripts/brand.py` 文件头。

- 一键生成:律所介绍页、律师简介页(含代表业绩)、结束页(谢谢 + 联系方式)。不需要 AI;要按场合润色再交给 AI。
- 介绍卡、联系方式卡、Logo 都**实时读名片**:改名片,所有介绍页跟着变。
- 「每页页脚放 Logo」:内容页左下角放小 Logo(已有 Logo 卡的页不重复)。
- **Logo 是 PPTX 里唯一允许的图片**:PNG / JPG 作为图片放进去,在 PowerPoint 里能直接替换;SVG Logo 转成可编辑形状,
  它的颜色算律所品牌色。其余元素仍然全是可编辑的形状和文字,回读审计会抓 Logo 以外的任何图片。

## 五之二、自定义风格(从律所自己的模板、截图或一个主色来)

风格只有三种:奇川风、歸藏风、自定义(作者定的:不为哪一家律所单立风格名)。自定义在编辑器「适配」里做:
传模板(.pptx)、传一张截图(取主色),或直接选一个主色;同一次上传顺带算出预留位置。编辑器界面始终是奇川风。
从模板做也可以用命令行,两步:

```bash
python3 scripts/template_read.py 模板.pptx -o 读取结果/ --render   # 第一步:只读,出读取报告(颜色、字体、版面、Logo、页型、对比度)
python3 scripts/firm_style.py make 读取结果/tokens.json --name 某某律所风 -o 律所名片目录/style.json   # 第二步:生成律所风格
```

- **读什么**:主色(主题的 accent1)、主色的深一档与浅色调、正文灰、标题与正文的字体字号、页边距、Logo 的位置与两版(深底用白字版、浅底用彩色版,按图本身的亮度分)、每页的页型。
- **怎么用**(作者定的):封面、章节页用主色满版、白字、深底 Logo;内容页白底、标题用主色;卡片用模板最常用的浅色调。
  **中文标题用粗黑体**(PowerPoint 里是微软雅黑加粗),模板没写中文字体时也这样。
  **只用主色家族与灰**,模板里的辅助色先不放进来,一页仍只有一处重音。
- **V6 图表跟着换**:图的重音换成律所主色、标题用同一种粗黑体(V6 的 firm_palette,主色要过 V6 的对比度与「不是灰」检查,见 V6 ADR 0011)。
- **V1–V5 的图不拒**:它们没有律所风格的版本,V7 也不改别的模块的颜色;交付清单会提醒「回原模块出白描版放进来更协调」。
- **深底页(封面、章节页)不放图表和图**:放不清,拼页会拦下。
- **校验**:正文在纸上、卡片上,白字在主色上,封面字在封面底上,对比度都要 ≥ 4.5;主色不能接近灰;不能和内置风格同名。过不了就说清是哪一处、差多少。
- **存在哪**:律所名片目录(课件的 `brand/` 或本机公共名片):`style.json`、`template/report.html`、`template/tokens.json`、两版 Logo。**模板本身不留存**(是律所的财产),也不要放进开源仓库。
- **用上**:deck.json 的 `style` 写 `"自定义"`(旧课件里写的律所风格名读进来自动认作「自定义」)。停用时文件改名为 `style.disabled.json`(不删),课件自动换回奇川风。

## 六、导出的 PPTX

- 每页 16:9;每个元素都是能点开改的形状或文字(Logo 除外,见上);连成一组的卡片是四角不同的自由形状。
- 导出后回读审计:页数、XML 合法、图片只有 Logo、颜色在风格白名单里(律所风格就是律所风格文件里的颜色;V1–V5 的图与 SVG Logo 的颜色另行登记)、写的字都在。没过不交付,旧文件不动。暂存区不导出。

## 七、交付时对用户说

一两句:做了几页、哪些地方要人核(法条、要旨、金句、手填的数字)、文件在哪。图被拒时,说清是哪页、该回哪个模块用什么风格、按多大尺寸重出。

## 七之一、出处:鼠标停在图里的元素上(0.8.4)

- 编辑器里鼠标停在图里的事件、柱子上,浮出它出自哪里;选中图卡,右侧「出处」列出全部。**只读原模块写好的出处,不编。**
- **V2 时间轴、V3 关系图**:出图时图旁边有一份 `<名>-trace.json`(V2:事项、材料、第几句、原文摘录;V3:每个主体、每条关系的出处),**和图一起放进 `assets/`**。V3 里没写出处的主体、关系,悬停时明说「没写」。
- **V6 图表**:说明里用了 `dataset` + `view`(逐件记录)的,自动有:每一项来自哪几条记录、编号是什么。
- 其余的图(V1、V4、V5,没用逐件记录的 V6)没有逐项出处,不显示。
- **写进演讲者备注(可选)**:编辑器「导出」里打开「出处写进演讲者备注」,或 `build.py 课件 --notes`。只写有出处的页;讲课时演示者视图里看得到,观众看不到。不打开就一个字节都不加。

## 七之二、读图编号、切片与逐个讲(0.5.0)

- 图卡导入后,V7 认出图里的元素(磁吸点):V1 / V2 的事件与期间、V3 的主体与关系(含关系标注)、V6 的每个数据项。V4 简表、V5 对抗图没有标记,只能整张放。
- 图卡字段:`pins`(读图编号,元素键的列表,最多 9 个)、`crop`(切片,只取这些元素那一块);要点卡 `numbered: true` 时与编号同号。
- 编辑器:选中图 → 右侧「读图」→「放编号」「切片」「生成读图要点」;编号顺序可调,要点跟着换。
- 放不下的图(字 < 11px)照样显示,先切片再导出。导出的 PPTX 里每个元素、每个编号各成一组、按名字命名。
- 聚焦(0.8.0):图卡与图表卡可写 `focus`(元素键列表)——这些元素照常,其余往白里调;整张图仍在。
  「按编号拆成几页」:全图这页之后,每个编号一页、只点亮它。V6 图表卡「换一种图」:同一份数据,V6 能画的图都列出来。

## 七之三、左栏、结论卡、讲课动画、V5 兼容层(0.6.0)

- 左栏:选图(法律场景 + 已有的图)→ 排法 → 说明(读图 / 依据)→ 适配(风格、版面)→ 导出;整套课件用的都在「更多」。
- 一句话结论卡 `conclusion`:一两行;拖到图的正上方 / 正下方会吸过去、与图同宽。
- 导出默认写讲课动画:有读图编号的页,点一下出「编号 + 它指的元素 + 同号要点」。
- V5:图卡写 `data`(V5 的数据文件,分析输入或图输入都认)与 `part`(第几个要件,从 0 起;不写 = 全部),V7 按图卡宽度调 V5 出图并只取卡片。

## 八、回归

`python3 tests/run_checks.py`(约 670 项):结构校验与旧格式升级、网格与连组、落点与整理、每个组合 × 两种风格、
法律卡(照录、出处、案号、编号)、律所名片(实时读取、一键介绍页、Logo 校验)、Logo 导出与「只许 Logo 一张图」、
AI 请求队列(校验不过不写、取消的不能交)、文字与空卡片、大数字核对、图的缩放与风格、导出审计(含篡改检测)、
编辑器接口与越界防护、编辑器 JS 规则与 Python 逐项对照、示例课件成品账,以及「V1–V6 一个字节没变」。改完必跑,不过不发。