refactor(logging): 补齐核心模块日志与中文注释约束

This commit is contained in:
2026-06-01 05:52:51 +08:00
parent 92b0a971f2
commit 1d401c6841
9 changed files with 95 additions and 6 deletions

View File

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

View File

@@ -11,6 +11,7 @@ import com.bruce.mcp.vo.McpCapabilityVO;
import com.bruce.mcp.vo.McpServerVO; import com.bruce.mcp.vo.McpServerVO;
import com.bruce.mcp.vo.McpWorkspaceVO; import com.bruce.mcp.vo.McpWorkspaceVO;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
@@ -21,6 +22,12 @@ import org.springframework.web.bind.annotation.RestController;
import java.util.List; import java.util.List;
/**
* MCP 接入控制器。
* <p>
* 负责导入服务、查询服务与能力、以及工作台聚合视图查询。
*/
@Slf4j
@RestController @RestController
@RequestMapping("/api/mcp") @RequestMapping("/api/mcp")
@RequiredArgsConstructor @RequiredArgsConstructor
@@ -33,16 +40,19 @@ public class McpImportController {
@PostMapping("/import") @PostMapping("/import")
public RequestResult<Boolean> importServer(@RequestBody McpImportDTO request) { public RequestResult<Boolean> importServer(@RequestBody McpImportDTO request) {
log.info("MCP服务导入开始serverCode={}, importType={}", request.getServerCode(), request.getImportType());
return RequestResult.success(mcpImportService.importServer(request)); return RequestResult.success(mcpImportService.importServer(request));
} }
@GetMapping("/servers") @GetMapping("/servers")
public RequestResult<List<McpServerVO>> listServers() { public RequestResult<List<McpServerVO>> listServers() {
log.info("MCP服务列表查询开始");
return RequestResult.success(mcpServerService.listServers()); return RequestResult.success(mcpServerService.listServers());
} }
@GetMapping("/servers/{serverId}/capabilities") @GetMapping("/servers/{serverId}/capabilities")
public RequestResult<List<McpCapabilityVO>> listCapabilities(@PathVariable("serverId") Long serverId) { public RequestResult<List<McpCapabilityVO>> listCapabilities(@PathVariable("serverId") Long serverId) {
log.info("MCP能力列表查询开始serverId={}", serverId);
return RequestResult.success(mcpCapabilityService.listByServerId(serverId)); return RequestResult.success(mcpCapabilityService.listByServerId(serverId));
} }
@@ -51,16 +61,19 @@ public class McpImportController {
*/ */
@GetMapping("/servers/code/{serverCode}/capabilities") @GetMapping("/servers/code/{serverCode}/capabilities")
public RequestResult<List<McpCapabilityVO>> listCapabilitiesByServerCode(@PathVariable("serverCode") String serverCode) { public RequestResult<List<McpCapabilityVO>> listCapabilitiesByServerCode(@PathVariable("serverCode") String serverCode) {
log.info("MCP能力列表按编码查询开始serverCode={}", serverCode);
return RequestResult.success(mcpCapabilityService.listByServerCode(serverCode)); return RequestResult.success(mcpCapabilityService.listByServerCode(serverCode));
} }
@PostMapping("/capabilities/save") @PostMapping("/capabilities/save")
public RequestResult<Boolean> saveCapability(@RequestBody McpCapabilitySaveDTO request) { public RequestResult<Boolean> saveCapability(@RequestBody McpCapabilitySaveDTO request) {
log.info("MCP能力保存开始serverId={}, capabilityCode={}", request.getServerId(), request.getCapabilityCode());
return RequestResult.success(mcpCapabilityService.saveCapability(request)); return RequestResult.success(mcpCapabilityService.saveCapability(request));
} }
@GetMapping("/workspace") @GetMapping("/workspace")
public RequestResult<McpWorkspaceVO> workspace(@RequestParam("serverId") Long serverId) { public RequestResult<McpWorkspaceVO> workspace(@RequestParam("serverId") Long serverId) {
log.info("MCP工作台查询开始serverId={}", serverId);
return RequestResult.success(mcpWorkspaceService.getWorkspace(serverId)); return RequestResult.success(mcpWorkspaceService.getWorkspace(serverId));
} }
} }

View File

