| 1234567891011121314151617181920212223242526272829 |
- import {test} from 'node:test';
- import assert from 'node:assert/strict';
- import vm from 'node:vm';
- import {readFileSync} from 'node:fs';
- const context=vm.createContext({Date,text:v=>String(v??'').trim()});
- vm.runInContext(readFileSync(new URL('../cloud/payroll-integrity.js',import.meta.url),'utf8'),context);
- const row={studentId:'20',startsAt:'2026-09-09 20:00',studentName:'同学',grade:'',nickname:'同学'};
- const decide=(r,prior=[])=>context.writingStageAssessment({...row,...r},prior,'2026-10-12');
- test('明确年级和姓名标注可判断,数字年级不会误判十一年级为一年级',()=>{
- for(const [value,category] of [['小学五年级','primary_writing'],['7年级','middle_writing'],['初三','middle_writing'],['某同学高中','high_writing'],['某同学高三','high_writing'],['十一年级','high_writing'],['10年级','high_writing']]){
- const result=decide({nickname:value});assert.equal(result.canAutoConfirm,true);assert.equal(result.suggestedCategoryKey,category);assert.ok(result.evidence.includes(value));
- }
- });
- test('空年级仍能读取旧档案,城市学校名称和不确定描述不能推断学段',()=>{
- assert.equal(decide({grade:'',position:'初中八年级'}).suggestedCategoryKey,'middle_writing');
- for(const name of ['某同学丰城','小同学','某同学高安中学','可能高中','初中?'])assert.equal(decide({nickname:name}).canAutoConfirm,false);
- });
- test('同学年已确认预约可复用,其他学员和跨学年证据不会串用',()=>{
- const prior={studentId:'20',startsAt:'2026-09-02 19:00',category:'middle_writing',evidence:'人工确认初中',appointmentGeneralId:123};
- assert.equal(decide({},[prior]).suggestedCategoryKey,'middle_writing');
- assert.equal(decide({},[{...prior,studentId:'21'}]).canAutoConfirm,false);
- assert.equal(decide({},[{...prior,startsAt:'2025-09-02 19:00'}]).canAutoConfirm,false);
- assert.equal(decide({startsAt:'2027-09-02 19:00',grade:'初中'}).canAutoConfirm,false);
- });
- test('档案、姓名或既往确认冲突时保留人工核对,日期无效不自动确认',()=>{
- for(const r of [{grade:'初中',nickname:'某同学高中'},{grade:'小学/初中'},{startsAt:'2026-02-30 19:00',grade:'高中'}])assert.equal(decide(r).canAutoConfirm,false);
- const conflicting=[{studentId:'20',startsAt:'2026-09-02',category:'middle_writing',evidence:'人工确认',appointmentGeneralId:1},{studentId:'20',startsAt:'2026-09-03',category:'high_writing',evidence:'人工确认',appointmentGeneralId:2}];
- const result=decide({},conflicting);assert.equal(result.canAutoConfirm,false);assert.match(result.assessmentReason,/冲突/);assert.equal(result.suggestedCategoryKey,'');
- });
|