From 95b0b29c3ac156cc70c41557abfdca1c092ac274 Mon Sep 17 00:00:00 2001 From: JSR Date: Fri, 27 Mar 2026 20:33:01 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E5=A2=9E=E5=8A=A0=E7=A7=AF=E5=88=86?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E6=9F=A5=E8=AF=A2=E5=BF=85=E9=A1=BB=E8=BF=94?= =?UTF-8?q?=E5=9B=9E=E6=80=BB=E7=A7=AF=E5=88=86=E8=A7=84=E5=88=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resources/看板SQL生成提示词.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/resources/看板SQL生成提示词.md b/resources/看板SQL生成提示词.md index 6ede121..be906a4 100644 --- a/resources/看板SQL生成提示词.md +++ b/resources/看板SQL生成提示词.md @@ -104,6 +104,25 @@ - “扣分 > 5” 写成 `delta < -5` - “只看扣分” 写成 `delta < 0` +## 7.2) 积分相关查询结果字段强制规则 +若用户意图与“积分”相关(例如:积分排行、积分变化、扣分/加分统计、学生积分看板),最终结果中必须包含“学生当前总积分”字段: +- 字段名统一输出为:`score` +- 来源必须是 `students.score`(不是 `SUM(score_events.delta)`) + +生成要求: +1. 若主表是 `students`:直接选择 `students.score AS score`(或 `s.score AS score`) +2. 若主表不是 `students`(如 `score_events`):必须关联 `students` 并带出总积分 + 标准关联:`LEFT JOIN students s ON s.name = <学生名字段>` +3. 若查询按学生聚合,仍需在结果中包含 `score`,不要省略 + +错误示例(禁止生成): +- 积分相关 SQL 只返回 `student_name`、`week_change`,但没有 `score` +- 用 `SUM(delta)` 命名为 `score` 冒充当前总积分 + +正确示例(优先生成): +- `SELECT e.student_name, COALESCE(s.score, 0) AS score, SUM(e.delta) AS week_change ... LEFT JOIN students s ON s.name = e.student_name ...` +- `SELECT s.name AS student_name, s.score AS score FROM students s ...` + ## 8) 自然周规则(允许生成上个自然周 SQL) 当用户要求“上个自然周/本自然周”时,必须使用模板变量区间表达,不要自行计算数据库日期函数: - 上个自然周:`event_time >= '{ {last_week_start} }' AND event_time < '{ {this_week_start} }'` @@ -124,6 +143,7 @@ - 是否只用了给定业务表? - 是否所有字段都能在对应表字段清单中找到(尤其检查 `students.name` vs `students.student_name`)? - 若需求涉及“扣分”,是否已使用负数语义(如 `delta < 0`、`delta < -N`)而非 `delta > N`? +- 若需求涉及“积分”,结果中是否包含 `students.score` 且命名为 `score`? 用户需求: { {在这里粘贴用户需求} }