---
name: e10-data-dictionary
description: Use when E10/e-code backend work needs offline table structure discovery, custom SQL generation, table/column whitelisting, cross-table column-meaning lookup, foreign-key inspection, or formdata physical-table metadata in the absence of a live API.
---

# E10 数据字典

离线数据字典 skill。运行时只使用本 skill 内的 `references/index.jsonl`、`references/columns-index.jsonl`、`references/records/<tableName>.json` 和 `scripts/search.mjs`。

完全使用包内索引；不连接数据库；不执行 SQL。

## 强制规则

1. 表名、字段名、排序字段、JOIN 字段只允许来自 `search` / `load` 检索结果，禁止硬编码、猜测、复用历史代码。
2. 外部值必须参数化预编译，禁止字符串拼接。
3. 冲突表（同名异结构）不进入本 skill 的检索索引，禁止在 Agent 决策时随机猜测结构。
4. 动态表名/字段名只允许出现在 `references/records/*.json` 已收录的范围内。
5. `search` / `load` 输出仅供白名单与字段含义参考；不直接生成可执行 SQL 字符串。
6. 不在日志或前端响应中泄露 `references/` 内容、解析结果、连接信息。
7. `load` 未命中、所需字段不在字段清单中或冲突无明确裁决时，必须停止数据库相关代码生成；禁止按相似名称、模块前缀、字段语义、旧代码或记忆补全。
8. 用户给出的名称和当前代码中的名称只作为检索词，不自动成为可信表/字段白名单。

## 检索命令

```bash
node skills/e10-local-knowledge/modules/e10-data-dictionary/scripts/search.mjs search "工资单"
node skills/e10-local-knowledge/modules/e10-data-dictionary/scripts/search.mjs search "创建人" --module "流程流转"
node skills/e10-local-knowledge/modules/e10-data-dictionary/scripts/search.mjs load salary_bill_set --section summary
node skills/e10-local-knowledge/modules/e10-data-dictionary/scripts/search.mjs load salary_bill_set --section columns
node skills/e10-local-knowledge/modules/e10-data-dictionary/scripts/search.mjs find-column "审批人"
```

- `search <keyword>`：候选表，命中字段（tableName / displayName / module / columnKeywords / searchText）加权。
- `load <tableName> --section summary|columns|all`：单表 JSON 渲染为 markdown，输出 ≤ 12288 bytes，超长截断并标记 `[内容已截断]`。
- `find-column <keyword>`：跨表按字段名/字段中文名反查 `{tableName, displayName, module, columnName, label, typeRaw}`。

## 工作流程

1. 业务需求 → `search <关键词>` 拿候选表，必要时 `--module` / `--database` 收窄。
2. `load <tableName> --section columns` 取字段白名单（列名 / 类型 / 长度 / 可空 / 主键 / 外键 / 自增 / 默认值）。
3. 跨表 JOIN：先 `find-column <公共字段含义>` 找候选，再用 `load` 核对字段类型。
4. 未检索到但业务明确存在的表，先反馈缺失；不要根据记忆或相似表名补结构。
5. 表名/字段名确定后，按 `e10-backend-db` 强制规则拼接预编译 SQL。
6. 任一关键表或字段不能确认时，输出“缺少关键数据表信息，暂不生成代码”，列出准确表名、所属数据库、所需字段和来源四类待确认项。

## 已确认冲突表

- `form_field`：同名表在源数据中存在 `formreport` 与 `project` 两个结构版本。运行时以 `formreport` 数据库的“表单字段”版本为准（源 ID `100655700000000290`），已收录到 `references/records/form_field.json`。字段标题列为 `title`，删除标记列为 `is_delete`；不得使用未收录的 `wfc_formfield` 或 `fieldname`。
- `form_field` 实现引用必须先执行 `search form_field --database formreport` 和 `load form_field --section columns`。当前结构不存在 `delete_type`；禁止将其他表常见字段迁移到本表。

## 重新生成

源 HTML 更新后（`e10-tables/data/按模块分类/**/*.html`）：

```bash
node e10-tables/scripts/parse-data-dictionary.mjs
```

转换脚本在 skill 外部维护。冲突和审计报告输出到 `e10-tables/reports/`，不随 `.ecode` skill 运行时数据分发。
