<?php
declare(strict_types=1);date_default_timezone_set('Asia/Shanghai');require __DIR__.'/oracle.php';require __DIR__.'/cases.php';$db=smPdo();$sha=catSha();catActor($db);$runtime=getenv('SM7_RUNTIME');if(is_file($runtime.'/card-green-spec-private.json')){throw new RuntimeException('Card green first-request guard');}
define('APP_PATH',getenv('SM7_ROOT').'/application/');require APP_PATH.'base/Security.php';$actor=smLoad('actor-private.json');$token=\app\base\Security::encrypt(implode("\t",[(string)$actor['id'],$actor['uuid'],$actor['marker'],'0','','',$actor['marker']]));$items=[];$spec=[];
foreach(n7Cases(smLoad('candidates-private.json')['candidates']) as $case){if(!in_array($case['name'],['CARDS_1','LOGS_1'],true)){continue;}$proof=n7Snapshot($db,$case);$body=[];foreach($case['params'] as $key=>$value){$body[]=['key'=>$key,'value'=>(string)$value,'type'=>'text'];}$expected=json_encode($proof['body'],JSON_UNESCAPED_UNICODE|JSON_THROW_ON_ERROR);
 $items[]=['id'=>'catalog7-green-'.$case['name'],'name'=>$case['name'],'type'=>'http','metaInfo'=>['type'=>'HTTP'],'request'=>['method'=>'POST','url'=>getenv('SM7_BASE').$case['path'],'header'=>[['key'=>'token','value'=>$token],['key'=>'Content-Type','value'=>'application/x-www-form-urlencoded'],['key'=>'X-Pilot-Scenario','value'=>'PILOT_CAT7_CARD_GREEN_'.$case['name']]],'body'=>['mode'=>'urlencoded','urlencoded'=>$body]],'event'=>[['listen'=>'test','script'=>['type'=>'text/javascript','exec'=>["pm.test('HTTP 200',()=>pm.response.to.have.status(200));",'const expected='.$expected.';',"pm.test('independent full card source contract',()=>pm.expect(pm.response.json()).to.deep.equal(expected));"]]]]];$spec[]=$case+['before'=>$proof];
}
if(count($spec)!==2){throw new RuntimeException('Two necessary card green cases missing');}smSave('card-green-spec-private.json',$spec);smSave('card-green-collection-private.json',['apifoxCli'=>'2.2.8','info'=>['name'=>'Only two necessary card contract regressions'],'item'=>[['name'=>'Readonly real card positive cases','item'=>$items]]]);echo json_encode(['lane'=>getenv('SM7_LANE'),'prepared_cases'=>2,'business_dml_ddl'=>0]),PHP_EOL;
