inspect-workshop-data.mjs 1.6 KB

123456789101112131415
  1. import fs from 'node:fs';
  2. import {request} from '../server/scripts/platform-client.mjs';
  3. const schemas=(await request('GET','/schemas')).results;
  4. const names=schemas.map(x=>x.className).filter(x=>/user|agent|employee|session|member/i.test(x));
  5. const inspect=['_User','KfSession','KfArtifact','KfProject','KfOpportunity'];
  6. const rows=await Promise.allSettled(inspect.map(async className=>{
  7. const schema=schemas.find(x=>x.className===className);
  8. const keys=['objectId','username','name','nickname','displayName','studentName','ownerName','ownerSession','uploadedBy','uploadedByKey','agentId','agentName','sourceSession','uploadMethod','uploadedAt','stage','stageCode','projectId','projectRef','sessionRef','userRef','groupId','workshopKey','externalKey','dataMode','reportType','artifactType','meta'].filter(x=>schema?.fields[x]);
  9. const result=await request('GET','/classes/'+className+'?'+new URLSearchParams({keys:keys.join(','),limit:'1000'}));
  10. const safe=(result.results||[]).map(({meta,...x})=>({...x,...(meta?.attribution?{attribution:meta.attribution}:{})}));
  11. return{className,fields:Object.keys(schema?.fields||{}),returnedRows:safe.length,examples:safe.slice(0,className==='_User'?20:4),agents:[...new Set(safe.map(x=>x.agentName).filter(Boolean))],owners:[...new Set(safe.map(x=>x.ownerName||x.studentName).filter(Boolean))]};
  12. }));
  13. const out={at:new Date().toISOString(),businessWrites:0,identityRelatedClasses:names,classes:rows.map((r,i)=>r.status==='fulfilled'?r.value:{className:inspect[i],error:'READ_FAILED'})};
  14. fs.mkdirSync('work',{recursive:true});fs.writeFileSync('work/workshop-data-before.json',JSON.stringify(out,null,2));
  15. console.log(JSON.stringify(out,null,2));