feat: 微信公众号技能包重命名(weixin_public_account)并增强功能
- 将 wechat_official_account 重命名为 weixin_public_account,符合中文命名规范 - 新增 DOCX 文档生成技能、聊天历史、请求 ID 中间件 - 增强工作流、热点服务、文章服务等模块功能 - 前端同步重命名组件和 API - 新增架构文档 AR13/AR14、专员文档更新 - 补充测试用例(seed_specialists_test, db_migration_test) Co-Authored-AI: yes
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
package middleware
|
||||
|
||||
import (
|
||||
crand "crypto/rand"
|
||||
"encoding/hex"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
|
||||
"eai_agentplatform/backend/internal/web"
|
||||
)
|
||||
|
||||
// RequestID 为每个请求注入追踪编号:优先沿用调用方传入的 X-Request-ID,
|
||||
// 否则生成 8 字节随机十六进制串。编号写入 Gin Context 与请求头,
|
||||
// 由 web.OK / web.Fail 统一回写到响应头与错误体,支撑前后端与日志联查。
|
||||
func RequestID() gin.HandlerFunc {
|
||||
return func(c *gin.Context) {
|
||||
rid := c.Request.Header.Get("X-Request-ID")
|
||||
if rid == "" {
|
||||
rid = newRequestID()
|
||||
}
|
||||
c.Set(web.CtxRequestID, rid)
|
||||
c.Request.Header.Set("X-Request-ID", rid)
|
||||
|
||||
defer func() {
|
||||
// 无论 handler 是否写入响应头,统一保证带上请求编号
|
||||
c.Writer.Header().Set("X-Request-ID", c.GetString(web.CtxRequestID))
|
||||
}()
|
||||
|
||||
c.Next()
|
||||
}
|
||||
}
|
||||
|
||||
func newRequestID() string {
|
||||
b := make([]byte, 8)
|
||||
if _, err := crand.Read(b); err != nil {
|
||||
return "req-00000000"
|
||||
}
|
||||
return hex.EncodeToString(b)
|
||||
}
|
||||
Reference in New Issue
Block a user