id: xuegong_demo name: 学工系统办事(演示) description: 学工系统多业务演示。用户一句话先识别业务并抽取字段,再按业务角色登录执行。 systems: - id: xgxt name: 学工系统 url: https://school.miaopinai.com:29800/xuegong/ allowed_domains: - school.miaopinai.com - "*.miaopinai.com" login: # 优先级:system_accounts 表里有该用户此系统的账号 -> 自动填写(sensitive_data,LLM 看不到明文) # 否则按 fallback_mode:quick_login = 点测试环境快捷登录按钮(角色由业务的 role 决定);manual = 请用户手动登录 fallback_mode: quick_login # 全局已知信息(所有业务共享),运行时注入 prompt learned: 门户: 登录后自动进入 https://school.miaopinai.com:29800/xuegong/portal,顶部导航有 首页 / 消息中心 / 待办中心,右上角有「退出」 快捷登录: 登录页「测试环境快捷登录」有 系统管理员 / 校级管理员 / 院系领导 / 辅导员 / 学生 五个按钮;点按钮只是把账号密码填进输入框,还要再点「登 录」才真正登录 辅导员日志任务: 「辅导员工作日志 → 日志填报」任务列表共 5 项:每月查课要求、谈心谈话常规要求、家访走访常规要求、主题班会常规要求、每周谈心谈话;每项「进入」后都有「新建填报」,表单地址形如 /xuegong/duiwu/ledger/my/new/{任务id} businesses: # ---------------- 辅导员:工作日志填报(查课 / 听课记录) ---------------- - id: counselor_worklog name: 辅导员工作日志填报(查课) role: 辅导员 system: xgxt intent: 辅导员填写工作日志、每月查课日志、听课记录、查课记录填报 required_inputs: - name: class_name label: 班级 type: text required: true hint: 如 计科2301班 - name: observe_date label: 听课日期 type: date required: true hint: 用户说「今天」按当天换算 - name: course_name label: 课程名称 type: text required: true hint: 听的是哪门课 - name: teacher label: 授课教师 type: text required: true - name: record label: 听课记录 type: text required: true hint: 用户对听课情况的描述原文,如「还好还好」 - name: location label: 听课地点 type: text required: false - name: follow_up label: 后续跟进 type: text required: false - name: log_type label: 日志类型 type: text required: false default: 查课 workflow: # 第一阶段(已完成,2026-09-17):只读探索。结论见下方 learned - step_id: worklog_explore_readonly enabled: false max_steps: 40 goal: 以辅导员身份登录学工系统,找到「工作日志」或「查课 / 听课记录」的填报入口,打开新建日志的表单,读出全部字段。只读:不填写、不提交。 instructions: - 找到新建 / 填报表单后,用 save_artifact 保存 entry_url 和 form_fields - 找不到时保存 menus 并在 done 里说明找过哪里,这也算完成 human_confirm_before: null success_artifacts_any: [form_fields, menus] # 第二阶段:填报 + 提交前确认 - step_id: worklog_fill_and_submit enabled: true max_steps: 60 # 填表时一步可以连做多个动作(如连填几个文本框),比一步一动作快得多 max_actions_per_step: 6 goal: 以辅导员身份登录学工系统,进入「每月查课要求」的新建填报表单(查课听课记录),按用户资料填写:班级 {class_name}、听课时间 {observe_date}、课程名称 {course_name}、授课教师 {teacher}、听课记录「{record}」。填完后逐项请用户确认,确认后点击「提交填报」并记录结果。 instructions: - 路径:门户 → 辅导员管理 → 辅导员工作日志 → 左侧「日志填报」→ 任务列表「每月查课要求」点「进入」→ 点「新建填报」;已登录时也可直接打开已知信息里的新建填报表单地址 - 提交前先看任务详情页的已有记录列表,若已有同一天、同一班级的查课记录,调用 ask_user 询问用户是否仍要提交 - 班级是下拉框:点开后选择与「{class_name}」匹配的选项(选项形如「计科2301班(计算机科学与技术·计算机科学与技术学院)」) - 听课时间是日期选择框:优先点进输入框直接键入 {observe_date} 再按回车;不行再用日历面板点选 - 课程名称、授课教师、听课记录按资料原文填写;听课地点、后续跟进资料里有就填,没有就留空,不要编造 - 表单里若还有资料里没有的必填项,调用 ask_user 询问用户 - 全部填好后调用 ask_user,把即将提交的每个字段和值逐项列出请用户确认,并说明将点击「提交填报」 - 用户确认后点击「提交填报」(不是「保存草稿」),然后用 save_artifact 保存 submitted_record(提交的字段和值)和 result_message(页面提示原文) - 用户说取消或不提交:不要点提交,用 save_artifact 保存 cancelled(用户原话),不要保存 submitted_record / result_message,然后 done 说明已填未提交 human_confirm_before: submit on_success_status: submitted submitted_artifacts_any: [submitted_record, result_message] # 提交后跟踪:到点拉起只读任务看审批状态。approval_status 含「通过 / 同意」→ completed,含「驳回 / 退回」→ rejected,否则继续 tracking: interval_minutes: 60 max_checks: 48 step: step_id: worklog_track_status max_steps: 20 max_actions_per_step: 4 goal: 以辅导员身份登录学工系统,进入「辅导员工作日志 → 日志填报 → 每月查课要求」的任务详情页,在历史填报列表里找到之前提交的那条记录(内容:{submitted_record}),读出它当前的审批状态和审批轨迹。只读:不点任何提交 / 修改 / 撤回按钮。 instructions: - 已登录时可直接进入「辅导员工作日志」,左侧「日志填报」→「每月查课要求」点「进入」,历史填报列表在任务详情页 - 按课程名称、授课教师、听课时间匹配那条记录;有多条相似时取时间最接近提交时间的 - 用 save_artifact 保存 approval_status(列表或详情里显示的审批状态原文,如 未审批 / 待审批 / 已通过 / 已驳回)和 approval_note(审批轨迹或审批意见原文,没有就不保存) - 找不到那条记录时保存 approval_status=未找到记录 并在 done 里说明 learned: 入口路径: 门户 → 业务模块「辅导员管理」→「辅导员工作日志」→ 左侧菜单「日志填报」→ 任务列表「每月查课要求(查课听课)」点「进入」→ 任务详情页点「新建填报」 新建填报表单地址: https://school.miaopinai.com:29800/xuegong/duiwu/ledger/my/new/ff6be301-0fa3-4fc7-a1f8-e39f45574b24 (登录后可直接打开;表单标题「查课听课记录」) 表单字段: 课程名称(文本,必填);授课教师(文本,必填);班级(下拉,必填,仅可选主带或协带班级,如 计科2301班);听课时间(日期选择,必填);听课地点(文本,选填);听课记录(文本域,选填);后续跟进(文本域,选填) 按钮: 取消 / 保存草稿 / 提交填报 任务说明: 每月查课要求:每周至少记录 3 次,考核范围 2026-09-14 至 2026-09-20 班级下拉技巧: 点击班级输入框展开选项后,要点击选项的文字容器才能选中,直接点 option 元素无效 日期控件技巧: 听课时间输入框点进去直接键入 2026-09-17 这样的日期再按回车即可,输入框可能一直显示 invalid 样式,这是显示问题不影响提交,不要反复重试 任务列表为空: 「日志填报」任务列表有时显示「当前没有分配给你的填报任务」,此时直接打开新建填报表单地址即可 填写顺序: 课程名称、授课教师、听课记录是普通文本框,可以在一步里连续填完,再处理班级下拉和听课时间 其他日志任务: 谈心谈话常规要求 / 家访走访常规要求 / 主题班会常规要求 / 每周谈心谈话 # ---------------- 辅导员:每周谈心谈话记录 ---------------- - id: counselor_talk name: 辅导员谈心谈话记录填报 role: 辅导员 system: xgxt intent: 辅导员填写谈心谈话记录、每周谈心谈话日志、和某个学生谈话后的记录 required_inputs: - name: student_name label: 谈话对象 type: text required: true hint: 学生姓名或学号 - name: talk_date label: 谈话时间 type: date required: true hint: 用户说「今天」按当天换算 - name: topic label: 谈话主题 type: text required: true hint: 一个短语,如 学业压力 / 心理疏导 / 学业适应 - name: content label: 谈话内容 type: text required: true hint: 谈了什么、学生的情况,用户原话或据实整理 - name: follow_up label: 后续跟进 type: text required: false - name: key_focus label: 标记为重点关注 type: text required: false hint: 是 / 否,用户没说就不填 workflow: # 第一阶段(已完成,2026-09-17):只读探索,结论见 learned - step_id: talk_explore_readonly enabled: false max_steps: 40 goal: 以辅导员身份登录学工系统,进入「辅导员工作日志 → 日志填报」,找到「每周谈心谈话」(或「谈心谈话常规要求」)任务,打开新建填报表单,读出全部字段(名称、控件类型、是否必填、下拉可选项)。只读:不填写、不提交。 instructions: - 入口与查课日志相同:门户 → 辅导员管理 → 辅导员工作日志 → 左侧「日志填报」;任务列表里找谈心谈话相关任务点「进入」再点「新建填报」 - 如果任务列表显示没有分配任务,尝试点任务列表页面上的筛选或「全部」,仍找不到就保存 menus 并说明 - 找到表单后用 save_artifact 保存 entry_url 和 form_fields(每个字段的名称、控件类型、是否必填、可选项,用分号分隔);同一表单有多个日志任务时也记录任务名称列表 tasks - 找不到不算失败:保存 menus 并说明找过哪里即可 done human_confirm_before: null success_artifacts_any: [form_fields, menus] # 第二阶段:填报 + 提交前确认 - step_id: talk_fill_and_submit enabled: true max_steps: 60 max_actions_per_step: 6 goal: 以辅导员身份登录学工系统,进入「每周谈心谈话」的新建填报表单(谈心谈话记录),按用户资料填写:谈话对象 {student_name}、谈话时间 {talk_date}、谈话主题 {topic}、谈话内容「{content}」。填完后逐项请用户确认,确认后点击「提交填报」并记录结果。 instructions: - 已登录时直接打开已知信息里的新建填报表单地址;否则走 门户 → 辅导员管理 → 辅导员工作日志 → 日志填报 → 「每周谈心谈话」点「进入」→「新建填报」 - 提交前先看任务详情页的已有记录列表,若已有同一天、同一谈话对象的记录,调用 ask_user 询问用户是否仍要提交 - 谈话对象是搜索下拉:点进输入框键入「{student_name}」,等候选列表出现后点击匹配项的文字容器;候选有多个同名时调用 ask_user 让用户选 - 谈话时间是日期选择框:点进输入框直接键入 {talk_date} 再按回车 - 谈话主题、谈话内容按资料原文填写,可在一步里连续填完;后续跟进、重点关注资料里有就填,没有就留空,不要编造;附件不上传 - 全部填好后调用 ask_user,把即将提交的每个字段和值逐项列出请用户确认,并说明将点击「提交填报」 - 用户确认后点击「提交填报」(不是「保存草稿」),然后用 save_artifact 保存 submitted_record 和 result_message(页面提示原文) - 用户说取消或不提交:不要点提交,用 save_artifact 保存 cancelled(用户原话),不要保存 submitted_record / result_message,然后 done 说明已填未提交 human_confirm_before: submit on_success_status: submitted submitted_artifacts_any: [submitted_record, result_message] tracking: interval_minutes: 60 max_checks: 48 step: step_id: talk_track_status max_steps: 20 max_actions_per_step: 4 goal: 以辅导员身份登录学工系统,进入「辅导员工作日志 → 日志填报 → 每周谈心谈话」的任务详情页,在历史填报列表里找到之前提交的那条记录(内容:{submitted_record}),读出它当前的审批状态和审批轨迹。只读。 instructions: - 按谈话对象、谈话时间、谈话主题匹配那条记录 - 用 save_artifact 保存 approval_status(审批状态原文)和 approval_note(审批轨迹或意见原文,没有就不保存) - 找不到那条记录时保存 approval_status=未找到记录 并在 done 里说明 learned: 入口路径: 门户 → 辅导员管理 → 辅导员工作日志 → 左侧「日志填报」→ 任务列表「每周谈心谈话」点「进入」→ 任务详情页点「新建填报」 新建填报表单地址: https://school.miaopinai.com:29800/xuegong/duiwu/ledger/my/new/ee5b9c10-fa2e-4a2b-b21c-54930377e5cb (登录后可直接打开;表单标题「谈心谈话记录」) 表单字段: 谈话对象(搜索下拉 combobox,按姓名或学号搜索,必填);谈话时间(日期选择,必填);谈话主题(单行文本,必填,提示如 学业适应 / 心理疏导);谈话内容(多行文本,必填);后续跟进(多行文本,选填);标记为重点关注(单选 是/否,选填);相关附件(文件上传,选填) 按钮: 取消 / 保存草稿 / 提交填报 任务说明: 每周谈心谈话:每周至少记录 1 次,考核范围 2026-09-14 至 2026-09-20,任务长期有效 日期控件技巧: 谈话时间输入框点进去直接键入日期再按回车,输入框可能显示 invalid 样式,这是显示问题不影响提交 # ---------------- 辅导员:核实学生返校 ---------------- # 普通辅导员业务。学生请假被「返校核验」拦住时,由辅导员在自己的端上办这件事,学生随后点「继续」重试 - id: counselor_return_verify name: 辅导员核实学生返校 role: 辅导员 system: xgxt intent: 辅导员核实某个学生的返校情况、处理学生的未返校记录、返校核验、把学生标记为已返校 required_inputs: - name: student_name label: 学生 type: text required: true hint: 学生姓名或学号 workflow: # 第一阶段:只读探索,找到辅导员端核实返校的入口和操作方式 - step_id: verify_explore_readonly enabled: true max_steps: 40 goal: 以辅导员身份登录学工系统,找到核实学生返校情况的入口(可能在「节假日离返校」「学生管理」或待办中心),找到学生「{student_name}」的未返校记录,看清核实 / 补登 / 标记已返校的操作入口和表单字段(名称、控件类型、是否必填、可选项)。只读:不点确认、不提交、不修改。 instructions: - 先看门户业务模块里与「离返校」「返校」「核验」相关的模块,再看「待办中心」有没有相关待办 - 找到学生列表或记录列表后,用搜索或筛选定位「{student_name}」,用 save_artifact 保存 student_records(该学生的未返校记录:假期、预计返校、状态,用分号分隔) - 找到核实 / 补登操作后,只打开弹窗或表单读字段,用 save_artifact 保存 entry_url 和 form_fields,然后关闭弹窗,不要点确认 - 找不到入口就保存 menus 并说明找过哪里,这也算完成 human_confirm_before: null success_artifacts_any: [form_fields, student_records, menus] # 2026-09-17 探索结论:辅导员端没有核实 / 补登入口,见 learned learned: 带班工作台: 门户 → 节假日离返校 → 辅导员看到的是「带班工作台」https://school.miaopinai.com:29800/xuegong/affairs/holiday-checkin/counselor,三个标签页:本班概览 / 学生报备明细 / 未返校异常,顶部可切换假期 学生报备明细: 行内只有「查看详情」,弹窗只显示报备与签到信息,没有核实 / 补登 / 标记已返校的操作 辅导员端模块: 学生管理、综合测评、评奖评优、违纪处分、资助管理、请销假、节假日离返校、学工队伍、辅导员工作日志、绩效考核;学生管理子菜单为 档案统计 / 学生档案 / 填报审核 / 核对进度 / 重点关注 结论: 学生的历史「未返校」记录在辅导员端无法处理,待办中心也没有相关待办;需要管理员角色或系统侧处理 # ---------------- 学生:请假(带前置阻断声明) ---------------- # 2026-09-17 探索:测试学生账号有 10 条「未返校」记录,学生端补登窗口已关闭,页面提示「如实际已到校请联系辅导员核实」。 # 所以「发起请假」被拦截时,前置事项不是学生自己能办的,属于 other_role:由辅导员核实。表单字段要等阻断解除后再探索。 - id: student_leave name: 学生请假 role: 学生 system: xgxt intent: 学生请假、请病假事假、发起请假申请、销假 required_inputs: [] workflow: - step_id: leave_explore_readonly enabled: true max_steps: 40 goal: 以学生身份登录学工系统,进入「请销假 → 发起请假」,打开请假申请表单,读出全部字段(名称、控件类型、是否必填、可选项)。只读:不填写、不提交。 instructions: - 门户业务模块「请销假」→ 页面里的「发起请假」按钮 - 表单打开了就用 save_artifact 保存 entry_url 和 form_fields;不要填写不要提交 - 找不到入口就保存 menus 并说明,这也算完成 # 前置阻断声明:resolution = self(同角色可顺带办,需给 business_id)/ other_role(要别的角色处理)/ manual(线下处理) prerequisites: - id: return_verification title: 返校核验 match: 请先完成未办结的返校核验 resolution: other_role advice: 由辅导员在学工系统里核实你的返校情况(学生端的补登窗口已经关闭,「节假日离返校 → 返校登记」里只能查看不能补登) human_confirm_before: null success_artifacts_any: [form_fields, menus] learned: 请假入口: 门户 → 业务模块「请销假」→ 页面「发起请假」按钮,页面地址 /xuegong/affairs/leave,列表是「我的请销假」 返校登记页: 门户 → 节假日离返校 → 左侧「返校登记」(/xuegong/affairs/holiday-checkin/return),三个 tab:待返校 / 未返校 / 已返校;学生端只能查看,补登窗口结束后不能操作 拦截提示: 点「发起请假」若弹出「请先完成未办结的返校核验,或联系辅导员处理。」,说明有未返校记录未核实,这需要辅导员处理 # ---------------- 通用探索(识别不出业务时的兜底) ---------------- - id: generic_explore name: 通用探索 role: 学生 system: xgxt intent: 其他无法归类的需求,如查找某个入口、看看某个页面、了解某个表单有哪些字段 required_inputs: [] workflow: - step_id: generic_explore_readonly enabled: true max_steps: 40 goal: 根据用户目标「{goal}」在系统中找到对应入口,进入页面读出关键信息或表单字段。只读:不填写、不提交。 instructions: - 用 save_artifact 保存 entry_url、form_fields 或 findings(你发现的关键信息) - 找不到时保存 menus 并在 done 里说明找过哪里,这也算完成 human_confirm_before: null success_artifacts_any: [form_fields, menus, findings] learned: 学生端一级模块: 学生管理;综合测评;评奖评优;违纪处分;资助管理;请销假;节假日离返校;辅导员评议 留校申请: 学生端没有「留校申请」模块。最接近的是「节假日离返校 → 我的报备」(默认在校,离校才需报备) 请假前置: 「请销假 → 发起请假」可能被「请先完成未办结的返校核验」拦截,需先到「节假日离返校 → 返校登记」处理 rules: - 只允许访问 school.miaopinai.com 域名 - 涉及登录、验证码时按「登录」小节的方式处理,不要猜测账号 - 正式提交前必须获得用户确认 - 不要猜测学校内部未在指南中说明的规则