update-graph.sh 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. #!/bin/bash
  2. # update-graph.sh — 增量更新知识图谱
  3. # 用法:
  4. # ./scripts/update-graph.sh # 更新前后端
  5. # ./scripts/update-graph.sh backend # 只更新后端
  6. # ./scripts/update-graph.sh frontend # 只更新前端
  7. #
  8. # 由 AI Agent 在完成代码修改后自动调用,或手动执行。
  9. set -euo pipefail
  10. ROOT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
  11. # 优先使用 PATH 中的 graphify;其次尝试本机常见 Python
  12. run_graphify() {
  13. if command -v graphify >/dev/null 2>&1; then
  14. graphify "$@"
  15. return
  16. fi
  17. local py
  18. for py in \
  19. "${GRAPHIFY_PYTHON:-}" \
  20. "$ROOT_DIR/backend/venv/bin/python" \
  21. "$(command -v python3 2>/dev/null || true)" \
  22. "/Users/zlwu/.pyenv/versions/3.12.13/bin/python"
  23. do
  24. [ -n "$py" ] && [ -x "$py" ] || continue
  25. if "$py" -m graphify --help >/dev/null 2>&1; then
  26. "$py" -m graphify "$@"
  27. return
  28. fi
  29. done
  30. echo "[graphify] 未找到可用的 graphify。请安装 CLI(如: pipx install graphifyy)或设置 GRAPHIFY_PYTHON。"
  31. exit 1
  32. }
  33. # 更新单个项目的图谱
  34. update_graph() {
  35. local name="$1"
  36. local label="$2"
  37. echo ""
  38. echo "=== 更新 ${label} 知识图谱 (${name}) ==="
  39. if [ ! -d "$ROOT_DIR/$name" ]; then
  40. echo "[graphify] 目录不存在: $ROOT_DIR/$name"
  41. return 1
  42. fi
  43. run_graphify update "$ROOT_DIR/$name" --force
  44. echo "[graphify] ${label} 图谱更新完成 ✓"
  45. }
  46. # ---- Main ----
  47. TARGET="${1:-all}"
  48. echo "╔══════════════════════════════════════╗"
  49. echo "║ shanxia2.0 知识图谱增量更新工具 ║"
  50. echo "╚══════════════════════════════════════╝"
  51. case "$TARGET" in
  52. backend)
  53. update_graph "backend" "后端"
  54. ;;
  55. frontend)
  56. update_graph "web-admin" "前端"
  57. ;;
  58. all|"")
  59. update_graph "backend" "后端"
  60. update_graph "web-admin" "前端"
  61. ;;
  62. *)
  63. echo "用法: $0 [backend|frontend|all]"
  64. exit 1
  65. ;;
  66. esac
  67. echo ""
  68. echo "✅ 知识图谱更新完毕。HTML 可视化: */graphify-out/graph.html"