upsert_course_plan
Create or update a course plan and batch upsert lessons in one step. Manage plan details, target assignment, and lesson paper slots.
Instructions
建/改课程计划 + 批量 upsert 课次(一步到位)→ :9090。返回 {ok, plan_id, lesson_ids, view_url}。
计划 = 一段周期(如一个暑假)的课次编排蓝本;排课时按 lesson_seq 顺序自动绑到场次上。 🔴 R1a·S1:计划有归属——新建必传 target_type + target_id(BE 强校验对象存在且归我,缺传 400)。 🔴 PRD-B-101 契约平移:课次内容模型 = 专项卷位 paper_slots(替代旧 seg_template『段模板』)。 一课次 = N 张专项卷,每卷位可绑一张卷。旧字段 seg_template / default_seg_template 收到即报错拒绝 (不静默兼容,防两套字段并存漂移)。 参数: plan : {id?, name, target_type:'student|class', target_id:str(归属对象 id,🔴 新建必传), term_tag:'暑假|上学期|寒假|下学期', year:int, material_note?:str(素材说明,如「学而思 36 周书·挑题制」), default_paper_slots?:list(默认专项卷位模板,lesson 空则继承), status?:'0草稿|1启用|2归档'} —— 带 id = 改计划基本维,空 id = 新建。🔴 无 total_lessons(=课次数实时聚合)。 lessons : 课次列表,每个 dict:{id?(空=新增), lesson_seq:int, title, lesson_type:'0教学|1测试', tag?(自由标签,吃透课走这), source_ref?(素材源,如「学而思第10+11周」), thinking_action?(思维动作), layer_target?(层数目标,如 '2→3'), parent_copy?(家长版口语文案), kg_node_ids?:[str](课内同步锚的 biz_subject id), paper_slots?:list(本课次专项卷位模板,覆盖计划默认): [{slot_seq:int, name:str(必填非空), style:str, rules:str, note:str}] (🔴 绑定字段 paper_id/manual_ready 由服务端管,agent 写入通常只给 slot_seq/name/style/rules/note)}
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| plan | Yes | ||
| lessons | No |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||