@@ -8,6 +8,7 @@ import com.bruce.modelprovider.service.IModelConfigService;
import com.bruce.modelprovider.service.IModelRouteRuleService; import com.bruce.modelprovider.service.IModelRouteRuleService;
import com.bruce.modelprovider.service.IModelRouteService; import com.bruce.modelprovider.service.IModelRouteService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList; import java.util.ArrayList;
@@ -25,9 +26,7 @@ import java.util.stream.Collectors;
*/ */
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
/** @Slf4j
* ModelRouteServiceImpl负责模型平台对应层的职责。
*/
public class ModelRouteServiceImpl implements IModelRouteService { public class ModelRouteServiceImpl implements IModelRouteService {
private final IModelRouteRuleService modelRouteRuleService; private final IModelRouteRuleService modelRouteRuleService;
@@ -40,13 +39,12 @@ public class ModelRouteServiceImpl implements IModelRouteService {
* @return 路由决策结果,包含主模型、备用模型和命中原因 * @return 路由决策结果,包含主模型、备用模型和命中原因
*/ */
@Override @Override
/**
* 方法 route用于执行业务逻辑处理。
*/
public ModelRouteDecision route(ModelRouteContext context) { public ModelRouteDecision route(ModelRouteContext context) {
if (context == null) { if (context == null) {
throw new IllegalArgumentException("路由上下文不能为空"); throw new IllegalArgumentException("路由上下文不能为空");
} }
log.info("模型路由决策开始taskType={}, matchScope={}, scopeId={}, modelType={}",
context.getTaskType(), context.getMatchScope(), context.getScopeId(), context.getRequiredModelType());
ModelRouteRule rule = selectRule(context); ModelRouteRule rule = selectRule(context);
if (rule == null) { if (rule == null) {
ModelConfig defaultModel = modelConfigService.lambdaQuery() ModelConfig defaultModel = modelConfigService.lambdaQuery()
@@ -62,6 +60,8 @@ public class ModelRouteServiceImpl implements IModelRouteService {
decision.setPrimaryModel(defaultModel); decision.setPrimaryModel(defaultModel);
decision.setRouteStrategy("MANUAL"); decision.setRouteStrategy("MANUAL");
decision.setReason("命中模型类型默认模型"); decision.setReason("命中模型类型默认模型");
log.info("模型路由决策完成taskType={}, strategy={}, primaryModelId={}, reason={}",
context.getTaskType(), decision.getRouteStrategy(), defaultModel.getId(), decision.getReason());
return decision; return decision;
} }
@@ -98,6 +98,8 @@ public class ModelRouteServiceImpl implements IModelRouteService {
decision.setFallbackModels(fallbackModels); decision.setFallbackModels(fallbackModels);
decision.setRouteStrategy(rule.getRouteStrategy()); decision.setRouteStrategy(rule.getRouteStrategy());
decision.setReason("命中规则: " + rule.getRouteCode()); decision.setReason("命中规则: " + rule.getRouteCode());
log.info("模型路由决策完成taskType={}, routeCode={}, primaryModelId={}, fallbackCount={}",
context.getTaskType(), rule.getRouteCode(), primary.getId(), fallbackModels.size());
return decision; return decision;
} }

View File

@@ -9,6 +9,7 @@ import com.bruce.observability.vo.ObservabilityModelCallSummaryVO;
import com.bruce.observability.vo.ObservabilityRunSummaryVO; import com.bruce.observability.vo.ObservabilityRunSummaryVO;
import com.bruce.observability.vo.ObservabilityTraceVO; import com.bruce.observability.vo.ObservabilityTraceVO;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
@@ -20,6 +21,7 @@ import java.util.List;
/** /**
* 运行观测控制器,聚合 Workflow、Agent 和模型调用信息,返回脱敏摘要。 * 运行观测控制器,聚合 Workflow、Agent 和模型调用信息,返回脱敏摘要。
*/ */
@Slf4j
@RestController @RestController
@RequestMapping("/api/observability") @RequestMapping("/api/observability")
@RequiredArgsConstructor @RequiredArgsConstructor
@@ -31,21 +33,25 @@ public class ObservabilityTraceController {
@GetMapping("/runs") @GetMapping("/runs")
public RequestResult<List<ObservabilityRunSummaryVO>> runs() { public RequestResult<List<ObservabilityRunSummaryVO>> runs() {
log.info("运行观测列表查询开始");
return RequestResult.success(observabilityRunService.listRecentRuns()); return RequestResult.success(observabilityRunService.listRecentRuns());
} }
@GetMapping("/runs/{requestId}") @GetMapping("/runs/{requestId}")
public RequestResult<ObservabilityTraceVO> trace(@PathVariable("requestId") String requestId) { public RequestResult<ObservabilityTraceVO> trace(@PathVariable("requestId") String requestId) {
log.info("运行追踪查询开始requestId={}", requestId);
return RequestResult.success(observabilityTraceService.getTrace(requestId)); return RequestResult.success(observabilityTraceService.getTrace(requestId));
} }
@GetMapping("/model-calls") @GetMapping("/model-calls")
public RequestResult<List<ObservabilityModelCallSummaryVO>> modelCalls(@RequestParam("requestId") String requestId) { public RequestResult<List<ObservabilityModelCallSummaryVO>> modelCalls(@RequestParam("requestId") String requestId) {
log.info("模型调用摘要查询开始requestId={}", requestId);
return RequestResult.success(observabilityTraceService.listModelCalls(requestId)); return RequestResult.success(observabilityTraceService.listModelCalls(requestId));
} }
@GetMapping("/runs/{requestId}/export") @GetMapping("/runs/{requestId}/export")
public RequestResult<ObservabilityExportVO> export(@PathVariable("requestId") String requestId) { public RequestResult<ObservabilityExportVO> export(@PathVariable("requestId") String requestId) {
log.info("运行追踪导出开始requestId={}", requestId);
return RequestResult.success(observabilityExportService.exportTrace(requestId)); return RequestResult.success(observabilityExportService.exportTrace(requestId));
} }
} }

View File

@@ -4,9 +4,21 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.bruce.rag.entity.RagChunkEmbedding; import com.bruce.rag.entity.RagChunkEmbedding;
import com.bruce.rag.mapper.RagChunkEmbeddingMapper; import com.bruce.rag.mapper.RagChunkEmbeddingMapper;
import com.bruce.rag.service.IRagChunkEmbeddingService; import com.bruce.rag.service.IRagChunkEmbeddingService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
/**
* 切片向量服务基础实现。
* <p>
* 当前模块首轮以主数据补全为主,这里保留统一的服务落点,便于后续继续承接向量写入、
* 重建索引和状态审计日志。
*/
@Slf4j
@Service @Service
public class RagChunkEmbeddingServiceImpl extends ServiceImpl<RagChunkEmbeddingMapper, RagChunkEmbedding> public class RagChunkEmbeddingServiceImpl extends ServiceImpl<RagChunkEmbeddingMapper, RagChunkEmbedding>
implements IRagChunkEmbeddingService { implements IRagChunkEmbeddingService {
public RagChunkEmbeddingServiceImpl() {
log.debug("RAG切片向量服务初始化完成");
}
} }

View File

@@ -4,8 +4,20 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.bruce.rag.entity.RagChunk; import com.bruce.rag.entity.RagChunk;
import com.bruce.rag.mapper.RagChunkMapper; import com.bruce.rag.mapper.RagChunkMapper;
import com.bruce.rag.service.IRagChunkService; import com.bruce.rag.service.IRagChunkService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
/**
* 切片服务基础实现。
* <p>
* 当前阶段主要复用 MyBatis-Plus 通用能力承载切片主数据访问,
* 统一保留服务层入口以便后续扩展切片重建和日志审计。
*/
@Slf4j
@Service @Service
public class RagChunkServiceImpl extends ServiceImpl<RagChunkMapper, RagChunk> implements IRagChunkService { public class RagChunkServiceImpl extends ServiceImpl<RagChunkMapper, RagChunk> implements IRagChunkService {
public RagChunkServiceImpl() {
log.debug("RAG切片服务初始化完成");
}
} }

View File

@@ -7,6 +7,7 @@ import com.bruce.rag.entity.RagDocumentParseResult;
import com.bruce.rag.mapper.RagDocumentParseResultMapper; import com.bruce.rag.mapper.RagDocumentParseResultMapper;
import com.bruce.rag.service.IRagDocumentParseResultService; import com.bruce.rag.service.IRagDocumentParseResultService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.DigestUtils; import org.springframework.util.DigestUtils;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
@@ -17,6 +18,12 @@ import java.nio.charset.StandardCharsets;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.Map; import java.util.Map;
/**
* 文档解析快照服务实现。
* <p>
* 负责把解析结果固化为文档快照,供切片与后续索引链路复用。
*/
@Slf4j
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
public class RagDocumentParseResultServiceImpl extends ServiceImpl<RagDocumentParseResultMapper, RagDocumentParseResult> public class RagDocumentParseResultServiceImpl extends ServiceImpl<RagDocumentParseResultMapper, RagDocumentParseResult>
@@ -29,6 +36,7 @@ public class RagDocumentParseResultServiceImpl extends ServiceImpl<RagDocumentPa
if (documentId == null) { if (documentId == null) {
return null; return null;
} }
log.info("查询文档解析快照开始documentId={}", documentId);
return getOne(Wrappers.<RagDocumentParseResult>lambdaQuery() return getOne(Wrappers.<RagDocumentParseResult>lambdaQuery()
.eq(RagDocumentParseResult::getDocumentId, documentId) .eq(RagDocumentParseResult::getDocumentId, documentId)
.last("limit 1")); .last("limit 1"));
@@ -39,6 +47,8 @@ public class RagDocumentParseResultServiceImpl extends ServiceImpl<RagDocumentPa
if (storeId == null || documentId == null || parseResult == null) { if (storeId == null || documentId == null || parseResult == null) {
throw new IllegalArgumentException("保存解析快照参数不完整"); throw new IllegalArgumentException("保存解析快照参数不完整");
} }
log.info("保存文档解析快照开始storeId={}, documentId={}, textLength={}",
storeId, documentId, parseResult.getTextLength());
RagDocumentParseResult existing = getByDocumentId(documentId); RagDocumentParseResult existing = getByDocumentId(documentId);
RagDocumentParseResult snapshot = existing == null ? new RagDocumentParseResult() : existing; RagDocumentParseResult snapshot = existing == null ? new RagDocumentParseResult() : existing;
snapshot.setStoreId(storeId); snapshot.setStoreId(storeId);
@@ -56,6 +66,8 @@ public class RagDocumentParseResultServiceImpl extends ServiceImpl<RagDocumentPa
} else { } else {
updateById(snapshot); updateById(snapshot);
} }
log.info("保存文档解析快照完成storeId={}, documentId={}, parseVersion={}, snapshotId={}",
storeId, documentId, snapshot.getParseVersion(), snapshot.getId());
} }
@Override @Override
@@ -91,6 +103,7 @@ public class RagDocumentParseResultServiceImpl extends ServiceImpl<RagDocumentPa
Map<String, Object> payload = metadata == null ? new LinkedHashMap<>() : metadata; Map<String, Object> payload = metadata == null ? new LinkedHashMap<>() : metadata;
return objectMapper.writeValueAsString(payload); return objectMapper.writeValueAsString(payload);
} catch (Exception e) { } catch (Exception e) {
log.error("解析元数据序列化失败metadataKeys={}", metadata == null ? 0 : metadata.keySet(), e);
throw new IllegalStateException("解析元数据序列化失败", e); throw new IllegalStateException("解析元数据序列化失败", e);
} }
} }
@@ -103,6 +116,7 @@ public class RagDocumentParseResultServiceImpl extends ServiceImpl<RagDocumentPa
return objectMapper.readValue(metadataJson, new TypeReference<>() { return objectMapper.readValue(metadataJson, new TypeReference<>() {
}); });
} catch (Exception e) { } catch (Exception e) {
log.error("解析元数据反序列化失败metadataJson={}", metadataJson, e);
throw new IllegalStateException("解析元数据反序列化失败", e); throw new IllegalStateException("解析元数据反序列化失败", e);
} }
} }

