From 1d401c684118b453e28f494f666e4abce2c203b9 Mon Sep 17 00:00:00 2001 From: bruce Date: Mon, 1 Jun 2026 05:52:51 +0800 Subject: [PATCH] =?UTF-8?q?refactor(logging):=20=E8=A1=A5=E9=BD=90?= =?UTF-8?q?=E6=A0=B8=E5=BF=83=E6=A8=A1=E5=9D=97=E6=97=A5=E5=BF=97=E4=B8=8E?= =?UTF-8?q?=E4=B8=AD=E6=96=87=E6=B3=A8=E9=87=8A=E7=BA=A6=E6=9D=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../agent/controller/AgentSessionController.java | 13 +++++++++++++ .../bruce/mcp/controller/McpImportController.java | 13 +++++++++++++ .../service/impl/ModelRouteServiceImpl.java | 14 ++++++++------ .../controller/ObservabilityTraceController.java | 6 ++++++ .../service/impl/RagChunkEmbeddingServiceImpl.java | 12 ++++++++++++ .../rag/service/impl/RagChunkServiceImpl.java | 12 ++++++++++++ .../impl/RagDocumentParseResultServiceImpl.java | 14 ++++++++++++++ .../skill/controller/SkillWorkspaceController.java | 7 +++++++ .../workflow/controller/ProjectController.java | 10 ++++++++++ 9 files changed, 95 insertions(+), 6 deletions(-) diff --git a/common-agent-agent/src/main/java/com/bruce/agent/controller/AgentSessionController.java b/common-agent-agent/src/main/java/com/bruce/agent/controller/AgentSessionController.java index e704218..2111fcf 100644 --- a/common-agent-agent/src/main/java/com/bruce/agent/controller/AgentSessionController.java +++ b/common-agent-agent/src/main/java/com/bruce/agent/controller/AgentSessionController.java @@ -10,6 +10,7 @@ import com.bruce.agent.vo.AgentSessionDetailVO; import com.bruce.agent.vo.AgentWorkspaceVO; import com.bruce.common.domain.model.RequestResult; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; @@ -20,6 +21,12 @@ import org.springframework.web.bind.annotation.RestController; import java.util.List; +/** + * Agent 会话控制器。 + *

+ * 负责会话创建、详情、消息查询与工作台聚合查询,保持前端只消费 DTO / VO 契约。 + */ +@Slf4j @RestController @RequestMapping("/api/agent-sessions") @RequiredArgsConstructor @@ -31,16 +38,19 @@ public class AgentSessionController { @PostMapping("/create") public RequestResult create(@RequestBody AgentSessionCreateDTO request) { + log.info("Agent会话创建请求开始,agentId={}, sessionCode={}", request.getAgentId(), request.getSessionCode()); return RequestResult.success(agentSessionService.createSession(request)); } @GetMapping("/detail") public RequestResult detail(@RequestParam("id") Long id) { + log.info("Agent会话详情查询开始,sessionId={}", id); return RequestResult.success(agentSessionService.getDetailById(id)); } @GetMapping("/{sessionId}/messages") public RequestResult> messages(@PathVariable("sessionId") Long sessionId) { + log.info("Agent消息列表查询开始,sessionId={}", sessionId); return RequestResult.success(agentMessageService.listBySessionId(sessionId)); } @@ -48,12 +58,15 @@ public class AgentSessionController { public RequestResult appendMessage(@PathVariable("sessionId") Long sessionId, @RequestBody AgentSessionMessageCreateDTO request) { request.setSessionId(sessionId); + log.info("Agent消息写入请求开始,sessionId={}, role={}, requestId={}", + sessionId, request.getRole(), request.getRequestId()); return RequestResult.success(agentMessageService.appendMessage(request)); } @GetMapping("/workspace") public RequestResult workspace(@RequestParam("agentId") Long agentId, @RequestParam(value = "sessionId", required = false) Long sessionId) { + log.info("Agent工作台查询开始,agentId={}, sessionId={}", agentId, sessionId); return RequestResult.success(agentWorkspaceService.getWorkspace(agentId, sessionId)); } } diff --git a/common-agent-mcp/src/main/java/com/bruce/mcp/controller/McpImportController.java b/common-agent-mcp/src/main/java/com/bruce/mcp/controller/McpImportController.java index bd217f4..30f5679 100644 --- a/common-agent-mcp/src/main/java/com/bruce/mcp/controller/McpImportController.java +++ b/common-agent-mcp/src/main/java/com/bruce/mcp/controller/McpImportController.java @@ -11,6 +11,7 @@ import com.bruce.mcp.vo.McpCapabilityVO; import com.bruce.mcp.vo.McpServerVO; import com.bruce.mcp.vo.McpWorkspaceVO; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; @@ -21,6 +22,12 @@ import org.springframework.web.bind.annotation.RestController; import java.util.List; +/** + * MCP 接入控制器。 + *

+ * 负责导入服务、查询服务与能力、以及工作台聚合视图查询。 + */ +@Slf4j @RestController @RequestMapping("/api/mcp") @RequiredArgsConstructor @@ -33,16 +40,19 @@ public class McpImportController { @PostMapping("/import") public RequestResult importServer(@RequestBody McpImportDTO request) { + log.info("MCP服务导入开始,serverCode={}, importType={}", request.getServerCode(), request.getImportType()); return RequestResult.success(mcpImportService.importServer(request)); } @GetMapping("/servers") public RequestResult> listServers() { + log.info("MCP服务列表查询开始"); return RequestResult.success(mcpServerService.listServers()); } @GetMapping("/servers/{serverId}/capabilities") public RequestResult> listCapabilities(@PathVariable("serverId") Long serverId) { + log.info("MCP能力列表查询开始,serverId={}", serverId); return RequestResult.success(mcpCapabilityService.listByServerId(serverId)); } @@ -51,16 +61,19 @@ public class McpImportController { */ @GetMapping("/servers/code/{serverCode}/capabilities") public RequestResult> listCapabilitiesByServerCode(@PathVariable("serverCode") String serverCode) { + log.info("MCP能力列表按编码查询开始,serverCode={}", serverCode); return RequestResult.success(mcpCapabilityService.listByServerCode(serverCode)); } @PostMapping("/capabilities/save") public RequestResult saveCapability(@RequestBody McpCapabilitySaveDTO request) { + log.info("MCP能力保存开始,serverId={}, capabilityCode={}", request.getServerId(), request.getCapabilityCode()); return RequestResult.success(mcpCapabilityService.saveCapability(request)); } @GetMapping("/workspace") public RequestResult workspace(@RequestParam("serverId") Long serverId) { + log.info("MCP工作台查询开始,serverId={}", serverId); return RequestResult.success(mcpWorkspaceService.getWorkspace(serverId)); } } diff --git a/common-agent-modelprovider/src/main/java/com/bruce/modelprovider/service/impl/ModelRouteServiceImpl.java b/common-agent-modelprovider/src/main/java/com/bruce/modelprovider/service/impl/ModelRouteServiceImpl.java index 947f02d..3919aec 100644 --- a/common-agent-modelprovider/src/main/java/com/bruce/modelprovider/service/impl/ModelRouteServiceImpl.java +++ b/common-agent-modelprovider/src/main/java/com/bruce/modelprovider/service/impl/ModelRouteServiceImpl.java @@ -8,6 +8,7 @@ import com.bruce.modelprovider.service.IModelConfigService; import com.bruce.modelprovider.service.IModelRouteRuleService; import com.bruce.modelprovider.service.IModelRouteService; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import java.util.ArrayList; @@ -25,9 +26,7 @@ import java.util.stream.Collectors; */ @Service @RequiredArgsConstructor -/** - * ModelRouteServiceImpl,负责模型平台对应层的职责。 - */ +@Slf4j public class ModelRouteServiceImpl implements IModelRouteService { private final IModelRouteRuleService modelRouteRuleService; @@ -40,13 +39,12 @@ public class ModelRouteServiceImpl implements IModelRouteService { * @return 路由决策结果,包含主模型、备用模型和命中原因 */ @Override - /** - * 方法 route,用于执行业务逻辑处理。 - */ public ModelRouteDecision route(ModelRouteContext context) { if (context == null) { throw new IllegalArgumentException("路由上下文不能为空"); } + log.info("模型路由决策开始,taskType={}, matchScope={}, scopeId={}, modelType={}", + context.getTaskType(), context.getMatchScope(), context.getScopeId(), context.getRequiredModelType()); ModelRouteRule rule = selectRule(context); if (rule == null) { ModelConfig defaultModel = modelConfigService.lambdaQuery() @@ -62,6 +60,8 @@ public class ModelRouteServiceImpl implements IModelRouteService { decision.setPrimaryModel(defaultModel); decision.setRouteStrategy("MANUAL"); decision.setReason("命中模型类型默认模型"); + log.info("模型路由决策完成,taskType={}, strategy={}, primaryModelId={}, reason={}", + context.getTaskType(), decision.getRouteStrategy(), defaultModel.getId(), decision.getReason()); return decision; } @@ -98,6 +98,8 @@ public class ModelRouteServiceImpl implements IModelRouteService { decision.setFallbackModels(fallbackModels); decision.setRouteStrategy(rule.getRouteStrategy()); decision.setReason("命中规则: " + rule.getRouteCode()); + log.info("模型路由决策完成,taskType={}, routeCode={}, primaryModelId={}, fallbackCount={}", + context.getTaskType(), rule.getRouteCode(), primary.getId(), fallbackModels.size()); return decision; } diff --git a/common-agent-observability/src/main/java/com/bruce/observability/controller/ObservabilityTraceController.java b/common-agent-observability/src/main/java/com/bruce/observability/controller/ObservabilityTraceController.java index 684c121..52f0379 100644 --- a/common-agent-observability/src/main/java/com/bruce/observability/controller/ObservabilityTraceController.java +++ b/common-agent-observability/src/main/java/com/bruce/observability/controller/ObservabilityTraceController.java @@ -9,6 +9,7 @@ import com.bruce.observability.vo.ObservabilityModelCallSummaryVO; import com.bruce.observability.vo.ObservabilityRunSummaryVO; import com.bruce.observability.vo.ObservabilityTraceVO; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; @@ -20,6 +21,7 @@ import java.util.List; /** * 运行观测控制器,聚合 Workflow、Agent 和模型调用信息,返回脱敏摘要。 */ +@Slf4j @RestController @RequestMapping("/api/observability") @RequiredArgsConstructor @@ -31,21 +33,25 @@ public class ObservabilityTraceController { @GetMapping("/runs") public RequestResult> runs() { + log.info("运行观测列表查询开始"); return RequestResult.success(observabilityRunService.listRecentRuns()); } @GetMapping("/runs/{requestId}") public RequestResult trace(@PathVariable("requestId") String requestId) { + log.info("运行追踪查询开始,requestId={}", requestId); return RequestResult.success(observabilityTraceService.getTrace(requestId)); } @GetMapping("/model-calls") public RequestResult> modelCalls(@RequestParam("requestId") String requestId) { + log.info("模型调用摘要查询开始,requestId={}", requestId); return RequestResult.success(observabilityTraceService.listModelCalls(requestId)); } @GetMapping("/runs/{requestId}/export") public RequestResult export(@PathVariable("requestId") String requestId) { + log.info("运行追踪导出开始,requestId={}", requestId); return RequestResult.success(observabilityExportService.exportTrace(requestId)); } } diff --git a/common-agent-rag/src/main/java/com/bruce/rag/service/impl/RagChunkEmbeddingServiceImpl.java b/common-agent-rag/src/main/java/com/bruce/rag/service/impl/RagChunkEmbeddingServiceImpl.java index e71ff6d..f65edf6 100644 --- a/common-agent-rag/src/main/java/com/bruce/rag/service/impl/RagChunkEmbeddingServiceImpl.java +++ b/common-agent-rag/src/main/java/com/bruce/rag/service/impl/RagChunkEmbeddingServiceImpl.java @@ -4,9 +4,21 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.bruce.rag.entity.RagChunkEmbedding; import com.bruce.rag.mapper.RagChunkEmbeddingMapper; import com.bruce.rag.service.IRagChunkEmbeddingService; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +/** + * 切片向量服务基础实现。 + *

+ * 当前模块首轮以主数据补全为主,这里保留统一的服务落点,便于后续继续承接向量写入、 + * 重建索引和状态审计日志。 + */ +@Slf4j @Service public class RagChunkEmbeddingServiceImpl extends ServiceImpl implements IRagChunkEmbeddingService { + + public RagChunkEmbeddingServiceImpl() { + log.debug("RAG切片向量服务初始化完成"); + } } diff --git a/common-agent-rag/src/main/java/com/bruce/rag/service/impl/RagChunkServiceImpl.java b/common-agent-rag/src/main/java/com/bruce/rag/service/impl/RagChunkServiceImpl.java index 8d9ba57..a5d50f4 100644 --- a/common-agent-rag/src/main/java/com/bruce/rag/service/impl/RagChunkServiceImpl.java +++ b/common-agent-rag/src/main/java/com/bruce/rag/service/impl/RagChunkServiceImpl.java @@ -4,8 +4,20 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.bruce.rag.entity.RagChunk; import com.bruce.rag.mapper.RagChunkMapper; import com.bruce.rag.service.IRagChunkService; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +/** + * 切片服务基础实现。 + *

+ * 当前阶段主要复用 MyBatis-Plus 通用能力承载切片主数据访问, + * 统一保留服务层入口以便后续扩展切片重建和日志审计。 + */ +@Slf4j @Service public class RagChunkServiceImpl extends ServiceImpl implements IRagChunkService { + + public RagChunkServiceImpl() { + log.debug("RAG切片服务初始化完成"); + } } diff --git a/common-agent-rag/src/main/java/com/bruce/rag/service/impl/RagDocumentParseResultServiceImpl.java b/common-agent-rag/src/main/java/com/bruce/rag/service/impl/RagDocumentParseResultServiceImpl.java index 177eff4..7cfe8c2 100644 --- a/common-agent-rag/src/main/java/com/bruce/rag/service/impl/RagDocumentParseResultServiceImpl.java +++ b/common-agent-rag/src/main/java/com/bruce/rag/service/impl/RagDocumentParseResultServiceImpl.java @@ -7,6 +7,7 @@ import com.bruce.rag.entity.RagDocumentParseResult; import com.bruce.rag.mapper.RagDocumentParseResultMapper; import com.bruce.rag.service.IRagDocumentParseResultService; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.util.DigestUtils; import org.springframework.util.StringUtils; @@ -17,6 +18,12 @@ import java.nio.charset.StandardCharsets; import java.util.LinkedHashMap; import java.util.Map; +/** + * 文档解析快照服务实现。 + *

+ * 负责把解析结果固化为文档快照,供切片与后续索引链路复用。 + */ +@Slf4j @Service @RequiredArgsConstructor public class RagDocumentParseResultServiceImpl extends ServiceImpl @@ -29,6 +36,7 @@ public class RagDocumentParseResultServiceImpl extends ServiceImpllambdaQuery() .eq(RagDocumentParseResult::getDocumentId, documentId) .last("limit 1")); @@ -39,6 +47,8 @@ public class RagDocumentParseResultServiceImpl extends ServiceImpl payload = metadata == null ? new LinkedHashMap<>() : metadata; return objectMapper.writeValueAsString(payload); } catch (Exception e) { + log.error("解析元数据序列化失败,metadataKeys={}", metadata == null ? 0 : metadata.keySet(), e); throw new IllegalStateException("解析元数据序列化失败", e); } } @@ -103,6 +116,7 @@ public class RagDocumentParseResultServiceImpl extends ServiceImpl() { }); } catch (Exception e) { + log.error("解析元数据反序列化失败,metadataJson={}", metadataJson, e); throw new IllegalStateException("解析元数据反序列化失败", e); } } diff --git a/common-agent-skill/src/main/java/com/bruce/skill/controller/SkillWorkspaceController.java b/common-agent-skill/src/main/java/com/bruce/skill/controller/SkillWorkspaceController.java index 8950b81..98ce2ac 100644 --- a/common-agent-skill/src/main/java/com/bruce/skill/controller/SkillWorkspaceController.java +++ b/common-agent-skill/src/main/java/com/bruce/skill/controller/SkillWorkspaceController.java @@ -7,6 +7,7 @@ import com.bruce.skill.service.ISkillWorkspaceService; import com.bruce.skill.vo.SkillVersionVO; import com.bruce.skill.vo.SkillWorkspaceVO; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; @@ -18,6 +19,7 @@ import org.springframework.web.bind.annotation.RestController; /** * Skill 工作台接口,首轮对齐前端原型中的详情、草稿、测试、发布和归档能力。 */ +@Slf4j @RestController @RequestMapping("/api/skills") @RequiredArgsConstructor @@ -28,30 +30,35 @@ public class SkillWorkspaceController { @GetMapping("/{skillCode}") public RequestResult detail(@PathVariable("skillCode") String skillCode) { + log.info("Skill工作台详情查询开始,skillCode={}", skillCode); return RequestResult.success(skillWorkspaceService.getWorkspace(skillCode)); } @PostMapping("/{skillCode}/draft") public RequestResult saveDraft(@PathVariable("skillCode") String skillCode, @RequestBody SkillVersionSaveDTO request) { + log.info("Skill草稿保存开始,skillCode={}, versionNo={}", skillCode, request.getVersionNo()); return RequestResult.success(skillVersionService.saveDraft(skillCode, request)); } @PostMapping("/{skillCode}/test") public RequestResult test(@PathVariable("skillCode") String skillCode, @RequestBody SkillVersionSaveDTO request) { + log.info("Skill测试执行开始,skillCode={}, versionNo={}", skillCode, request.getVersionNo()); return RequestResult.success(skillVersionService.test(skillCode, request)); } @PostMapping("/{skillCode}/publish") public RequestResult publish(@PathVariable("skillCode") String skillCode, @RequestBody SkillVersionSaveDTO request) { + log.info("Skill发布开始,skillCode={}, versionNo={}", skillCode, request.getVersionNo()); return RequestResult.success(skillVersionService.publish(skillCode, request)); } @PostMapping("/{skillCode}/archive") public RequestResult archive(@PathVariable("skillCode") String skillCode, @RequestParam("versionNo") Integer versionNo) { + log.info("Skill归档开始,skillCode={}, versionNo={}", skillCode, versionNo); return RequestResult.success(skillVersionService.archive(skillCode, versionNo)); } } diff --git a/common-agent-workflow/src/main/java/com/bruce/workflow/controller/ProjectController.java b/common-agent-workflow/src/main/java/com/bruce/workflow/controller/ProjectController.java index 7a1fa6f..a5e84bc 100644 --- a/common-agent-workflow/src/main/java/com/bruce/workflow/controller/ProjectController.java +++ b/common-agent-workflow/src/main/java/com/bruce/workflow/controller/ProjectController.java @@ -5,6 +5,7 @@ import com.bruce.workflow.dto.ProjectSaveDTO; import com.bruce.workflow.service.IProjectService; import com.bruce.workflow.vo.ProjectVO; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -14,6 +15,12 @@ import org.springframework.web.bind.annotation.RestController; import java.util.List; +/** + * Studio 项目空间控制器。 + *

+ * 负责项目列表、详情和保存接口,对外统一返回 Project 相关 VO。 + */ +@Slf4j @RestController @RequestMapping("/api/studio-projects") @RequiredArgsConstructor @@ -23,16 +30,19 @@ public class ProjectController { @GetMapping("/list") public RequestResult> list() { + log.info("Studio项目列表查询开始"); return RequestResult.success(projectService.listProjects()); } @GetMapping("/detail") public RequestResult detail(@RequestParam("id") Long id) { + log.info("Studio项目详情查询开始,projectId={}", id); return RequestResult.success(projectService.getProject(id)); } @PostMapping("/save") public RequestResult save(@RequestBody ProjectSaveDTO request) { + log.info("Studio项目保存开始,projectId={}, projectCode={}", request.getId(), request.getProjectCode()); return RequestResult.success(projectService.saveProject(request)); } }