_extract_linkage_ddl.mjs 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. import fs from "fs";
  2. const transcriptPath =
  3. "C:/Users/15850/.cursor/projects/d-DEMONET/agent-transcripts/b932712b-5542-4604-92f5-cfdf726de39a/b932712b-5542-4604-92f5-cfdf726de39a.jsonl";
  4. const base = "d:/DEMONET/doc/migrations/";
  5. const raw = fs.readFileSync(transcriptPath, "utf8");
  6. const line = raw.split(/\r?\n/).find((l) => l.startsWith('{"role":"user"') && l.includes("WorkOrdDetail"));
  7. if (!line) {
  8. console.error("transcript line not found");
  9. process.exit(1);
  10. }
  11. const o = JSON.parse(line);
  12. let c = o.message.content[0].text;
  13. c = c.replace(/^<user_query>\n/, "").replace(/\n<\/user_query>$/, "");
  14. const i1 = c.indexOf("CREATE TABLE `aidopdev`.`WorkOrdDetail`");
  15. const i2 = c.indexOf("CREATE PROCEDURE `aidopdev`.`pr_Mes_LinkagePlan`");
  16. if (i1 < 0 || i2 < 0) {
  17. console.error("markers", i1, i2);
  18. process.exit(1);
  19. }
  20. let workordSql = c.slice(i1, i2).trim();
  21. const rest = c.slice(i2).trim();
  22. const iv = rest.indexOf("CREATE ALGORITHM");
  23. const procSql = iv > 0 ? rest.slice(0, iv).trim() : rest;
  24. const viewSql = iv > 0 ? rest.slice(iv).trim() : "";
  25. workordSql = workordSql.replace(/`aidopdev`\./g, "");
  26. function addPkToTable(sql, tableName) {
  27. const marker = `CREATE TABLE \`${tableName}\``;
  28. const start = sql.indexOf(marker);
  29. if (start < 0) return sql;
  30. const nextCreate = sql.indexOf("CREATE TABLE `", start + marker.length);
  31. const end = nextCreate < 0 ? sql.length : nextCreate;
  32. let block = sql.slice(start, end);
  33. if (block.includes("PRIMARY KEY")) return sql;
  34. const closeIdx = block.lastIndexOf("\n);");
  35. if (closeIdx < 0) return sql;
  36. block = block.slice(0, closeIdx) + ",\n PRIMARY KEY (`RecID`)" + block.slice(closeIdx);
  37. return sql.slice(0, start) + block + sql.slice(end);
  38. }
  39. for (const t of ["WorkOrdDetail", "WorkOrdMaster", "WorkOrdRouting", "WorkOrdSetupTimeRecord"]) {
  40. workordSql = addPkToTable(workordSql, t);
  41. }
  42. const part4b =
  43. `SET NAMES utf8mb4;\n` +
  44. `SET FOREIGN_KEY_CHECKS=0;\n` +
  45. `DROP TABLE IF EXISTS \`WorkOrdRouting\`;\n` +
  46. `DROP TABLE IF EXISTS \`WorkOrdDetail\`;\n` +
  47. `DROP TABLE IF EXISTS \`WorkOrdMaster\`;\n` +
  48. `DROP TABLE IF EXISTS \`WorkOrdSetupTimeRecord\`;\n` +
  49. workordSql +
  50. `\nSET FOREIGN_KEY_CHECKS=1;\n`;
  51. fs.writeFileSync(base + "2026-04-17_aidopdev_linkage_ddl_part4b_workord.sql", part4b, "utf8");
  52. const procBody = procSql.replace(/\s*;\s*$/, "");
  53. const procFile = `DELIMITER //\nDROP PROCEDURE IF EXISTS \`pr_Mes_LinkagePlan\`//\n${procBody}//\nDELIMITER ;\n`;
  54. fs.writeFileSync(base + "2026-04-17_aidopdev_linkage_ddl_part6_procedure.sql", procFile, "utf8");
  55. fs.writeFileSync(base + "_extracted_view_raw.txt", viewSql, "utf8");
  56. console.log("ok workord", workordSql.length, "proc", procSql.length);