View File

@@ -7,6 +7,7 @@ import com.bruce.skill.service.ISkillWorkspaceService;
import com.bruce.skill.vo.SkillVersionVO; import com.bruce.skill.vo.SkillVersionVO;
import com.bruce.skill.vo.SkillWorkspaceVO; import com.bruce.skill.vo.SkillWorkspaceVO;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
@@ -18,6 +19,7 @@ import org.springframework.web.bind.annotation.RestController;
/** /**
* Skill 工作台接口,首轮对齐前端原型中的详情、草稿、测试、发布和归档能力。 * Skill 工作台接口,首轮对齐前端原型中的详情、草稿、测试、发布和归档能力。
*/ */
@Slf4j
@RestController @RestController
@RequestMapping("/api/skills") @RequestMapping("/api/skills")
@RequiredArgsConstructor @RequiredArgsConstructor
@@ -28,30 +30,35 @@ public class SkillWorkspaceController {
@GetMapping("/{skillCode}") @GetMapping("/{skillCode}")
public RequestResult<SkillWorkspaceVO> detail(@PathVariable("skillCode") String skillCode) { public RequestResult<SkillWorkspaceVO> detail(@PathVariable("skillCode") String skillCode) {
log.info("Skill工作台详情查询开始skillCode={}", skillCode);
return RequestResult.success(skillWorkspaceService.getWorkspace(skillCode)); return RequestResult.success(skillWorkspaceService.getWorkspace(skillCode));
} }
@PostMapping("/{skillCode}/draft") @PostMapping("/{skillCode}/draft")
public RequestResult<Boolean> saveDraft(@PathVariable("skillCode") String skillCode, public RequestResult<Boolean> saveDraft(@PathVariable("skillCode") String skillCode,
@RequestBody SkillVersionSaveDTO request) { @RequestBody SkillVersionSaveDTO request) {
log.info("Skill草稿保存开始skillCode={}, versionNo={}", skillCode, request.getVersionNo());
return RequestResult.success(skillVersionService.saveDraft(skillCode, request)); return RequestResult.success(skillVersionService.saveDraft(skillCode, request));
} }
@PostMapping("/{skillCode}/test") @PostMapping("/{skillCode}/test")
public RequestResult<SkillVersionVO> test(@PathVariable("skillCode") String skillCode, public RequestResult<SkillVersionVO> test(@PathVariable("skillCode") String skillCode,
@RequestBody SkillVersionSaveDTO request) { @RequestBody SkillVersionSaveDTO request) {
log.info("Skill测试执行开始skillCode={}, versionNo={}", skillCode, request.getVersionNo());
return RequestResult.success(skillVersionService.test(skillCode, request)); return RequestResult.success(skillVersionService.test(skillCode, request));
} }
@PostMapping("/{skillCode}/publish") @PostMapping("/{skillCode}/publish")
public RequestResult<Boolean> publish(@PathVariable("skillCode") String skillCode, public RequestResult<Boolean> publish(@PathVariable("skillCode") String skillCode,
@RequestBody SkillVersionSaveDTO request) { @RequestBody SkillVersionSaveDTO request) {
log.info("Skill发布开始skillCode={}, versionNo={}", skillCode, request.getVersionNo());
return RequestResult.success(skillVersionService.publish(skillCode, request)); return RequestResult.success(skillVersionService.publish(skillCode, request));
} }
@PostMapping("/{skillCode}/archive") @PostMapping("/{skillCode}/archive")
public RequestResult<Boolean> archive(@PathVariable("skillCode") String skillCode, public RequestResult<Boolean> archive(@PathVariable("skillCode") String skillCode,
@RequestParam("versionNo") Integer versionNo) { @RequestParam("versionNo") Integer versionNo) {
log.info("Skill归档开始skillCode={}, versionNo={}", skillCode, versionNo);
return RequestResult.success(skillVersionService.archive(skillCode, versionNo)); return RequestResult.success(skillVersionService.archive(skillCode, versionNo));
} }
} }

