NihHealthController.java 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. package com.pharmacopoeia.nihaisha.controller;
  2. import com.pharmacopoeia.nihaisha.engine.OnnxEmbeddingEngine;
  3. import com.pharmacopoeia.nihaisha.engine.OnnxRerankerEngine;
  4. import org.springframework.http.ResponseEntity;
  5. import org.springframework.web.bind.annotation.GetMapping;
  6. import org.springframework.web.bind.annotation.RestController;
  7. import javax.sql.DataSource;
  8. import java.sql.Connection;
  9. import java.util.*;
  10. @RestController
  11. public class NihHealthController {
  12. private final DataSource dataSource;
  13. private final OnnxEmbeddingEngine embeddingEngine;
  14. private final OnnxRerankerEngine rerankerEngine;
  15. public NihHealthController(DataSource dataSource,
  16. OnnxEmbeddingEngine embeddingEngine,
  17. OnnxRerankerEngine rerankerEngine) {
  18. this.dataSource = dataSource;
  19. this.embeddingEngine = embeddingEngine;
  20. this.rerankerEngine = rerankerEngine;
  21. }
  22. /**
  23. * 倪海厦 RAG 健康检查
  24. * 药典项目已有 /health 端点,此端点提供倪海厦专属状态
  25. */
  26. @GetMapping("/api/v1/nihaisha/health")
  27. public ResponseEntity<Map<String, Object>> health() {
  28. Map<String, Object> status = new LinkedHashMap<>();
  29. status.put("status", "UP");
  30. status.put("timestamp", new Date().toString());
  31. // 数据库检查
  32. try (Connection conn = dataSource.getConnection()) {
  33. status.put("database", conn.isValid(3) ? "UP" : "DOWN");
  34. } catch (Exception e) {
  35. status.put("database", "DOWN");
  36. status.put("databaseError", e.getMessage());
  37. }
  38. // ONNX 模型状态
  39. status.put("embeddingModel", embeddingEngine.isLoaded() ? "LOADED" : "NOT_LOADED");
  40. status.put("rerankerModel", rerankerEngine.isLoaded() ? "LOADED" : "NOT_LOADED");
  41. return ResponseEntity.ok(status);
  42. }
  43. }