import { NextRequest, NextResponse } from 'next/server' import { getDb } from '@/lib/db' import { initDatabase } from '@/lib/db-schema' import { getCurrentUser } from '@/lib/auth' import { hasPermission } from '@/lib/permissions' import { generateMonthlyReport } from '@/lib/monthly-report' import { generateWeeklyReport } from '@/lib/weekly-report' export async function POST( _request: NextRequest, { params }: { params: Promise<{ id: string }> } ) { try { initDatabase() const user = await getCurrentUser() if (!user) return NextResponse.json({ error: '未登录' }, { status: 401 }) if (!hasPermission(user, 'reports:create')) { return NextResponse.json({ error: '权限不足' }, { status: 403 }) } const { id } = await params const db = getDb() const report = db.prepare('SELECT * FROM reports WHERE id = ?').get(id) as any if (!report) { return NextResponse.json({ error: '报告不存在' }, { status: 404 }) } if (report.status !== 'ready' && report.status !== 'failed') { return NextResponse.json( { error: `当前状态 "${report.status}" 不允许生成文档` }, { status: 409 } ) } db.prepare("UPDATE reports SET status = 'generating', error_message = NULL WHERE id = ?") .run(id) if (report.report_type === 'weekly') { generateWeeklyReport(Number(id)).catch(err => { console.error(`Weekly report generation failed for report ${id}:`, err) }) } else { generateMonthlyReport(Number(id)).catch(err => { console.error(`Report generation failed for report ${id}:`, err) }) } const updated = db.prepare('SELECT * FROM reports WHERE id = ?').get(id) return NextResponse.json({ report: updated }) } catch (e) { const msg = e instanceof Error ? e.message : '生成失败' return NextResponse.json({ error: msg }, { status: 500 }) } }