| name | bit-evaluation |
| description | Complete Beijing Institute of Technology (BIT, 北京理工大学) course teaching evaluations in the Codex in-app browser. Use when the user asks Codex to fill BIT/北理/北理工评教, pj.bit.edu.cn/pjxt2.0 course evaluations, or similar teaching evaluation forms by selecting the best available rating options, writing short comments such as "好", submitting each form, confirming OK dialogs, and checking all pages for remaining "评教" entries. |
BIT Course Evaluation
Workflow
Use the Browser skill and the in-app browser. Do not claim to control the user's external Edge/Chrome tab; only operate the Codex in-app browser unless another browser control surface is explicitly available.
- Show the in-app browser when the user needs to log in or watch progress.
- Confirm the user is already logged in at
https://pj.bit.edu.cn/pjxt2.0/welcome or a BIT evaluation page. If redirected to login_toLogin.do, ask the user to log in manually, then continue.
- Open
评价管理 -> 课程评价 if needed. In this old system, the list often lives in an iframe and may already be open as a tab named 课程评价.
- On the course list, process every visible row whose operation is
评教. Rows showing 查看 are already submitted.
- For each form:
- Select the first rating option in every question group, usually
非常符合.
- If the first option is unavailable, select the second option, usually
比较符合.
- Fill the course suggestion/comment textbox with the user's requested comment. If unspecified, use
好.
- Click
提交.
- After submission, click the iframe dialog's
OK button. The DOM may show 保存成功! followed by link "OK" inside the iframe.
- After the OK click, the system usually returns to the first page of the course list. Re-navigate to the target page before continuing if necessary.
- Check pagination. For the known BIT list UI, use
下页/上页 and verify each page reports zero remaining exact-text 评教 buttons.
- Finish only after all pages have
评教 count 0; summarize how many pages were checked if known.
Browser Notes
Prefer Playwright locators inside the iframe for form filling:
const fr = tab.playwright.frameLocator('iframe');
const radios = fr.locator('input[type="radio"]', {});
for (let i = 0; i < await radios.count(); i += 5) {
await radios.nth(i).check({});
}
const boxes = fr.locator('textarea, input[type="text"]', {});
if (await boxes.count()) await boxes.nth((await boxes.count()) - 1).fill('好', {});
await fr.locator('a', {}).filter({ hasText: '提交' }).click({});
await fr.locator('a', {}).filter({ hasText: 'OK' }).click({});
When normal text locators time out on this legacy page, use tab.dom_cua.get_visible_dom() and click the visible node with text 评教. Re-read the DOM after each submit because node IDs change.
Safety
Course evaluation submission is an external side effect. If the user has explicitly authorized submitting all evaluations in the conversation, proceed. Otherwise, fill forms but ask for confirmation before clicking 提交.