Files
billai/server/router/router.go
clz 642ea2d3ef
Some checks are pending
Deploy BillAI / Deploy to Production (push) Waiting to run
fix: 修复账单删除功能并支持分析页面删除操作
- 将删除接口从 DELETE /api/bills/:id 改为 POST /api/bills/:id/delete 以兼容 SvelteKit 代理
- 分析页面组件 (TopExpenses/BillRecordsTable/DailyTrendChart) 支持删除并同步更新统计数据
- Review 接口改为直接查询 MongoDB 而非读取文件
- 软删除时记录 updated_at 时间戳
- 添加 .dockerignore 文件优化构建
- 完善 AGENTS.md 文档
2026-02-16 22:28:49 +08:00

79 lines
1.6 KiB
Go

// Package router 路由配置
package router
import (
"net/http"
"github.com/gin-gonic/gin"
"billai-server/handler"
"billai-server/middleware"
)
// Config 路由配置参数
type Config struct {
OutputDir string // 输出目录(用于静态文件服务)
Version string // 应用版本
}
// Setup 设置所有路由
func Setup(r *gin.Engine, cfg Config) {
// 健康检查
r.GET("/health", healthCheck(cfg.Version))
// API 路由组
setupAPIRoutes(r)
// 静态文件下载
r.Static("/download", cfg.OutputDir)
}
// healthCheck 健康检查处理器
func healthCheck(version string) gin.HandlerFunc {
return func(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{
"status": "ok",
"version": version,
})
}
}
// setupAPIRoutes 设置 API 路由
func setupAPIRoutes(r *gin.Engine) {
api := r.Group("/api")
{
// 认证相关(无需登录)
api.POST("/auth/login", handler.Login)
api.GET("/auth/validate", handler.ValidateToken)
// 需要登录的 API
authed := api.Group("/")
authed.Use(middleware.AuthRequired())
{
// 账单上传
authed.POST("/upload", handler.Upload)
// 复核相关
authed.GET("/review", handler.Review)
// 账单查询
authed.GET("/bills", handler.ListBills)
// 编辑账单
authed.POST("/bills/:id", handler.UpdateBill)
// 删除账单(软删除)
authed.POST("/bills/:id/delete", handler.DeleteBill)
// 手动创建账单
authed.POST("/bills/manual", handler.CreateManualBills)
// 月度统计(全部数据)
authed.GET("/monthly-stats", handler.MonthlyStats)
// 待复核数据统计
authed.GET("/review-stats", handler.ReviewStats)
}
}
}