feat: implement configurable Xingbang risk agent on mini-openclaw core

This commit is contained in:
NathanAlex7
2026-09-08 01:08:34 +08:00
parent f2439ee5a3
commit 58fb2854dc
26 changed files with 1990 additions and 208 deletions
+53
View File
@@ -0,0 +1,53 @@
const { chromium } = require('C:/Users/666/.cache/codex-runtimes/codex-primary-runtime/dependencies/node/node_modules/playwright');
const assert = require('node:assert/strict');
const path = require('node:path');
(async () => {
const browser = await chromium.launch({headless:true});
const page = await browser.newPage({viewport:{width:1440,height:1000}});
const errors=[];
page.on('pageerror', e=>errors.push(e.message));
await page.goto('http://127.0.0.1:3012/data-access');
await page.getByRole('heading',{name:'多期财务报表',exact:true}).waitFor();
await page.screenshot({path:path.resolve('risk-agent-desktop.png'),fullPage:true});
assert(await page.evaluate(()=>document.documentElement.scrollWidth<=innerWidth));
await page.getByRole('button',{name:'项目风险自查',exact:true}).click();
await page.getByRole('button',{name:'开始风险自查',exact:true}).click();
await page.getByRole('heading',{name:'财务杠杆偏高',exact:true}).waitFor();
await page.screenshot({path:path.resolve('risk-agent-run.png'),fullPage:true});
await page.getByRole('button',{name:/Skills 能力库/}).click();
await page.getByRole('button',{name:'新建Skills 能力库',exact:true}).click();
const dialog=page.getByRole('dialog');
await dialog.getByLabel('名称',{exact:true}).fill('浏览器验证检查');
await dialog.getByRole('button',{name:'保存草稿',exact:true}).click();
await page.getByRole('heading',{name:'浏览器验证检查',exact:true}).waitFor();
const card=page.locator('article').filter({has:page.getByRole('heading',{name:'浏览器验证检查',exact:true})});
await card.getByRole('button',{name:'归档配置',exact:true}).click();
await page.getByRole('button',{name:'确认归档',exact:true}).click();
await page.getByRole('dialog').waitFor({state:'hidden'});
await page.getByRole('button',{name:/研判方案/}).first().click();
await page.locator('article').filter({has:page.getByRole('heading',{name:'对公项目提交前自查',exact:true})}).getByRole('button',{name:'配置',exact:true}).click();
assert(await page.getByRole('dialog').getByRole('checkbox').count()>5);
await page.getByRole('button',{name:'关闭编辑'}).click();
await page.getByRole('button',{name:/数据卡/}).first().click();
await page.locator('article').filter({has:page.getByRole('heading',{name:'多期财务报表',exact:true})}).getByRole('button',{name:'配置',exact:true}).click();
await page.getByRole('dialog').getByLabel('记录选择方式').selectOption('latest');
await page.getByRole('dialog').getByLabel('期间源字段(可选)').fill('period');
await page.screenshot({path:path.resolve('risk-agent-alignment.png'),fullPage:true});
await page.getByRole('button',{name:'关闭编辑'}).click();
await page.getByRole('button',{name:/规则集/}).first().click();
await page.locator('article').filter({has:page.getByRole('heading',{name:'对公项目提交前检查',exact:true})}).getByRole('button',{name:'配置',exact:true}).click();
await page.getByRole('dialog').getByLabel('人为自然语言规则').fill('结合现金流和负债变化给出有证据的建议。');
assert(await page.getByRole('dialog').getByLabel('检查名称').count()>0);
await page.screenshot({path:path.resolve('risk-agent-rules.png'),fullPage:true});
await page.getByRole('button',{name:'关闭编辑'}).click();
await page.getByRole('button',{name:'发布审核',exact:true}).click();
await page.getByRole('heading',{name:'发布审核',exact:true}).waitFor();
await page.setViewportSize({width:390,height:844});
await page.getByRole('button',{name:/数据卡/}).first().click();
await page.screenshot({path:path.resolve('risk-agent-mobile.png'),fullPage:true});
assert(await page.evaluate(()=>document.documentElement.scrollWidth<=innerWidth),'mobile overflow');
assert.deepEqual(errors,[]);
await browser.close();
console.log('Desktop/mobile, real execution, CRUD, plan checkboxes, alignment, natural rules and review page passed.');
})().catch(e=>{console.error(e);process.exit(1)});