package com.ruoyi.system.service;

import java.util.Map;
import com.ruoyi.system.domain.neo4j.GraphNode;

/**
 * 洪水知识图谱Service接口
 *
 * @author jackeyhuang
 * @version 1.0.0
 * @date 2025-01-27
 */
public interface IFloodKnowledgeGraphService
{
    /**
     * 获取知识图谱数据
     *
     * @return 图谱数据（包含节点和边）
     */
    public Map<String, Object> getGraphData();

    /**
     * 根据节点ID查询节点详情
     *
     * @param nodeId 节点ID
     * @return 节点信息
     */
    public GraphNode getNodeById(Long nodeId);

    /**
     * 根据标签查询节点
     *
     * @param label 节点标签
     * @return 节点列表
     */
    public java.util.List<GraphNode> getNodesByLabel(String label);

    /**
     * 根据类型查询节点
     *
     * @param type 节点类型
     * @return 节点列表
     */
    public java.util.List<GraphNode> getNodesByType(String type);

    /**
     * 查询两个节点之间的最短路径
     *
     * @param startNodeId 起始节点ID
     * @param endNodeId 结束节点ID
     * @param maxDepth 最大深度
     * @return 路径信息
     */
    public Map<String, Object> findShortestPath(Long startNodeId, Long endNodeId, int maxDepth);

    /**
     * 获取所有知识图谱列表（按类型分组）
     *
     * @return 图谱列表，包含图谱标识、名称、节点数量等信息
     */
    public java.util.List<Map<String, Object>> getAllGraphs();

    /**
     * 根据图谱标识获取特定图谱数据
     *
     * @param graphKey 图谱标识（如类型：concept、location、event，或标签关键词）
     * @return 图谱数据（包含节点和边）
     */
    public Map<String, Object> getGraphDataByKey(String graphKey);
}
