Version: 0.9.73.dev.260505

后端:
1.阶段 5 course 服务边界落地
- 新增 cmd/course 独立进程入口,落地 services/course dao/rpc/sv
- 新增 gateway/client/course、shared/contracts/course 和 shared/ports course port
- 将 /api/v1/course/* HTTP 门面切到 course zrpc,gateway 只保留鉴权、限流、幂等、文件读取和响应透传
- 保留 course 迁移期直写 schedule_events / schedules 权限,维持课程导入两个表同事务写入语义
- 为 course parse-image 补 bytes RPC 契约和 gRPC 消息大小配置,兼容课表图片上传
- 补充 course.rpc 示例配置与阶段 5 文档基线、切流点、残留依赖和 smoke 记录
This commit is contained in:
Losita
2026-05-05 12:07:31 +08:00
parent 7ed8adf8d1
commit fd327f845b
21 changed files with 1882 additions and 42 deletions

View File

@@ -0,0 +1,59 @@
package sv
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方便前端逐行回显核对。
`