You've already forked DataMate
实现功能: - Neo4j Docker Compose 配置(社区版,端口 7474/7687,数据持久化) - Makefile 新增 Neo4j 命令(neo4j-up/down/logs/shell) - knowledge-graph-service Spring Boot 服务(完整的 DDD 分层架构) - kg_extraction Python 模块(基于 LangChain LLMGraphTransformer) 技术实现: - Neo4j 配置:环境变量化密码,统一默认值 datamate123 - Java 服务: - Domain: GraphEntity, GraphRelation 实体模型 - Repository: Spring Data Neo4j,支持 graphId 范围查询 - Service: 业务逻辑,graphId 双重校验,查询限流 - Controller: REST API,UUID 格式校验 - Exception: 实现 ErrorCode 接口,统一异常体系 - Python 模块: - KnowledgeGraphExtractor 类 - 支持异步/同步/批量抽取 - 支持 schema-guided 模式 - 兼容 OpenAI 及自部署模型 关键设计: - graphId 权限边界:所有实体操作都在正确的 graphId 范围内 - 查询限流:depth 和 limit 参数受配置约束 - 异常处理:统一使用 BusinessException + ErrorCode - 凭据管理:环境变量化,避免硬编码 - 双重防御:Controller 格式校验 + Service 业务校验 代码审查: - 经过 3 轮 Codex 审查和 2 轮 Claude 修复 - 所有 P0 和 P1 问题已解决 - 编译通过,无阻塞性问题 文件变更: - 新增:Neo4j 配置、knowledge-graph-service(11 个 Java 文件)、kg_extraction(3 个 Python 文件) - 修改:Makefile、pom.xml、application.yml、pyproject.toml
40 lines
1.0 KiB
YAML
40 lines
1.0 KiB
YAML
services:
|
|
datamate-neo4j:
|
|
container_name: datamate-neo4j
|
|
image: neo4j:5-community
|
|
restart: on-failure
|
|
ports:
|
|
- "7474:7474" # HTTP (Neo4j Browser)
|
|
- "7687:7687" # Bolt protocol
|
|
environment:
|
|
NEO4J_AUTH: neo4j/${NEO4J_PASSWORD:-datamate123}
|
|
# Memory configuration
|
|
NEO4J_server_memory_heap_initial__size: 512m
|
|
NEO4J_server_memory_heap_max__size: 1G
|
|
NEO4J_server_memory_pagecache_size: 512m
|
|
# Enable APOC plugin
|
|
NEO4J_PLUGINS: '["apoc"]'
|
|
# Transaction timeout
|
|
NEO4J_db_transaction_timeout: 60s
|
|
volumes:
|
|
- neo4j_data:/data
|
|
- neo4j_logs:/logs
|
|
networks: [ datamate ]
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "wget --no-verbose --tries=1 --spider http://localhost:7474 || exit 1"]
|
|
interval: 15s
|
|
timeout: 10s
|
|
retries: 5
|
|
start_period: 30s
|
|
|
|
volumes:
|
|
neo4j_data:
|
|
name: datamate-neo4j-data-volume
|
|
neo4j_logs:
|
|
name: datamate-neo4j-logs-volume
|
|
|
|
networks:
|
|
datamate:
|
|
driver: bridge
|
|
name: datamate-network
|