feat: restore learning feedback and knowledge capabilities

This commit is contained in:
2026-07-18 00:50:11 +08:00
parent 876a23a123
commit 6bdc86e3fc
152 changed files with 30337 additions and 953 deletions
+25 -3
View File
@@ -168,6 +168,28 @@ test('主管页面共享三个业务场景及文本推荐规则', () => {
assert.equal(inferSupervisorScenarioId('催缴物业费'), 'fee-parking');
});
test('专项派发使用后端批量接口并保留逐人结果和截止日期', () => {
assert.match(assignPageSource, /selectedMemberIds/);
assert.match(assignPageSource, /targets: selectedMembers\.map/);
assert.match(assignPageSource, /requestId: pendingRequestId\.value/);
assert.match(assignPageSource, /dueDate: dueDate\.value/);
assert.match(assignPageSource, /batchResultItems\.value = result\.results/);
assert.match(assignPageSource, /item\.status !== 'FAILED'/);
assert.match(assignPageSource, /const maxAssignmentTargets = 100/);
assert.match(assignPageSource, /persistPendingBatchDraft/);
assert.match(assignPageSource, /restorePendingBatchDraft/);
assert.match(assignPageSource, /const isPendingBatchDraft = \(value: unknown\)/);
assert.match(assignPageSource, /draft\.selectedMemberIds\.every/);
assert.match(assignPageSource, /pendingMatchesDeepLink/);
assert.match(assignPageSource, /pendingDraft && \(!hasExplicitDraft \|\| pendingMatchesDeepLink\)/);
assert.match(assignPageSource, /const assignmentDeepLink =/);
assert.match(assignPageSource, /rememberLoginRedirect\(loginRedirectPath\.value\)/);
assert.match(assignPageSource, /loginRedirectPath\.value = assignmentDeepLink\(requestedExtPartyId, requestedReason, requestedScenario\)/);
assert.match(practiceServiceSource, /createPracticeAssignmentsBatch/);
assert.match(practiceServiceSource, /\/practice\/assignments\/batch/);
assert.doesNotMatch(assignPageSource, /for \([\s\S]*createPracticeAssignment/);
});
test('stable 提示不计入团队预警指标', () => {
const alerts = [
alert({ type: 'stable', title: '团队状态稳定', desc: '当前无新增风险', severity: 'low' }),
@@ -291,11 +313,11 @@ test('复盘音频晚到结果被释放且不会写入页面状态', () => {
assert.match(reviewPageSource, /audioRequests\.dispose\(\)/);
});
test('指派页登录失效清空私密状态且登录跳转不携带草稿', () => {
test('指派页登录失效清空私密状态但保留明确深链任务', () => {
assert.match(assignPageSource, /const clearPrivateState = \(\) => \{[\s\S]*resetDraft\(\);[\s\S]*assignments\.value = \[\]/);
assert.match(assignPageSource, /if \(!loggedIn\.value\) return '选择员工并配置训练任务'/);
assert.match(assignPageSource, /rememberLoginRedirect\(basePath\);\s*uni\.redirectTo/);
assert.doesNotMatch(assignPageSource, /const loginRedirect =/);
assert.match(assignPageSource, /rememberLoginRedirect\(loginRedirectPath\.value\);\s*uni\.redirectTo/);
assert.match(assignPageSource, /const loginRedirectPath = ref\(basePath\)/);
});
test('指派中锁定返回和刷新,写入成功后强制启动新历史读取', () => {