feat(be+admin): 后台看板扩展 + 社区内容安全审核
看板(Recharts): - 概览页加 DAU/WAU/MAU、今日/本月新增 KPI,新增趋势/活跃趋势/月活/留存曲线 - GET /admin/analytics 内存计算,活跃口径=当天有记录/发帖/评论,排除 bot 内容安全(微信官方 UGC): - 文本 msg_sec_check 同步判、图片 media_check_async 异步查 - 帖子/评论加 pending/rejected 审核态,feed 只放 published - 图片结果回调 /api/wx/sec-callback,JSON/XML + 明文模式,签名校验 - 检测不了/未发布时一律转待审核,走后台手动审核 - 后台帖子/评论审核页:修好看不到图(补 attachPostImages)、 加状态筛选 + 通过/打回;新增评论审核状态接口 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -20,6 +20,8 @@ func New(h *handler.Handler, jm *appjwt.Manager, mode string) *gin.Engine {
|
||||
r.GET("/api/ping", func(c *gin.Context) { response.OK(c, gin.H{"pong": true}) })
|
||||
// 根路径跳转后台
|
||||
r.GET("/", func(c *gin.Context) { c.Redirect(302, "/admin/") })
|
||||
// 微信图片异步安全检测的结果回调(消息推送),公开、自带签名校验
|
||||
r.Any("/api/wx/sec-callback", h.WxSecCallback)
|
||||
|
||||
api := r.Group("/api")
|
||||
registerAuth(api, h)
|
||||
@@ -141,6 +143,7 @@ func registerAdminAPI(api *gin.RouterGroup, h *handler.Handler, jm *appjwt.Manag
|
||||
|
||||
g.GET("/me", h.AdminMe)
|
||||
g.GET("/stats", h.AdminStats)
|
||||
g.GET("/analytics", h.AdminAnalytics)
|
||||
|
||||
g.GET("/users", h.AdminListUsers)
|
||||
g.PUT("/users/:id/disabled", h.AdminSetUserDisabled)
|
||||
@@ -151,6 +154,7 @@ func registerAdminAPI(api *gin.RouterGroup, h *handler.Handler, jm *appjwt.Manag
|
||||
g.PUT("/posts/:id/status", h.AdminSetPostStatus)
|
||||
|
||||
g.GET("/comments", h.AdminListComments)
|
||||
g.PUT("/comments/:id/status", h.AdminSetCommentStatus)
|
||||
g.DELETE("/comments/:id", h.AdminDeleteComment)
|
||||
|
||||
g.GET("/articles", h.AdminListArticles)
|
||||
|
||||
Reference in New Issue
Block a user