Files
ai_platform/scripts/test-ax-insert.js

65 lines
2.5 KiB
JavaScript

#!/usr/bin/env node
/**
* ax_assignments INSERT 직접 테스트 (배열 SQL 리터럴 방식)
*/
require("dotenv").config({ path: require("path").join(__dirname, "..", ".env") });
const { Pool } = require("pg");
const { v4: uuidv4 } = require("uuid");
const pool = new Pool({
host: process.env.DB_HOST,
port: Number(process.env.DB_PORT || 5432),
database: process.env.DB_DATABASE,
user: process.env.DB_USERNAME,
password: process.env.DB_PASSWORD,
});
async function main() {
const id = uuidv4();
const now = new Date();
const toArrayLiteralSafe = (v) => {
if (v === "" || typeof v === "string" || v == null) return "'{}'";
const arr = Array.isArray(v) ? v.filter((x) => typeof x === "string") : [];
if (arr.length === 0) return "'{}'";
const escaped = arr.map((s) => `"${String(s).replace(/\\/g, "\\\\").replace(/"/g, '\\"')}"`);
return `'{${escaped.join(",")}}'`;
};
const dataTypesLit = "'{}'";
const qualitativeLit = "'{}'";
const techStackLit = "'{}'";
const risksLit = "'{}'";
const sql = `INSERT INTO ax_assignments (
id, department, name, employee_id, position, phone, email,
work_process_description, pain_point, current_time_spent, error_rate_before,
collaboration_depts, reason_to_solve, ai_expectation, output_type, automation_level,
data_readiness, data_location, personal_info, data_quality, data_count, data_types,
time_reduction, error_reduction, volume_increase, cost_reduction, response_time,
other_metrics, annual_savings, labor_replacement, revenue_increase, other_effects,
qualitative_effects, tech_stack, risks, risk_detail, participation_pledge, status,
created_at, updated_at
) VALUES (
$1::uuid, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16,
$17, $18, $19, $20, $21, ${dataTypesLit}::text[], $22, $23, $24, $25, $26, $27, $28, $29, $30,
$31, ${qualitativeLit}::text[], ${techStackLit}::text[], ${risksLit}::text[], $32, $33, $34, $35, $36
)`;
const params = [
... [id, "테스트부서", "홍길동", "", "", "", "", "테스트", "테스트", "30분", "5%", "", "테스트", "테스트", "테스트", "", "", "", "", "", "" ],
... [ "", "", "", "", "", "", "", "", "", "" ],
... [ "", false, "신청", now, now ],
];
console.log("SQL preview:", sql.substring(200, 400));
const res = await pool.query(sql, params);
console.log("OK, inserted:", id);
await pool.end();
}
main().catch((e) => {
console.error("Error:", e.message);
process.exit(1);
});