기능구현중

This commit is contained in:
2026-01-11 13:47:33 +09:00
parent f5bf084afc
commit d56154d5d2
13 changed files with 948 additions and 46 deletions

View File

@@ -0,0 +1,82 @@
import { queryOne, execute, insertReturning } from '../../../utils/db'
import { requireAuth } from '../../../utils/session'
import { getClientIp } from '../../../utils/ip'
interface ConfirmBody {
selectedTodos?: Array<{
agendaNo: number
todoIndex: number
title: string
assignee?: string
}>
}
/**
* AI 분석 결과 확정 + TODO 생성
* POST /api/meeting/[id]/confirm
*/
export default defineEventHandler(async (event) => {
const employeeId = await requireAuth(event)
const meetingId = parseInt(event.context.params?.id || '0')
const body = await readBody<ConfirmBody>(event)
const ip = getClientIp(event)
if (!meetingId) {
throw createError({ statusCode: 400, message: '회의록 ID가 필요합니다.' })
}
// 회의록 조회
const meeting = await queryOne<any>(`
SELECT meeting_id, ai_summary, ai_status, project_id
FROM wr_meeting WHERE meeting_id = $1
`, [meetingId])
if (!meeting) {
throw createError({ statusCode: 404, message: '회의록을 찾을 수 없습니다.' })
}
if (!meeting.ai_summary) {
throw createError({ statusCode: 400, message: 'AI 분석 결과가 없습니다.' })
}
const aiResult = typeof meeting.ai_summary === 'string'
? JSON.parse(meeting.ai_summary)
: meeting.ai_summary
// 선택된 TODO 생성
const createdTodos: any[] = []
if (body.selectedTodos && body.selectedTodos.length > 0) {
for (const todo of body.selectedTodos) {
const inserted = await insertReturning(`
INSERT INTO wr_todo (
source_type, meeting_id, project_id,
todo_title, todo_description, todo_status,
author_id, created_at, created_ip
) VALUES ('MEETING', $1, $2, $3, $4, 'PENDING', $5, NOW(), $6)
RETURNING todo_id
`, [
meetingId,
meeting.project_id,
todo.title,
`안건 ${todo.agendaNo}에서 추출`,
employeeId,
ip
])
createdTodos.push({ todoId: inserted.todo_id, title: todo.title })
}
}
// 상태 업데이트
await execute(`
UPDATE wr_meeting
SET ai_status = 'CONFIRMED', ai_confirmed_at = NOW()
WHERE meeting_id = $1
`, [meetingId])
return {
success: true,
message: `확정 완료. ${createdTodos.length}개의 TODO가 생성되었습니다.`,
createdTodos
}
})