feat: AIHR 智能人力资源管理系统初始提交
- 员工花名册管理(加密存储、导入导出) - 薪酬管理(发薪批次、薪酬模版、加班费计算、工资条) - 社保公积金(多城市配置、版本管理、基数调整) - 解聘管理(6步流程、证据链、工作交接) - AI 助手(合同审查、风险预测、RAG 知识库) - Dashboard 仪表盘 - 设置与通知
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
import express from 'express'
|
||||
import cors from 'cors'
|
||||
import helmet from 'helmet'
|
||||
import morgan from 'morgan'
|
||||
import compression from 'compression'
|
||||
import { errorHandler } from './middleware/errorHandler'
|
||||
import { apiLimiter } from './middleware/rateLimit'
|
||||
|
||||
const app = express()
|
||||
|
||||
app.use(helmet())
|
||||
app.use(compression())
|
||||
app.use(
|
||||
cors({
|
||||
origin: process.env.CORS_ORIGIN || 'http://localhost:5173',
|
||||
credentials: true,
|
||||
}),
|
||||
)
|
||||
app.use(express.json())
|
||||
app.use(morgan('dev'))
|
||||
|
||||
app.get('/health', (_req, res) => {
|
||||
res.json({ success: true, data: { status: 'ok', timestamp: new Date().toISOString() } })
|
||||
})
|
||||
|
||||
app.use('/api/v1', apiLimiter)
|
||||
|
||||
// 路由挂载
|
||||
import authRoutes from './routes/auth.routes'
|
||||
import dashboardRoutes from './routes/dashboard.routes'
|
||||
import employeeRoutes from './routes/employee.routes'
|
||||
import terminationRoutes from './routes/termination.routes'
|
||||
import aiRoutes from './routes/ai.routes'
|
||||
import portalRoutes from './routes/portal.routes'
|
||||
import settingsRoutes from './routes/settings.routes'
|
||||
import payrollRoutes from './routes/payroll.routes'
|
||||
import payroll2Routes from './routes/payroll2.routes'
|
||||
import socialRoutes from './routes/social.routes'
|
||||
import notificationRoutes from './routes/notification.routes'
|
||||
import attachmentRoutes from './routes/attachment.routes'
|
||||
import rosterRoutes from './routes/roster.routes'
|
||||
import exportRoutes from './routes/export.routes'
|
||||
import importRoutes from './routes/import.routes'
|
||||
app.use('/api/v1/auth', authRoutes)
|
||||
app.use('/api/v1/dashboard', dashboardRoutes)
|
||||
app.use('/api/v1/employees', employeeRoutes)
|
||||
app.use('/api/v1/termination', terminationRoutes)
|
||||
app.use('/api/v1/ai', aiRoutes)
|
||||
app.use('/api/v1/portal', portalRoutes)
|
||||
app.use('/api/v1/settings', settingsRoutes)
|
||||
app.use('/api/v1/payroll', payrollRoutes)
|
||||
app.use('/api/v1/payroll2', payroll2Routes)
|
||||
app.use('/api/v1/social', socialRoutes)
|
||||
app.use('/api/v1/notifications', notificationRoutes)
|
||||
app.use('/api/v1/attachments', attachmentRoutes)
|
||||
app.use('/api/v1/roster', rosterRoutes)
|
||||
app.use('/api/v1/export', exportRoutes)
|
||||
app.use('/api/v1/import', importRoutes)
|
||||
|
||||
app.use(errorHandler)
|
||||
|
||||
// RAG 知识库自动初始化(异步,不阻塞启动)
|
||||
import { seedKnowledgeBase } from './services/rag.service'
|
||||
seedKnowledgeBase().catch((err) => {
|
||||
console.warn('[RAG] 知识库初始化失败,AI 问答将不使用 RAG 检索:', err?.message || err)
|
||||
})
|
||||
|
||||
export default app
|
||||
Reference in New Issue
Block a user