View File

@@ -5,6 +5,7 @@ import com.bruce.workflow.dto.ProjectSaveDTO;
import com.bruce.workflow.service.IProjectService; import com.bruce.workflow.service.IProjectService;
import com.bruce.workflow.vo.ProjectVO; import com.bruce.workflow.vo.ProjectVO;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
@@ -14,6 +15,12 @@ import org.springframework.web.bind.annotation.RestController;
import java.util.List; import java.util.List;
/**
* Studio 项目空间控制器。
* <p>
* 负责项目列表、详情和保存接口,对外统一返回 Project 相关 VO。
*/
@Slf4j
@RestController @RestController
@RequestMapping("/api/studio-projects") @RequestMapping("/api/studio-projects")
@RequiredArgsConstructor @RequiredArgsConstructor
@@ -23,16 +30,19 @@ public class ProjectController {
@GetMapping("/list") @GetMapping("/list")
public RequestResult<List<ProjectVO>> list() { public RequestResult<List<ProjectVO>> list() {
log.info("Studio项目列表查询开始");
return RequestResult.success(projectService.listProjects()); return RequestResult.success(projectService.listProjects());
} }
@GetMapping("/detail") @GetMapping("/detail")
public RequestResult<ProjectVO> detail(@RequestParam("id") Long id) { public RequestResult<ProjectVO> detail(@RequestParam("id") Long id) {
log.info("Studio项目详情查询开始projectId={}", id);
return RequestResult.success(projectService.getProject(id)); return RequestResult.success(projectService.getProject(id));
} }
@PostMapping("/save") @PostMapping("/save")
public RequestResult<Boolean> save(@RequestBody ProjectSaveDTO request) { public RequestResult<Boolean> save(@RequestBody ProjectSaveDTO request) {
log.info("Studio项目保存开始projectId={}, projectCode={}", request.getId(), request.getProjectCode());
return RequestResult.success(projectService.saveProject(request)); return RequestResult.success(projectService.saveProject(request));
} }
} }