refactor(logging): 补齐核心模块日志与中文注释约束
This commit is contained in:
@@ -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));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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切片向量服务初始化完成");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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切片服务初始化完成");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user