<?php
require __DIR__.'/oracle.php';$pre=json_decode(file_get_contents(__DIR__.'/private-preflight.json'),true);$check($pre['safe'],'Preflight first');$state=$source();$pageSize=$pre['pagesize'];$spec=[['label'=>'page1','method'=>'lists','params'=>['staff_uuid'=>$scope['staff_uuid'],'page'=>1]],['label'=>'page2','method'=>'lists','params'=>['staff_uuid'=>$scope['staff_uuid'],'page'=>2]],['label'=>'missing_staff','method'=>'lists','params'=>[]],['label'=>'missing_uuid','method'=>'info','params'=>[]]];
if($state['rows'])$spec[]=['label'=>'source_info','method'=>'info','params'=>['uuid'=>$state['rows'][0]['uuid']]];else{$absent='CD000000-0000-4000-8000-'.strtoupper(bin2hex(random_bytes(6)));$check((int)$q('SELECT COUNT(*) AS CNT FROM '.$p.'syllabus_evaluate WHERE UUID=?',[$absent])[0]['cnt']===0,'Absent UUID proven');$spec[]=['label'=>'absent_info','method'=>'info','params'=>['uuid'=>$absent]];}$save('private-spec.json',$spec);
$lock=[];foreach(['p/controller/SyllabusEvaluate.php','p/logic/SyllabusEvaluate.php','model/SyllabusEvaluate.php','model/SyllabusEvaluateExt.php','model/Staff.php','model/UserData.php','model/RoleData.php','model/SyncFeimao.php','model/BaseModel.php','validate/SyllabusEvaluate.php','base/AdminController.php','common.php']as $file)$lock[$file]=hash_file('sha256',__DIR__.'/source/application/'.$file);$save('private-source-lock.json',$lock);
require_once $root.'/application/base/Security.php';$a=$actor;$token=\app\base\Security::encrypt(implode("\t",[(string)$a['id'],(string)$a['uuid'],(string)$a['account'],'0','','',(string)$a['account']]));$items=[];
foreach($spec as $s){$list=in_array($s['label'],['page1','page2'],true);if($list)$expected=['code'=>0,'message'=>'获取数据成功','data'=>['rows'=>array_map($listProjection,array_slice($state['rows'],((int)$s['params']['page']-1)*$pageSize,$pageSize)),'content'=>$state['ext']?$state['ext'][0]['content']:'','total'=>count($state['rows'])]];elseif($s['label']==='source_info')$expected=['code'=>0,'message'=>'查询成功','data'=>$state['rows'][0]];else $expected=['code'=>1,'message'=>['missing_staff'=>'组织人员不可为空','missing_uuid'=>'参数错误','absent_info'=>'大纲考核纪要不存在'][$s['label']]];
$items[]=['id'=>$s['label'],'name'=>$s['label'],'type'=>'http','metaInfo'=>['type'=>'HTTP'],'request'=>['method'=>'POST','header'=>[['key'=>'X-CDX-Case','value'=>$s['label']],['key'=>'token','value'=>$token],['key'=>'Content-Type','value'=>'application/x-www-form-urlencoded']],'url'=>'http://127.0.0.1:'.($lane==='B'?18321:18322).'/p/syllabusEvaluate/'.$s['method'],'body'=>['mode'=>'urlencoded','urlencoded'=>array_map(static function($k,$v){return ['key'=>$k,'value'=>(string)$v,'type'=>'text'];},array_keys($s['params']),array_values($s['params']))]],'event'=>[['listen'=>'test','script'=>['type'=>'text/javascript','exec'=>["pm.test('HTTP200',()=>pm.response.to.have.status(200));","const b=pm.response.json();","pm.test('business status',()=>pm.expect(b.code).to.eql(".$expected['code']."));","pm.test('complete body values shapes types and count',()=>pm.expect(b).to.deep.eql(".json_encode($expected,JSON_UNESCAPED_UNICODE)."));"]]]]];}
$save('private-suite.json',['apifoxCli'=>'2.2.8','info'=>['name'=>'SyllabusEvaluate '.$lane],'item'=>[['name'=>'Natural bounded read and rejection','item'=>$items]]]);echo json_encode(['lane'=>$lane,'cases'=>count($spec),'rows'=>count($state['rows']),'ext'=>count($state['ext']),'pagesize'=>$pageSize,'source_sha256'=>$hash($state),'source_lock'=>$lock]),"\n";
