306 lines
22 KiB
YAML
306 lines
22 KiB
YAML
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 域名
|
||
- 涉及登录、验证码时按「登录」小节的方式处理,不要猜测账号
|
||
- 正式提交前必须获得用户确认
|
||
- 不要猜测学校内部未在指南中说明的规则
|