import assert from 'node:assert/strict' import { planPipeModels } from '../../../src/modules/cockpit/domain/pipeModels.js' import { toPipeNetwork } from '../../../src/modules/cockpit/domain/pipeNetwork.js' const pipe=(industry,remark,diameter=100)=>({code:industry+remark,industry,remark,diameter,positions:[[110.39,28.44],[110.3901,28.44]]}) const input=[pipe('GAS',''),pipe('WATER_SUPPLY',''),pipe('DRAINAGE','污水'),{...pipe('DRAINAGE','雨水'),networkLevel:1}] const plan=planPipeModels({pipes:input,components:[]}) assert.deepEqual(plan.instances.map(row=>row.colorKey),['GAS','WATER_SUPPLY','SEWAGE','RAINWATER']) assert.ok(plan.instances.every(row=>row.displayDiameterM>=1.5),'all narrow real diameters need legible demonstration thickness') assert.ok(plan.instances.every(row=>row.diameterM===.1),'source diameter is NOT visual size') assert.ok(plan.instances.every(row=>row.displayDiameterM<=3),'entire body stays beneath terrain at 2m centre depth') const payload={features:[{geometry:{type:'LineString',coordinates:[[110.39,28.44],[110.3901,28.44]]},properties:{code:'remark-wins',industry:'DRAINAGE',name:'雨水管',remark:'污水',diameter:400,coordinateValidation:{renderable:true}}}]} const adapted=toPipeNetwork(payload) assert.equal(adapted.pipes[0].remark,'污水') assert.equal(planPipeModels(adapted).instances[0].colorKey,'SEWAGE','missing level defaults to sewage regardless of remark/name') assert.equal(planPipeModels({pipes:[{...pipe('DRAINAGE','雨水 污水'),networkLevel:2}],components:[]}).instances[0].colorKey,'DRAINAGE_UNKNOWN') assert.equal(planPipeModels({pipes:[{...pipe('DRAINAGE',''),name:'雨水管'}],components:[]}).instances[0].colorKey,'SEWAGE','missing level uses zero, never infer rain from name') console.log('PASS five-class semantics from network level, invalid unknown, source diameter separate from display')