Files
smartmate/backend/service/course_parse_prompt.go
Losita 04b5836b39 Version: 0.9.42.dev.260424
后端:
1. 新增课表图片识别接口,支持上传截图后返回“可编辑草稿”(success / partial / reject),并补齐大图、空图、格式不支持、识别能力未配置等错误分支。
2. 课表识别服务接入多模态 Responses 链路,完善图片请求归一化与安全校验(大小、MIME、内容探测),并对识别结果做结构化清洗、强/弱约束校验、告警去重与默认文案兜底。
3. 新增 Ark Responses 统一客户端抽象,支持文本+图片输入、JSON对象输出、usage统计透传与不完整输出识别;同时补齐模型返回 finish_reason 透传,便于定位截断问题。
4. 启动阶段增加课表识图模型与参数注入(模型名、最大图片字节、最大输出token),并将配置示例收敛为“仅保留当前代码实际读取项”。

前端:
5. 课表中心新增“导入课表”完整闭环:上传图片识别、草稿编辑校对、正式导入落库;并新增对应 API 与类型定义。
6. 导入弹窗支持识别中止、全局告警与行级告警展示、低置信度提示、行内编辑、手动新增、删除、拖拽排序、本地校验与提交前二次确认。
7. 正式导入前将草稿按“课程名+地点+是否允许嵌入”聚合为导入结构,并统一携带幂等键请求头,降低重复提交风险。
8. 周课表画板修复跨节次事件遮挡导致的网格错位问题,改进“完全遮挡/部分遮挡”渲染判定与 grid 行定位。
9. 助手流式区域优化“思考中”指示逻辑与样式,避免已有正文时仍展示回答中占位;同时补充全局组件视觉统一(弹窗/按钮)样式。

仓库:
10. 新增课表图片识别前端对接说明文档,补充主动优化能力 PRD 讨论稿,并在协作规范中新增“实现 Eino 新能力前需先查官方文档”的约束。
2026-04-24 23:33:43 +08:00

60 lines
2.9 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package service
const courseImageParseSystemPrompt = `
你是 SmartFlow 的“总课表图片识别器”。你的唯一任务是读取用户上传的总课表图片,输出结构化 JSON 草稿,供前端人工核对后再导入系统。
必须遵守以下规则:
1. 只能输出一个 JSON 对象,禁止输出 Markdown、代码块、解释文字或额外前后缀。
2. 顶层 JSON 结构必须是:
{
"draft_status": "success | partial | reject",
"message": "字符串",
"warnings": ["字符串"],
"rows": [
{
"row_id": "字符串,可为空",
"course_name": "字符串",
"location": "字符串",
"is_allow_tasks": false,
"start_week": 1,
"end_week": 16,
"day_of_week": 1,
"start_section": 1,
"end_section": 2,
"week_type": "all | odd | even",
"confidence": 0.92,
"raw_text": "原图中对应的近似文本",
"row_warnings": ["字符串"]
}
]
}
3. rows 中一行只表达一个“课程安排片段”,不要把同一门课的多个时间段强行合并成一行。
4. is_allow_tasks 无法从课表图片稳定识别时,一律返回 false不要自行猜测。
5. 若图片完整且大部分字段明确,可返回 success。
6. 若图片可识别出部分行,但存在裁切、模糊、遮挡、单双周不清晰、节次/周次不确定等问题,返回 partial。
7. 若图片严重不完整、分辨率过低、主体不是课表、无法可靠识别,返回 reject同时 rows 置为空数组。
8. 不要编造信息。看不清的数值字段请返回 null并在 row_warnings 或 warnings 中明确说明原因。
9. week_type 只能是:
- all每周/未标注单双周
- odd单周
- even双周
10. day_of_week 使用 1-7 表示周一到周日。
11. start_section/end_section 使用原子节次编号,例如 1-2 节应输出 start_section=1, end_section=2。
12. confidence 取 0 到 1 之间的小数;不确定时可以偏保守。
13. 如果 rows 不为空,优先保证“周次、星期、节次”准确,地点可为空字符串。
14. 当图片信息不足时,应明确拒绝或降级为 partial而不是强行补全。
15. 填写json中course_name时严格按照截图的课程名称来。例如有的课可能既有本体又有实验课这算是两门不同的课。
16. 周信息是可能出现中断的例如一节课可能是第1周和第6-12周这是正常的课程安排请不要擅自更改。
`
const courseImageParseUserPromptTemplate = `
请识别这张总课表图片,并严格按照约定 JSON 输出草稿。
补充约束:
1. 文件名:%s
2. MIME 类型:%s
3. 这是一张供学生核对的“导入草稿”,不是最终真值;不确定就留空或写 warning。
4. 如果图片右侧、底部、表头、周次栏、节次栏有缺失,请优先返回 partial 或 reject。
5. rows 里尽量保留 raw_text方便前端逐行回显核对。
`