refactor: API 请求整合与 Bug 修复
前端重构: - 新增 api/ 目录统一管理所有 API 请求 - 所有 stores 和 pages 改为使用 api 模块 - 修复日期格式化函数,支持 Date 对象和 ISO 字符串 - 修复 TransactionItem 使用 CategoryIcon 组件 - 优化 ChartWrapper 区分 H5 和小程序环境 后端修复: - 修复 auth 中间件 PUBLIC_PATHS 缺少 demo-login - 修复备份工具命令注入漏洞,改用 execFile - 修复 stats 路由 type 参数验证 - 优化分类排序为批量 SQL 更新 - 合并迁移和删除为数据库事务原子操作 - 修复交易和统计日期返回格式 - 新增自动备份功能(启动时备份)
This commit is contained in:
@@ -10,6 +10,8 @@ import transactionRoutes from './routes/transaction'
|
||||
import statsRoutes from './routes/stats'
|
||||
import budgetRoutes from './routes/budget'
|
||||
import categoryRoutes from './routes/category'
|
||||
import backupRoutes from './routes/backup'
|
||||
import { backupDatabase } from './utils/backup'
|
||||
|
||||
// Warn if token secret is using default fallback
|
||||
if (!process.env.TOKEN_SECRET) {
|
||||
@@ -59,6 +61,7 @@ app.use('/api/transactions', apiLimiter, transactionRoutes)
|
||||
app.use('/api/stats', apiLimiter, statsRoutes)
|
||||
app.use('/api/budget', apiLimiter, budgetRoutes)
|
||||
app.use('/api/categories', apiLimiter, categoryRoutes)
|
||||
app.use('/api/backup', apiLimiter, backupRoutes)
|
||||
|
||||
app.get('/api/health', async (_req, res) => {
|
||||
try {
|
||||
@@ -71,7 +74,15 @@ app.get('/api/health', async (_req, res) => {
|
||||
|
||||
let server: any
|
||||
|
||||
initDatabase().then(() => {
|
||||
initDatabase().then(async () => {
|
||||
// 每次启动时自动备份数据库
|
||||
try {
|
||||
await backupDatabase()
|
||||
console.log('[Backup] 启动备份完成')
|
||||
} catch (err) {
|
||||
console.error('[Backup] 启动备份失败:', err)
|
||||
}
|
||||
|
||||
server = app.listen(PORT, () => {
|
||||
console.log(`Server running on port ${PORT}`)
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user