- backend/docs/GUIDE.md:使用指南,每功能一句话讲清 「是什么→怎么用→实用技巧」(快速开始 3 步、流水线快速上手配置、 GitOps 概念与用法、AI 助手/批量发布/Jenkins/构建节点/工具/ 飞书通知/用户 LDAP/常见问题 FAQ) - backend/docs/API.md:接口文档(opsx-sec 骨架:通用约定/模块 索引表/重点端点 curl 示例/状态码速查) - GET /api/docs:文档 embed 进二进制,运行目录 docs/ 优先可热更新 - /docs 页面:使用指南/接口文档切换 + 左侧目录锚点导航 + markdown 渲染(marked + gfm-heading-id,深浅主题适配排版) - 侧边栏系统组新增「文档」入口(第一位)
32 lines
704 B
Go
32 lines
704 B
Go
package handler
|
|
|
|
import (
|
|
"embed"
|
|
"io/fs"
|
|
"net/http"
|
|
"os"
|
|
"time"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
// GetDocs 返回文档端点:运行目录 docs/ 下同名文件优先(可热更新),否则用内嵌副本。
|
|
func GetDocs(docsFS embed.FS) gin.HandlerFunc {
|
|
readDoc := func(name string) string {
|
|
if data, err := os.ReadFile("docs/" + name); err == nil {
|
|
return string(data)
|
|
}
|
|
if data, err := fs.ReadFile(docsFS, "docs/"+name); err == nil {
|
|
return string(data)
|
|
}
|
|
return ""
|
|
}
|
|
return func(c *gin.Context) {
|
|
c.JSON(http.StatusOK, gin.H{
|
|
"guide": readDoc("GUIDE.md"),
|
|
"api": readDoc("API.md"),
|
|
"updatedAt": time.Now().Format("2006-01-02 15:04:05"),
|
|
})
|
|
}
|
|
}
|