import { Router } from 'express' import { authMiddleware, AuthRequest } from '../middleware/auth' import { auditLog } from '../middleware/auditLog' import { terminationChecklistSchema } from '../schemas/termination.schema' import { createTermination, getTerminations, getChecklistForReason, assessRisk, calculateCompensation } from '../services/termination.service' import prisma from '../lib/prisma' import { decrypt } from '../lib/crypto' const router = Router() router.get('/', authMiddleware, async (req: AuthRequest, res, next) => { try { const page = parseInt(req.query.page as string) || 1 const pageSize = parseInt(req.query.pageSize as string) || 20 const result = await getTerminations(req.user!.orgId, page, pageSize) res.json({ success: true, data: result }) } catch (err) { next(err) } }) router.get('/checklist/:reason', authMiddleware, (req: AuthRequest, res) => { const checklist = getChecklistForReason(req.params.reason) res.json({ success: true, data: checklist }) }) router.get('/assess/:employeeId', authMiddleware, async (req: AuthRequest, res, next) => { try { const employee = await prisma.employee.findFirst({ where: { id: req.params.employeeId, orgId: req.user!.orgId } }) if (!employee) { return res.status(404).json({ success: false, error: { code: 'NOT_FOUND', message: '员工不存在' } }) } const assessment = assessRisk(employee, req.query.reason as string || '') res.json({ success: true, data: assessment }) } catch (err) { next(err) } }) router.post('/', authMiddleware, async (req: AuthRequest, res, next) => { try { const data = terminationChecklistSchema.parse(req.body) const result = await createTermination(req.user!.orgId, req.user!.id, data) await auditLog(req, 'TERMINATE', 'EMPLOYEE', data.employeeId, { reason: data.reason }) res.json({ success: true, data: result }) } catch (err) { next(err) } }) export default router