| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- package com.pharmacopoeia.nihaisha.controller;
- import com.pharmacopoeia.nihaisha.engine.OnnxEmbeddingEngine;
- import com.pharmacopoeia.nihaisha.engine.OnnxRerankerEngine;
- import org.springframework.http.ResponseEntity;
- import org.springframework.web.bind.annotation.GetMapping;
- import org.springframework.web.bind.annotation.RestController;
- import javax.sql.DataSource;
- import java.sql.Connection;
- import java.util.*;
- @RestController
- public class NihHealthController {
- private final DataSource dataSource;
- private final OnnxEmbeddingEngine embeddingEngine;
- private final OnnxRerankerEngine rerankerEngine;
- public NihHealthController(DataSource dataSource,
- OnnxEmbeddingEngine embeddingEngine,
- OnnxRerankerEngine rerankerEngine) {
- this.dataSource = dataSource;
- this.embeddingEngine = embeddingEngine;
- this.rerankerEngine = rerankerEngine;
- }
- /**
- * 倪海厦 RAG 健康检查
- * 药典项目已有 /health 端点,此端点提供倪海厦专属状态
- */
- @GetMapping("/api/v1/nihaisha/health")
- public ResponseEntity<Map<String, Object>> health() {
- Map<String, Object> status = new LinkedHashMap<>();
- status.put("status", "UP");
- status.put("timestamp", new Date().toString());
- // 数据库检查
- try (Connection conn = dataSource.getConnection()) {
- status.put("database", conn.isValid(3) ? "UP" : "DOWN");
- } catch (Exception e) {
- status.put("database", "DOWN");
- status.put("databaseError", e.getMessage());
- }
- // ONNX 模型状态
- status.put("embeddingModel", embeddingEngine.isLoaded() ? "LOADED" : "NOT_LOADED");
- status.put("rerankerModel", rerankerEngine.isLoaded() ? "LOADED" : "NOT_LOADED");
- return ResponseEntity.ok(status);
- }
- }
|