🎉 init: 小龙的工作空间
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
# Reflection: DDL CONSTRAINT Leakage into TypeScript Interfaces
|
||||
|
||||
> Date: 2026-06-05 | Severity: P0 | Recurrence: 1
|
||||
|
||||
## Context
|
||||
Backend Builder Agent (SF-04) — `schema.ts` 生成时 DDL PRIMARY KEY / FOREIGN KEY / CONSTRAINT 行被当作数据列,泄露进 TypeScript interface 定义。
|
||||
|
||||
Example: `"PRIMARY KEY (id)"` → parsed as column `PRIMARY` with type `KEY`, `FOREIGN KEY (user_id) REFERENCES users(id)` → parsed as column `FOREIGN` etc.
|
||||
|
||||
## Root Cause
|
||||
DDL parser 没有区分 "column definition" 行和 "constraint" 行。`CREATE TABLE` 语句中的 CONSTRAINT 子句以特殊关键字开头(PRIMARY KEY, FOREIGN KEY, UNIQUE, CHECK),不应被解析为列定义。
|
||||
|
||||
## Fix
|
||||
Added `isConstraintLine()` check before parsing each line as a column. Lines starting with `PRIMARY KEY`, `FOREIGN KEY`, `UNIQUE (`, `CHECK (` are skipped in column parsing.
|
||||
|
||||
## Pattern Class
|
||||
**DDL-to-Code Mapping Error** — SQL DDL 的多层结构(column/constraint/index)被扁平化为单一映射时丢失语义。
|
||||
|
||||
## Future Trigger
|
||||
- Any SQL schema → code generation
|
||||
- Any DDL parser
|
||||
- Any ORM code generator
|
||||
|
||||
## Checklist
|
||||
- [ ] DDL 解析器必须有 column / constraint / index 三层分离
|
||||
- [ ] Constraint 行识别:PRIMARY KEY, FOREIGN KEY, UNIQUE (, CHECK (
|
||||
- [ ] 生成后验证:interface 字段数 ≤ 表列数(不含约束行)
|
||||
- [ ] 跑 benchmark 验证所有领域 schema 生成正确
|
||||
|
||||
## Recurrence Count
|
||||
1
|
||||
Reference in New Issue
Block a user