const Database = require('better-sqlite3'); const db = new Database('data/ai-review.db'); // Replicate parseDimensions function parseDimensions(md) { const dims = []; const re = /##\s+(.+?)((\d+)[分%])\s*([\s\S]*?)(?=\n##\s|\n*$)/g; let match; while ((match = re.exec(md)) !== null) { dims.push({ name: match[1].trim(), maxScore: parseInt(match[2], 10) }); } return dims; } const std = db.prepare("SELECT * FROM standards WHERE name LIKE '%赛道一%'").get(); const dims = parseDimensions(std.content); console.log('Content length:', std.content.length); console.log('Dimensions found:', dims.length); console.log('Total:', dims.reduce((s, d) => s + d.maxScore, 0)); // Try the exact operations from the route handler try { const dims2 = parseDimensions(std.content); const passLine = Math.round(dims2.reduce((s, d) => s + d.maxScore, 0) * 0.6); console.log('passLine:', passLine); } catch(e) { console.log('ERROR:', e.message); } // Try creating an entry manually const id = require('crypto').randomUUID(); try { db.prepare(`INSERT INTO entries (id, project_id, standard_id, title, repo_url, category_tag, participant, pass_line, standard_snapshot, branch) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`).run( id, 'b1b5884e-ba85-4d8f-9a92-e524603587a0', std.id, 'Test', 'file://D:\\Projects\\kagedoku', '赛道一', '', passLine, JSON.stringify(dims2), '' ); console.log('Insert OK:', id); db.prepare('DELETE FROM entries WHERE id = ?').run(id); } catch(e) { console.log('INSERT ERROR:', e.message); } db.close();