/* Metadata shared by the service editor and the public service introduction. */ window.ServiceProfile={ types:[['service','服务'],['software','软件'],['software-service','软件 / 服务']], icons:[['digital-human','AI数字人'],['enterprise','企业服务'],['interactive','软件与互动'],['space','空间体验'],['science','技术与科普'],['education','培训与教育'],['travel','文旅体验']], website(value){ if(typeof value!=='string'||!value.trim()||value.length>2048)return null; try{const url=new URL(value.trim());return ['https:','http:'].includes(url.protocol)&&!url.username&&!url.password?url:null}catch{return null} }, thumbnailId(item){const id=item.attributes?.service_thumbnail_asset_id;return typeof id==='string'&&/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(id)?id:item.cover_asset_id||null}, type(item){return this.types.find(([key])=>key===item.attributes?.service_type)?.[1]||'服务'}, icon(item){const key=item.attributes?.service_icon;return this.icons.some(([known])=>known===key)?key:['software','software-service'].includes(item.attributes?.service_type)?'interactive':'enterprise'} };