71f0a1abdb
- 所有Go模块路径从 github.com/yourname/cyrene-ai 迁移到 git.yeij.top/AskaEth/Cyrene - 5个Go Dockerfile添加 GOPROXY=https://goproxy.cn,direct 解决国内构建问题 - ai-core go.mod 添加 pkg/plugins replace 指令 - Caddyfile 简化为 http:// 通配 + handle 保留 /api 前缀 - ethend Dockerfile 适配 (npm install + 仅 COPY package.json) - ethend 新增 RUNNING_IN_DOCKER 环境变量,健康检查改用Docker服务名 - ethend 数据库状态检查支持Docker hostname (postgres/redis/qdrant/minio) - process-manager 新增 CONTAINER_SVC_MAP + Docker模式自动检测 - 统一 docker-compose.dev.db.yml 卷名 (pg_data/redis_data/qdrant_data/minio_data) - docker-compose.yml ethend服务挂载docker.sock + 端口变量化 - 清理 .env 统一后的残留文件与提示信息 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
51 lines
1.1 KiB
Go
51 lines
1.1 KiB
Go
package handler
|
|
|
|
import (
|
|
"net/http"
|
|
"strconv"
|
|
|
|
"git.yeij.top/AskaEth/Cyrene/platform-bridge/internal/logging"
|
|
)
|
|
|
|
// LogHandler exposes message log retrieval endpoints.
|
|
type LogHandler struct {
|
|
logger *logging.Logger
|
|
}
|
|
|
|
func NewLogHandler(logger *logging.Logger) *LogHandler {
|
|
return &LogHandler{logger: logger}
|
|
}
|
|
|
|
func (h *LogHandler) RegisterRoutes(mux *http.ServeMux) {
|
|
mux.HandleFunc("/api/v1/logs/", h.handleLogs)
|
|
}
|
|
|
|
func (h *LogHandler) handleLogs(w http.ResponseWriter, r *http.Request) {
|
|
name := r.URL.Path[len("/api/v1/logs/"):]
|
|
if name == "" {
|
|
writeJSON(w, http.StatusBadRequest, errResp("missing platform name in path"))
|
|
return
|
|
}
|
|
|
|
limit := 100
|
|
if l := r.URL.Query().Get("limit"); l != "" {
|
|
if n, err := strconv.Atoi(l); err == nil && n > 0 && n <= 1000 {
|
|
limit = n
|
|
}
|
|
}
|
|
|
|
entries, err := h.logger.ReadLogs(name, limit)
|
|
if err != nil {
|
|
writeJSON(w, http.StatusInternalServerError, errResp(err.Error()))
|
|
return
|
|
}
|
|
if entries == nil {
|
|
entries = []logging.LogEntry{}
|
|
}
|
|
writeJSON(w, http.StatusOK, map[string]interface{}{
|
|
"platform": name,
|
|
"total": len(entries),
|
|
"logs": entries,
|
|
})
|
|
}
|