# 交接 · 组卷台 2026-09-02.2（知识点标注版）→ difrobot.cn 部署

> 2026-09-03 由组卷台开发会话出具，逐条对 02.1 备份 diff 核过（后端 diff 91 行全是知识点相关）。
> 流程不变：surface:40 加工 → zaojuan-deploy → 服务器 pull。

## ① 前端

- 文件：`/Users/luyan/Desktop/AI workspace/课程设计机器人/组卷系统/组卷台.html`
- 大小：**182,096,263 B（173.7 MB）**，`NEED_BUILD='2026-09-02.2'`
- 相对 02.1 多了：26,670 题的知识点 `k` 字段（构建期已合入，**服务器不需要任何 KP 数据文件**）、跨教材知识点组卷前端逻辑、知识点筛选框全教材常显、题卡来源教材标。
- ⚠ 同目录 `*.bak-*`、`*.kp-wip`（若还在）不要带。

### 加工脚本要防的特殊字符串（本版实测）

| 字符串 | 出现次数 | 说明 |
|---|---|---|
| `</body>` | **2** | 第 1 处在 **line 33874**，是 `doWord()` 里 JS 模板字符串的一部分（和上次同一个坑，位置变了）；真正的结尾是**最后一处**（line 34699）。请按「最后一次出现」或「文件末尾」定位。 |
| `</html>` | 2 | 同上，第 1 处在同一个模板串里 |
| `</script>` | 4 | 都是真实标签；内嵌 vendor（MathJax/docx）里没有裸 `</script>` |
| `__DATA__` / `__FIG__` / `__COURSE__` | 0 | 构建占位符已全部替换，若加工后还看到说明拿错了源文件 |

## ② 后端

**只改了一个文件**：`组卷系统/组卷台AI助手.py`（`BUILD = '2026-09-02.2'`）。
改动内容：`COMPOSE_PROMPT` 加 kp/kp_like 规则；`nl_to_spec(text, catalog, kps)`、`validate_spec(raw, catalog, kps)` 新增知识点轴；`/api/compose` 从请求体读 `kps`。

以下**未动**（mtime 都早于 02.1 部署），不用重传但传了也无害：
`topic_source.py`(07-28)、`gen_router.py`(08-28)、`verify_gen.py`(08-28)、`export_lib.py`(08-27)、`xkw_similar.py`(07-29)、`自动出题/core+gen`（无任何文件晚于 02.1）。

**知识点数据文件（`知识点标注/labels/*.jsonl`、`merged_kg/`）不上服务器**：
它们只在构建 html 时被 `gen_组卷台.py` 读入；运行时知识点词表由**前端从内存题库算出**并随 `/api/compose` 请求体带给后端。目录相对关系和 02.1 一样：`组卷系统/` 与 `自动出题/` 平级即可。

## ③ API

- **无新增路径、无删除**。nginx 白名单 `version|topic|page|source|paper|similar|similar_batch|export_docx|report|compose|layout` 原样够用。
- 变化只在 `POST /api/compose` 的**请求体**：多了 `kps` 数组（≈700 个 `{n:知识点名,g:'3-4年级'}`，实测 body 约 60–90 KB）。nginx `client_max_body_size` 默认 1 MB 够；若之前收紧过请确认 ≥ 256 KB。
- 响应形状不变；spec 里 group 多了可选 `kps` 字段，前端自己消费。

## ④ 同批

**必须同批**：`BUILD` 与 `NEED_BUILD` 都是 `2026-09-02.2`。只上 html 不上后端 → 页面顶部红色版本横幅；只上后端不上 html → 老页面照常工作但没有知识点功能（不会报错）。

## ⑤ 依赖 / 环境

- pip：**零新增**（仍纯 stdlib）。
- 环境变量/密钥：不变，仍只读 `~/.deepseek_pro_key`。
- 无新目录、无新静态资源。

## 部署后验收（2 分钟）

1. `curl https://difrobot.cn/<组卷台路径>/api/version` → `"build": "2026-09-02.2"`，`sources.compose: true`。
2. 页面：教材选「一课一练」→ 知识点筛选框仍可见（02.1 会隐藏）；随便筛一个知识点，题卡前有 **加粗教材名**。
3. 「✨ AI 组卷」输入 `跨教材来 8 道鸡兔同笼，四年级` → 理解句含「知识点·」字样，预览 8 道且来自 ≥2 套教材（每行有教材角标）。
4. 老路径回归：`三年级，和差问题 5 道` → 5 道、非知识点轴。
