graph-dependency-analyzer 0.2.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- graph_dependency_analyzer-0.2.0/PKG-INFO +158 -0
- graph_dependency_analyzer-0.2.0/README.md +112 -0
- graph_dependency_analyzer-0.2.0/graph_dependency_analyzer.egg-info/PKG-INFO +158 -0
- graph_dependency_analyzer-0.2.0/graph_dependency_analyzer.egg-info/SOURCES.txt +106 -0
- graph_dependency_analyzer-0.2.0/graph_dependency_analyzer.egg-info/dependency_links.txt +1 -0
- graph_dependency_analyzer-0.2.0/graph_dependency_analyzer.egg-info/entry_points.txt +2 -0
- graph_dependency_analyzer-0.2.0/graph_dependency_analyzer.egg-info/requires.txt +24 -0
- graph_dependency_analyzer-0.2.0/graph_dependency_analyzer.egg-info/top_level.txt +1 -0
- graph_dependency_analyzer-0.2.0/pyproject.toml +199 -0
- graph_dependency_analyzer-0.2.0/setup.cfg +4 -0
- graph_dependency_analyzer-0.2.0/src/__init__.py +0 -0
- graph_dependency_analyzer-0.2.0/src/application/__init__.py +0 -0
- graph_dependency_analyzer-0.2.0/src/application/dtos/__init__.py +0 -0
- graph_dependency_analyzer-0.2.0/src/application/dtos/affected_component.py +59 -0
- graph_dependency_analyzer-0.2.0/src/application/dtos/batch_processing_result.py +17 -0
- graph_dependency_analyzer-0.2.0/src/application/dtos/impact_analysis_response.py +56 -0
- graph_dependency_analyzer-0.2.0/src/application/dtos/impact_query_request.py +38 -0
- graph_dependency_analyzer-0.2.0/src/application/dtos/index_batch_request.py +53 -0
- graph_dependency_analyzer-0.2.0/src/application/dtos/index_batch_response.py +72 -0
- graph_dependency_analyzer-0.2.0/src/application/dtos/index_result.py +20 -0
- graph_dependency_analyzer-0.2.0/src/application/dtos/repository_index_result.py +79 -0
- graph_dependency_analyzer-0.2.0/src/application/exceptions.py +41 -0
- graph_dependency_analyzer-0.2.0/src/application/services/__init__.py +0 -0
- graph_dependency_analyzer-0.2.0/src/application/services/file_scanner_service.py +258 -0
- graph_dependency_analyzer-0.2.0/src/application/services/progress_tracker.py +132 -0
- graph_dependency_analyzer-0.2.0/src/application/use_cases/__init__.py +0 -0
- graph_dependency_analyzer-0.2.0/src/application/use_cases/clear_all_data_use_case.py +180 -0
- graph_dependency_analyzer-0.2.0/src/application/use_cases/index_batch_use_case.py +153 -0
- graph_dependency_analyzer-0.2.0/src/application/use_cases/index_repository_use_case.py +683 -0
- graph_dependency_analyzer-0.2.0/src/application/use_cases/indexing_orchestrator.py +181 -0
- graph_dependency_analyzer-0.2.0/src/application/use_cases/list_repositories_use_case.py +84 -0
- graph_dependency_analyzer-0.2.0/src/cli.py +512 -0
- graph_dependency_analyzer-0.2.0/src/config/__init__.py +5 -0
- graph_dependency_analyzer-0.2.0/src/config/container.py +211 -0
- graph_dependency_analyzer-0.2.0/src/config/logging_config.py +123 -0
- graph_dependency_analyzer-0.2.0/src/config/settings.py +165 -0
- graph_dependency_analyzer-0.2.0/src/domain/__init__.py +0 -0
- graph_dependency_analyzer-0.2.0/src/domain/entities/__init__.py +20 -0
- graph_dependency_analyzer-0.2.0/src/domain/entities/ast_node.py +32 -0
- graph_dependency_analyzer-0.2.0/src/domain/entities/code_chunk.py +45 -0
- graph_dependency_analyzer-0.2.0/src/domain/entities/code_file.py +44 -0
- graph_dependency_analyzer-0.2.0/src/domain/entities/dependency_graph.py +110 -0
- graph_dependency_analyzer-0.2.0/src/domain/entities/repository.py +46 -0
- graph_dependency_analyzer-0.2.0/src/domain/exceptions.py +36 -0
- graph_dependency_analyzer-0.2.0/src/domain/repositories/__init__.py +22 -0
- graph_dependency_analyzer-0.2.0/src/domain/repositories/i_code_parser.py +50 -0
- graph_dependency_analyzer-0.2.0/src/domain/repositories/i_dependency_extractor.py +35 -0
- graph_dependency_analyzer-0.2.0/src/domain/repositories/i_embedding_provider.py +31 -0
- graph_dependency_analyzer-0.2.0/src/domain/repositories/i_graph_repository.py +78 -0
- graph_dependency_analyzer-0.2.0/src/domain/repositories/i_vector_repository.py +55 -0
- graph_dependency_analyzer-0.2.0/src/domain/services/__init__.py +8 -0
- graph_dependency_analyzer-0.2.0/src/domain/services/dependency_extractor.py +962 -0
- graph_dependency_analyzer-0.2.0/src/domain/services/semantic_chunk_builder.py +719 -0
- graph_dependency_analyzer-0.2.0/src/domain/value_objects/__init__.py +12 -0
- graph_dependency_analyzer-0.2.0/src/domain/value_objects/chunk_type.py +24 -0
- graph_dependency_analyzer-0.2.0/src/domain/value_objects/dependency_type.py +22 -0
- graph_dependency_analyzer-0.2.0/src/domain/value_objects/node_type.py +22 -0
- graph_dependency_analyzer-0.2.0/src/domain/value_objects/qualified_name.py +78 -0
- graph_dependency_analyzer-0.2.0/src/infrastructure/__init__.py +0 -0
- graph_dependency_analyzer-0.2.0/src/infrastructure/exceptions.py +41 -0
- graph_dependency_analyzer-0.2.0/src/infrastructure/external_apis/__init__.py +0 -0
- graph_dependency_analyzer-0.2.0/src/infrastructure/external_apis/ollama_embedding_provider.py +134 -0
- graph_dependency_analyzer-0.2.0/src/infrastructure/external_apis/openai_embedding_provider.py +231 -0
- graph_dependency_analyzer-0.2.0/src/infrastructure/parsing/__init__.py +20 -0
- graph_dependency_analyzer-0.2.0/src/infrastructure/parsing/config_file_parser.py +347 -0
- graph_dependency_analyzer-0.2.0/src/infrastructure/parsing/gradle_dependency_parser.py +159 -0
- graph_dependency_analyzer-0.2.0/src/infrastructure/parsing/groovy_parser.py +198 -0
- graph_dependency_analyzer-0.2.0/src/infrastructure/parsing/maven_dependency_parser.py +147 -0
- graph_dependency_analyzer-0.2.0/src/infrastructure/parsing/microfrontend_config_parser.py +242 -0
- graph_dependency_analyzer-0.2.0/src/infrastructure/parsing/npm_package_dependency_parser.py +255 -0
- graph_dependency_analyzer-0.2.0/src/infrastructure/parsing/python_parser.py +211 -0
- graph_dependency_analyzer-0.2.0/src/infrastructure/parsing/sql_schema_parser.py +658 -0
- graph_dependency_analyzer-0.2.0/src/infrastructure/parsing/tree_sitter_java_parser.py +434 -0
- graph_dependency_analyzer-0.2.0/src/infrastructure/parsing/tree_sitter_typescript_parser.py +600 -0
- graph_dependency_analyzer-0.2.0/src/infrastructure/persistence/__init__.py +0 -0
- graph_dependency_analyzer-0.2.0/src/infrastructure/persistence/graph_export_repository.py +443 -0
- graph_dependency_analyzer-0.2.0/src/infrastructure/persistence/neo4j_dependency_repository.py +657 -0
- graph_dependency_analyzer-0.2.0/src/infrastructure/persistence/qdrant_vector_repository.py +357 -0
- graph_dependency_analyzer-0.2.0/src/infrastructure/persistence/repository_relationship_repository.py +1312 -0
- graph_dependency_analyzer-0.2.0/src/presentation/__init__.py +0 -0
- graph_dependency_analyzer-0.2.0/src/presentation/api/__init__.py +0 -0
- graph_dependency_analyzer-0.2.0/src/presentation/api/rest/__init__.py +0 -0
- graph_dependency_analyzer-0.2.0/src/presentation/api/rest/exception_handlers.py +174 -0
- graph_dependency_analyzer-0.2.0/src/presentation/api/rest/main.py +80 -0
- graph_dependency_analyzer-0.2.0/src/presentation/api/rest/routers/__init__.py +5 -0
- graph_dependency_analyzer-0.2.0/src/presentation/api/rest/routers/admin.py +103 -0
- graph_dependency_analyzer-0.2.0/src/presentation/api/rest/routers/analysis.py +980 -0
- graph_dependency_analyzer-0.2.0/src/presentation/api/rest/routers/export.py +442 -0
- graph_dependency_analyzer-0.2.0/src/presentation/api/rest/routers/health.py +117 -0
- graph_dependency_analyzer-0.2.0/src/presentation/api/rest/routers/indexing.py +148 -0
- graph_dependency_analyzer-0.2.0/src/presentation/api/rest/routers/relationships.py +1089 -0
- graph_dependency_analyzer-0.2.0/tests/test_api_routers.py +122 -0
- graph_dependency_analyzer-0.2.0/tests/test_config.py +208 -0
- graph_dependency_analyzer-0.2.0/tests/test_config_file_parser.py +249 -0
- graph_dependency_analyzer-0.2.0/tests/test_dependencies.py +98 -0
- graph_dependency_analyzer-0.2.0/tests/test_dependency_extractor.py +378 -0
- graph_dependency_analyzer-0.2.0/tests/test_dependency_extractor_integration.py +298 -0
- graph_dependency_analyzer-0.2.0/tests/test_dependency_injection.py +171 -0
- graph_dependency_analyzer-0.2.0/tests/test_domain_entities.py +403 -0
- graph_dependency_analyzer-0.2.0/tests/test_e2e_batch_indexing.py +371 -0
- graph_dependency_analyzer-0.2.0/tests/test_gradle_dependency_parser.py +245 -0
- graph_dependency_analyzer-0.2.0/tests/test_logging.py +235 -0
- graph_dependency_analyzer-0.2.0/tests/test_maven_dependency_parser.py +249 -0
- graph_dependency_analyzer-0.2.0/tests/test_project_structure.py +128 -0
- graph_dependency_analyzer-0.2.0/tests/test_repository_interfaces.py +245 -0
- graph_dependency_analyzer-0.2.0/tests/test_semantic_chunk_builder.py +416 -0
- graph_dependency_analyzer-0.2.0/tests/test_tree_sitter_parser.py +294 -0
- graph_dependency_analyzer-0.2.0/tests/test_value_objects.py +218 -0
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: graph-dependency-analyzer
|
|
3
|
+
Version: 0.2.0
|
|
4
|
+
Summary: Knowledge Graph for multi-language repository dependency analysis — Java, TypeScript, Python, Groovy, SQL/Oracle
|
|
5
|
+
Author: Graph Project Team
|
|
6
|
+
License: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/ciandt/new-arch-explorer-service
|
|
8
|
+
Project-URL: Repository, https://github.com/ciandt/new-arch-explorer-service
|
|
9
|
+
Project-URL: Issues, https://github.com/ciandt/new-arch-explorer-service/issues
|
|
10
|
+
Keywords: dependency-analysis,knowledge-graph,tree-sitter,neo4j,qdrant,architecture,impact-analysis,java,typescript,python,groovy,oracle
|
|
11
|
+
Classifier: Development Status :: 4 - Beta
|
|
12
|
+
Classifier: Intended Audience :: Developers
|
|
13
|
+
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
|
|
14
|
+
Classifier: Topic :: Software Development :: Quality Assurance
|
|
15
|
+
Classifier: Programming Language :: Python :: 3
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
19
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
20
|
+
Classifier: Operating System :: OS Independent
|
|
21
|
+
Requires-Python: >=3.11
|
|
22
|
+
Description-Content-Type: text/markdown
|
|
23
|
+
Requires-Dist: fastapi>=0.115.0
|
|
24
|
+
Requires-Dist: uvicorn>=0.32.0
|
|
25
|
+
Requires-Dist: qdrant-client>=1.13.0
|
|
26
|
+
Requires-Dist: neo4j>=5.15.0
|
|
27
|
+
Requires-Dist: httpx>=0.28.0
|
|
28
|
+
Requires-Dist: structlog>=24.1.0
|
|
29
|
+
Requires-Dist: python-dotenv>=1.0.0
|
|
30
|
+
Requires-Dist: pydantic>=2.0.0
|
|
31
|
+
Requires-Dist: pydantic-settings>=2.0.0
|
|
32
|
+
Requires-Dist: dependency-injector>=4.41.0
|
|
33
|
+
Requires-Dist: tenacity>=8.2.0
|
|
34
|
+
Requires-Dist: tree-sitter>=0.25.2
|
|
35
|
+
Requires-Dist: tree-sitter-java>=0.23.5
|
|
36
|
+
Requires-Dist: tree-sitter-typescript>=0.23.2
|
|
37
|
+
Requires-Dist: lxml>=5.0.0
|
|
38
|
+
Requires-Dist: pyyaml>=6.0.0
|
|
39
|
+
Requires-Dist: click>=8.1.0
|
|
40
|
+
Provides-Extra: dev
|
|
41
|
+
Requires-Dist: pytest>=8.0.0; extra == "dev"
|
|
42
|
+
Requires-Dist: pytest-asyncio>=0.24.0; extra == "dev"
|
|
43
|
+
Requires-Dist: pytest-cov>=7.0.0; extra == "dev"
|
|
44
|
+
Requires-Dist: mypy>=1.8.0; extra == "dev"
|
|
45
|
+
Requires-Dist: ruff>=0.9.0; extra == "dev"
|
|
46
|
+
|
|
47
|
+
# Graph Project - Dependency Analysis System
|
|
48
|
+
|
|
49
|
+
## 📍 Project Location
|
|
50
|
+
|
|
51
|
+
**Path**: `C:\DevWorkspace\Graph Project\`
|
|
52
|
+
|
|
53
|
+
## 🎯 Purpose
|
|
54
|
+
|
|
55
|
+
Sistema de análise de dependências de código com Clean Architecture para repositórios Java.
|
|
56
|
+
|
|
57
|
+
Este é um **novo projeto independente** que implementa:
|
|
58
|
+
- 🔍 Análise AST com Tree-sitter para extração de estruturas de código
|
|
59
|
+
- 🔗 Detecção de dependências internas (código-para-código) e externas (APIs, DBs, bibliotecas)
|
|
60
|
+
- 📊 Armazenamento de grafo de dependências no Neo4j para análise de impacto
|
|
61
|
+
- 🧠 Geração de embeddings (OpenAI) e armazenamento no Qdrant para busca semântica
|
|
62
|
+
- 🚀 Processamento paralelo de múltiplos repositórios
|
|
63
|
+
|
|
64
|
+
## 🏗️ Architecture
|
|
65
|
+
|
|
66
|
+
Clean Architecture com 4 camadas:
|
|
67
|
+
|
|
68
|
+
```
|
|
69
|
+
src/
|
|
70
|
+
├── domain/ # 💎 Entities, Value Objects, Interfaces
|
|
71
|
+
│ ├── entities/
|
|
72
|
+
│ ├── value_objects/
|
|
73
|
+
│ ├── repositories/
|
|
74
|
+
│ └── services/
|
|
75
|
+
├── application/ # ⚙️ Use Cases, DTOs, Services
|
|
76
|
+
│ ├── use_cases/
|
|
77
|
+
│ ├── dtos/
|
|
78
|
+
│ └── services/
|
|
79
|
+
├── infrastructure/ # 🔧 Adaptadores (Qdrant, Neo4j, OpenAI, Tree-sitter)
|
|
80
|
+
│ ├── parsing/
|
|
81
|
+
│ ├── persistence/
|
|
82
|
+
│ └── external_apis/
|
|
83
|
+
└── presentation/ # 🌐 Controllers, Routers FastAPI
|
|
84
|
+
└── api/
|
|
85
|
+
└── rest/
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## 🛠️ Technology Stack
|
|
89
|
+
|
|
90
|
+
- **Language**: Python 3.11+
|
|
91
|
+
- **Framework**: FastAPI
|
|
92
|
+
- **AST Parsing**: Tree-sitter + tree-sitter-java
|
|
93
|
+
- **Graph DB**: Neo4j 5.15+
|
|
94
|
+
- **Vector DB**: Qdrant 1.13+
|
|
95
|
+
- **Embeddings**: OpenAI text-embedding-3-small (1536 dims)
|
|
96
|
+
- **Build Tools**: Maven/Gradle parsing
|
|
97
|
+
|
|
98
|
+
## 🎓 Phase 1 Scope
|
|
99
|
+
|
|
100
|
+
- ✅ **Language Support**: Java only
|
|
101
|
+
- ✅ **Analysis**: Static (deterministic) - NO AI/LLM
|
|
102
|
+
- ✅ **Dependencies**: Internal + External (APIs, DBs, libraries)
|
|
103
|
+
- ✅ **Storage**: Dual (Neo4j graph + Qdrant vectors)
|
|
104
|
+
|
|
105
|
+
## 🚀 Future Phases
|
|
106
|
+
|
|
107
|
+
- 🔮 Phase 2: Multi-language (Python, JS/TS, Go, C#)
|
|
108
|
+
- 🔮 Phase 3: Advanced features (code quality, architectural patterns, complexity metrics)
|
|
109
|
+
|
|
110
|
+
## 📚 Documentation
|
|
111
|
+
|
|
112
|
+
- **Specifications**: `.sdd/specs/clean-architecture-batch-indexing/`
|
|
113
|
+
- `requirements.md` - Functional requirements
|
|
114
|
+
- `design.md` - Technical design
|
|
115
|
+
- `tasks.md` - Implementation tasks
|
|
116
|
+
- `research.md` - Research findings
|
|
117
|
+
|
|
118
|
+
## 🚀 Quick Start
|
|
119
|
+
|
|
120
|
+
**Ver guia completo:** [QUICKSTART.md](./QUICKSTART.md)
|
|
121
|
+
|
|
122
|
+
```bash
|
|
123
|
+
# 1. Configurar .env
|
|
124
|
+
copy .env.example .env
|
|
125
|
+
# Editar .env com OPENAI_API_KEY
|
|
126
|
+
|
|
127
|
+
# 2. Subir Docker
|
|
128
|
+
docker-compose up -d
|
|
129
|
+
|
|
130
|
+
# 3. Instalar dependências
|
|
131
|
+
pip install -e .
|
|
132
|
+
|
|
133
|
+
# 4. Iniciar API
|
|
134
|
+
uvicorn src.presentation.api.rest.main:app --reload --port 8000
|
|
135
|
+
|
|
136
|
+
# 5. Testar
|
|
137
|
+
# Abrir http://localhost:8000/docs
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
## 🧪 Testing
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
# Run all tests
|
|
144
|
+
pytest tests/ -v
|
|
145
|
+
|
|
146
|
+
# Run with coverage
|
|
147
|
+
pytest tests/ --cov=src --cov-report=html
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
## 📋 Status
|
|
151
|
+
|
|
152
|
+
**Current Phase**: Setup & Implementation
|
|
153
|
+
**Task Progress**: See `tasks.md` for detailed progress
|
|
154
|
+
|
|
155
|
+
---
|
|
156
|
+
|
|
157
|
+
**Created**: 2026-06-30
|
|
158
|
+
**Specification**: clean-architecture-batch-indexing
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
# Graph Project - Dependency Analysis System
|
|
2
|
+
|
|
3
|
+
## 📍 Project Location
|
|
4
|
+
|
|
5
|
+
**Path**: `C:\DevWorkspace\Graph Project\`
|
|
6
|
+
|
|
7
|
+
## 🎯 Purpose
|
|
8
|
+
|
|
9
|
+
Sistema de análise de dependências de código com Clean Architecture para repositórios Java.
|
|
10
|
+
|
|
11
|
+
Este é um **novo projeto independente** que implementa:
|
|
12
|
+
- 🔍 Análise AST com Tree-sitter para extração de estruturas de código
|
|
13
|
+
- 🔗 Detecção de dependências internas (código-para-código) e externas (APIs, DBs, bibliotecas)
|
|
14
|
+
- 📊 Armazenamento de grafo de dependências no Neo4j para análise de impacto
|
|
15
|
+
- 🧠 Geração de embeddings (OpenAI) e armazenamento no Qdrant para busca semântica
|
|
16
|
+
- 🚀 Processamento paralelo de múltiplos repositórios
|
|
17
|
+
|
|
18
|
+
## 🏗️ Architecture
|
|
19
|
+
|
|
20
|
+
Clean Architecture com 4 camadas:
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
src/
|
|
24
|
+
├── domain/ # 💎 Entities, Value Objects, Interfaces
|
|
25
|
+
│ ├── entities/
|
|
26
|
+
│ ├── value_objects/
|
|
27
|
+
│ ├── repositories/
|
|
28
|
+
│ └── services/
|
|
29
|
+
├── application/ # ⚙️ Use Cases, DTOs, Services
|
|
30
|
+
│ ├── use_cases/
|
|
31
|
+
│ ├── dtos/
|
|
32
|
+
│ └── services/
|
|
33
|
+
├── infrastructure/ # 🔧 Adaptadores (Qdrant, Neo4j, OpenAI, Tree-sitter)
|
|
34
|
+
│ ├── parsing/
|
|
35
|
+
│ ├── persistence/
|
|
36
|
+
│ └── external_apis/
|
|
37
|
+
└── presentation/ # 🌐 Controllers, Routers FastAPI
|
|
38
|
+
└── api/
|
|
39
|
+
└── rest/
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## 🛠️ Technology Stack
|
|
43
|
+
|
|
44
|
+
- **Language**: Python 3.11+
|
|
45
|
+
- **Framework**: FastAPI
|
|
46
|
+
- **AST Parsing**: Tree-sitter + tree-sitter-java
|
|
47
|
+
- **Graph DB**: Neo4j 5.15+
|
|
48
|
+
- **Vector DB**: Qdrant 1.13+
|
|
49
|
+
- **Embeddings**: OpenAI text-embedding-3-small (1536 dims)
|
|
50
|
+
- **Build Tools**: Maven/Gradle parsing
|
|
51
|
+
|
|
52
|
+
## 🎓 Phase 1 Scope
|
|
53
|
+
|
|
54
|
+
- ✅ **Language Support**: Java only
|
|
55
|
+
- ✅ **Analysis**: Static (deterministic) - NO AI/LLM
|
|
56
|
+
- ✅ **Dependencies**: Internal + External (APIs, DBs, libraries)
|
|
57
|
+
- ✅ **Storage**: Dual (Neo4j graph + Qdrant vectors)
|
|
58
|
+
|
|
59
|
+
## 🚀 Future Phases
|
|
60
|
+
|
|
61
|
+
- 🔮 Phase 2: Multi-language (Python, JS/TS, Go, C#)
|
|
62
|
+
- 🔮 Phase 3: Advanced features (code quality, architectural patterns, complexity metrics)
|
|
63
|
+
|
|
64
|
+
## 📚 Documentation
|
|
65
|
+
|
|
66
|
+
- **Specifications**: `.sdd/specs/clean-architecture-batch-indexing/`
|
|
67
|
+
- `requirements.md` - Functional requirements
|
|
68
|
+
- `design.md` - Technical design
|
|
69
|
+
- `tasks.md` - Implementation tasks
|
|
70
|
+
- `research.md` - Research findings
|
|
71
|
+
|
|
72
|
+
## 🚀 Quick Start
|
|
73
|
+
|
|
74
|
+
**Ver guia completo:** [QUICKSTART.md](./QUICKSTART.md)
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
# 1. Configurar .env
|
|
78
|
+
copy .env.example .env
|
|
79
|
+
# Editar .env com OPENAI_API_KEY
|
|
80
|
+
|
|
81
|
+
# 2. Subir Docker
|
|
82
|
+
docker-compose up -d
|
|
83
|
+
|
|
84
|
+
# 3. Instalar dependências
|
|
85
|
+
pip install -e .
|
|
86
|
+
|
|
87
|
+
# 4. Iniciar API
|
|
88
|
+
uvicorn src.presentation.api.rest.main:app --reload --port 8000
|
|
89
|
+
|
|
90
|
+
# 5. Testar
|
|
91
|
+
# Abrir http://localhost:8000/docs
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
## 🧪 Testing
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
# Run all tests
|
|
98
|
+
pytest tests/ -v
|
|
99
|
+
|
|
100
|
+
# Run with coverage
|
|
101
|
+
pytest tests/ --cov=src --cov-report=html
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
## 📋 Status
|
|
105
|
+
|
|
106
|
+
**Current Phase**: Setup & Implementation
|
|
107
|
+
**Task Progress**: See `tasks.md` for detailed progress
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
**Created**: 2026-06-30
|
|
112
|
+
**Specification**: clean-architecture-batch-indexing
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: graph-dependency-analyzer
|
|
3
|
+
Version: 0.2.0
|
|
4
|
+
Summary: Knowledge Graph for multi-language repository dependency analysis — Java, TypeScript, Python, Groovy, SQL/Oracle
|
|
5
|
+
Author: Graph Project Team
|
|
6
|
+
License: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/ciandt/new-arch-explorer-service
|
|
8
|
+
Project-URL: Repository, https://github.com/ciandt/new-arch-explorer-service
|
|
9
|
+
Project-URL: Issues, https://github.com/ciandt/new-arch-explorer-service/issues
|
|
10
|
+
Keywords: dependency-analysis,knowledge-graph,tree-sitter,neo4j,qdrant,architecture,impact-analysis,java,typescript,python,groovy,oracle
|
|
11
|
+
Classifier: Development Status :: 4 - Beta
|
|
12
|
+
Classifier: Intended Audience :: Developers
|
|
13
|
+
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
|
|
14
|
+
Classifier: Topic :: Software Development :: Quality Assurance
|
|
15
|
+
Classifier: Programming Language :: Python :: 3
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
19
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
20
|
+
Classifier: Operating System :: OS Independent
|
|
21
|
+
Requires-Python: >=3.11
|
|
22
|
+
Description-Content-Type: text/markdown
|
|
23
|
+
Requires-Dist: fastapi>=0.115.0
|
|
24
|
+
Requires-Dist: uvicorn>=0.32.0
|
|
25
|
+
Requires-Dist: qdrant-client>=1.13.0
|
|
26
|
+
Requires-Dist: neo4j>=5.15.0
|
|
27
|
+
Requires-Dist: httpx>=0.28.0
|
|
28
|
+
Requires-Dist: structlog>=24.1.0
|
|
29
|
+
Requires-Dist: python-dotenv>=1.0.0
|
|
30
|
+
Requires-Dist: pydantic>=2.0.0
|
|
31
|
+
Requires-Dist: pydantic-settings>=2.0.0
|
|
32
|
+
Requires-Dist: dependency-injector>=4.41.0
|
|
33
|
+
Requires-Dist: tenacity>=8.2.0
|
|
34
|
+
Requires-Dist: tree-sitter>=0.25.2
|
|
35
|
+
Requires-Dist: tree-sitter-java>=0.23.5
|
|
36
|
+
Requires-Dist: tree-sitter-typescript>=0.23.2
|
|
37
|
+
Requires-Dist: lxml>=5.0.0
|
|
38
|
+
Requires-Dist: pyyaml>=6.0.0
|
|
39
|
+
Requires-Dist: click>=8.1.0
|
|
40
|
+
Provides-Extra: dev
|
|
41
|
+
Requires-Dist: pytest>=8.0.0; extra == "dev"
|
|
42
|
+
Requires-Dist: pytest-asyncio>=0.24.0; extra == "dev"
|
|
43
|
+
Requires-Dist: pytest-cov>=7.0.0; extra == "dev"
|
|
44
|
+
Requires-Dist: mypy>=1.8.0; extra == "dev"
|
|
45
|
+
Requires-Dist: ruff>=0.9.0; extra == "dev"
|
|
46
|
+
|
|
47
|
+
# Graph Project - Dependency Analysis System
|
|
48
|
+
|
|
49
|
+
## 📍 Project Location
|
|
50
|
+
|
|
51
|
+
**Path**: `C:\DevWorkspace\Graph Project\`
|
|
52
|
+
|
|
53
|
+
## 🎯 Purpose
|
|
54
|
+
|
|
55
|
+
Sistema de análise de dependências de código com Clean Architecture para repositórios Java.
|
|
56
|
+
|
|
57
|
+
Este é um **novo projeto independente** que implementa:
|
|
58
|
+
- 🔍 Análise AST com Tree-sitter para extração de estruturas de código
|
|
59
|
+
- 🔗 Detecção de dependências internas (código-para-código) e externas (APIs, DBs, bibliotecas)
|
|
60
|
+
- 📊 Armazenamento de grafo de dependências no Neo4j para análise de impacto
|
|
61
|
+
- 🧠 Geração de embeddings (OpenAI) e armazenamento no Qdrant para busca semântica
|
|
62
|
+
- 🚀 Processamento paralelo de múltiplos repositórios
|
|
63
|
+
|
|
64
|
+
## 🏗️ Architecture
|
|
65
|
+
|
|
66
|
+
Clean Architecture com 4 camadas:
|
|
67
|
+
|
|
68
|
+
```
|
|
69
|
+
src/
|
|
70
|
+
├── domain/ # 💎 Entities, Value Objects, Interfaces
|
|
71
|
+
│ ├── entities/
|
|
72
|
+
│ ├── value_objects/
|
|
73
|
+
│ ├── repositories/
|
|
74
|
+
│ └── services/
|
|
75
|
+
├── application/ # ⚙️ Use Cases, DTOs, Services
|
|
76
|
+
│ ├── use_cases/
|
|
77
|
+
│ ├── dtos/
|
|
78
|
+
│ └── services/
|
|
79
|
+
├── infrastructure/ # 🔧 Adaptadores (Qdrant, Neo4j, OpenAI, Tree-sitter)
|
|
80
|
+
│ ├── parsing/
|
|
81
|
+
│ ├── persistence/
|
|
82
|
+
│ └── external_apis/
|
|
83
|
+
└── presentation/ # 🌐 Controllers, Routers FastAPI
|
|
84
|
+
└── api/
|
|
85
|
+
└── rest/
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## 🛠️ Technology Stack
|
|
89
|
+
|
|
90
|
+
- **Language**: Python 3.11+
|
|
91
|
+
- **Framework**: FastAPI
|
|
92
|
+
- **AST Parsing**: Tree-sitter + tree-sitter-java
|
|
93
|
+
- **Graph DB**: Neo4j 5.15+
|
|
94
|
+
- **Vector DB**: Qdrant 1.13+
|
|
95
|
+
- **Embeddings**: OpenAI text-embedding-3-small (1536 dims)
|
|
96
|
+
- **Build Tools**: Maven/Gradle parsing
|
|
97
|
+
|
|
98
|
+
## 🎓 Phase 1 Scope
|
|
99
|
+
|
|
100
|
+
- ✅ **Language Support**: Java only
|
|
101
|
+
- ✅ **Analysis**: Static (deterministic) - NO AI/LLM
|
|
102
|
+
- ✅ **Dependencies**: Internal + External (APIs, DBs, libraries)
|
|
103
|
+
- ✅ **Storage**: Dual (Neo4j graph + Qdrant vectors)
|
|
104
|
+
|
|
105
|
+
## 🚀 Future Phases
|
|
106
|
+
|
|
107
|
+
- 🔮 Phase 2: Multi-language (Python, JS/TS, Go, C#)
|
|
108
|
+
- 🔮 Phase 3: Advanced features (code quality, architectural patterns, complexity metrics)
|
|
109
|
+
|
|
110
|
+
## 📚 Documentation
|
|
111
|
+
|
|
112
|
+
- **Specifications**: `.sdd/specs/clean-architecture-batch-indexing/`
|
|
113
|
+
- `requirements.md` - Functional requirements
|
|
114
|
+
- `design.md` - Technical design
|
|
115
|
+
- `tasks.md` - Implementation tasks
|
|
116
|
+
- `research.md` - Research findings
|
|
117
|
+
|
|
118
|
+
## 🚀 Quick Start
|
|
119
|
+
|
|
120
|
+
**Ver guia completo:** [QUICKSTART.md](./QUICKSTART.md)
|
|
121
|
+
|
|
122
|
+
```bash
|
|
123
|
+
# 1. Configurar .env
|
|
124
|
+
copy .env.example .env
|
|
125
|
+
# Editar .env com OPENAI_API_KEY
|
|
126
|
+
|
|
127
|
+
# 2. Subir Docker
|
|
128
|
+
docker-compose up -d
|
|
129
|
+
|
|
130
|
+
# 3. Instalar dependências
|
|
131
|
+
pip install -e .
|
|
132
|
+
|
|
133
|
+
# 4. Iniciar API
|
|
134
|
+
uvicorn src.presentation.api.rest.main:app --reload --port 8000
|
|
135
|
+
|
|
136
|
+
# 5. Testar
|
|
137
|
+
# Abrir http://localhost:8000/docs
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
## 🧪 Testing
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
# Run all tests
|
|
144
|
+
pytest tests/ -v
|
|
145
|
+
|
|
146
|
+
# Run with coverage
|
|
147
|
+
pytest tests/ --cov=src --cov-report=html
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
## 📋 Status
|
|
151
|
+
|
|
152
|
+
**Current Phase**: Setup & Implementation
|
|
153
|
+
**Task Progress**: See `tasks.md` for detailed progress
|
|
154
|
+
|
|
155
|
+
---
|
|
156
|
+
|
|
157
|
+
**Created**: 2026-06-30
|
|
158
|
+
**Specification**: clean-architecture-batch-indexing
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
README.md
|
|
2
|
+
pyproject.toml
|
|
3
|
+
graph_dependency_analyzer.egg-info/PKG-INFO
|
|
4
|
+
graph_dependency_analyzer.egg-info/SOURCES.txt
|
|
5
|
+
graph_dependency_analyzer.egg-info/dependency_links.txt
|
|
6
|
+
graph_dependency_analyzer.egg-info/entry_points.txt
|
|
7
|
+
graph_dependency_analyzer.egg-info/requires.txt
|
|
8
|
+
graph_dependency_analyzer.egg-info/top_level.txt
|
|
9
|
+
src/__init__.py
|
|
10
|
+
src/cli.py
|
|
11
|
+
src/application/__init__.py
|
|
12
|
+
src/application/exceptions.py
|
|
13
|
+
src/application/dtos/__init__.py
|
|
14
|
+
src/application/dtos/affected_component.py
|
|
15
|
+
src/application/dtos/batch_processing_result.py
|
|
16
|
+
src/application/dtos/impact_analysis_response.py
|
|
17
|
+
src/application/dtos/impact_query_request.py
|
|
18
|
+
src/application/dtos/index_batch_request.py
|
|
19
|
+
src/application/dtos/index_batch_response.py
|
|
20
|
+
src/application/dtos/index_result.py
|
|
21
|
+
src/application/dtos/repository_index_result.py
|
|
22
|
+
src/application/services/__init__.py
|
|
23
|
+
src/application/services/file_scanner_service.py
|
|
24
|
+
src/application/services/progress_tracker.py
|
|
25
|
+
src/application/use_cases/__init__.py
|
|
26
|
+
src/application/use_cases/clear_all_data_use_case.py
|
|
27
|
+
src/application/use_cases/index_batch_use_case.py
|
|
28
|
+
src/application/use_cases/index_repository_use_case.py
|
|
29
|
+
src/application/use_cases/indexing_orchestrator.py
|
|
30
|
+
src/application/use_cases/list_repositories_use_case.py
|
|
31
|
+
src/config/__init__.py
|
|
32
|
+
src/config/container.py
|
|
33
|
+
src/config/logging_config.py
|
|
34
|
+
src/config/settings.py
|
|
35
|
+
src/domain/__init__.py
|
|
36
|
+
src/domain/exceptions.py
|
|
37
|
+
src/domain/entities/__init__.py
|
|
38
|
+
src/domain/entities/ast_node.py
|
|
39
|
+
src/domain/entities/code_chunk.py
|
|
40
|
+
src/domain/entities/code_file.py
|
|
41
|
+
src/domain/entities/dependency_graph.py
|
|
42
|
+
src/domain/entities/repository.py
|
|
43
|
+
src/domain/repositories/__init__.py
|
|
44
|
+
src/domain/repositories/i_code_parser.py
|
|
45
|
+
src/domain/repositories/i_dependency_extractor.py
|
|
46
|
+
src/domain/repositories/i_embedding_provider.py
|
|
47
|
+
src/domain/repositories/i_graph_repository.py
|
|
48
|
+
src/domain/repositories/i_vector_repository.py
|
|
49
|
+
src/domain/services/__init__.py
|
|
50
|
+
src/domain/services/dependency_extractor.py
|
|
51
|
+
src/domain/services/semantic_chunk_builder.py
|
|
52
|
+
src/domain/value_objects/__init__.py
|
|
53
|
+
src/domain/value_objects/chunk_type.py
|
|
54
|
+
src/domain/value_objects/dependency_type.py
|
|
55
|
+
src/domain/value_objects/node_type.py
|
|
56
|
+
src/domain/value_objects/qualified_name.py
|
|
57
|
+
src/infrastructure/__init__.py
|
|
58
|
+
src/infrastructure/exceptions.py
|
|
59
|
+
src/infrastructure/external_apis/__init__.py
|
|
60
|
+
src/infrastructure/external_apis/ollama_embedding_provider.py
|
|
61
|
+
src/infrastructure/external_apis/openai_embedding_provider.py
|
|
62
|
+
src/infrastructure/parsing/__init__.py
|
|
63
|
+
src/infrastructure/parsing/config_file_parser.py
|
|
64
|
+
src/infrastructure/parsing/gradle_dependency_parser.py
|
|
65
|
+
src/infrastructure/parsing/groovy_parser.py
|
|
66
|
+
src/infrastructure/parsing/maven_dependency_parser.py
|
|
67
|
+
src/infrastructure/parsing/microfrontend_config_parser.py
|
|
68
|
+
src/infrastructure/parsing/npm_package_dependency_parser.py
|
|
69
|
+
src/infrastructure/parsing/python_parser.py
|
|
70
|
+
src/infrastructure/parsing/sql_schema_parser.py
|
|
71
|
+
src/infrastructure/parsing/tree_sitter_java_parser.py
|
|
72
|
+
src/infrastructure/parsing/tree_sitter_typescript_parser.py
|
|
73
|
+
src/infrastructure/persistence/__init__.py
|
|
74
|
+
src/infrastructure/persistence/graph_export_repository.py
|
|
75
|
+
src/infrastructure/persistence/neo4j_dependency_repository.py
|
|
76
|
+
src/infrastructure/persistence/qdrant_vector_repository.py
|
|
77
|
+
src/infrastructure/persistence/repository_relationship_repository.py
|
|
78
|
+
src/presentation/__init__.py
|
|
79
|
+
src/presentation/api/__init__.py
|
|
80
|
+
src/presentation/api/rest/__init__.py
|
|
81
|
+
src/presentation/api/rest/exception_handlers.py
|
|
82
|
+
src/presentation/api/rest/main.py
|
|
83
|
+
src/presentation/api/rest/routers/__init__.py
|
|
84
|
+
src/presentation/api/rest/routers/admin.py
|
|
85
|
+
src/presentation/api/rest/routers/analysis.py
|
|
86
|
+
src/presentation/api/rest/routers/export.py
|
|
87
|
+
src/presentation/api/rest/routers/health.py
|
|
88
|
+
src/presentation/api/rest/routers/indexing.py
|
|
89
|
+
src/presentation/api/rest/routers/relationships.py
|
|
90
|
+
tests/test_api_routers.py
|
|
91
|
+
tests/test_config.py
|
|
92
|
+
tests/test_config_file_parser.py
|
|
93
|
+
tests/test_dependencies.py
|
|
94
|
+
tests/test_dependency_extractor.py
|
|
95
|
+
tests/test_dependency_extractor_integration.py
|
|
96
|
+
tests/test_dependency_injection.py
|
|
97
|
+
tests/test_domain_entities.py
|
|
98
|
+
tests/test_e2e_batch_indexing.py
|
|
99
|
+
tests/test_gradle_dependency_parser.py
|
|
100
|
+
tests/test_logging.py
|
|
101
|
+
tests/test_maven_dependency_parser.py
|
|
102
|
+
tests/test_project_structure.py
|
|
103
|
+
tests/test_repository_interfaces.py
|
|
104
|
+
tests/test_semantic_chunk_builder.py
|
|
105
|
+
tests/test_tree_sitter_parser.py
|
|
106
|
+
tests/test_value_objects.py
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
fastapi>=0.115.0
|
|
2
|
+
uvicorn>=0.32.0
|
|
3
|
+
qdrant-client>=1.13.0
|
|
4
|
+
neo4j>=5.15.0
|
|
5
|
+
httpx>=0.28.0
|
|
6
|
+
structlog>=24.1.0
|
|
7
|
+
python-dotenv>=1.0.0
|
|
8
|
+
pydantic>=2.0.0
|
|
9
|
+
pydantic-settings>=2.0.0
|
|
10
|
+
dependency-injector>=4.41.0
|
|
11
|
+
tenacity>=8.2.0
|
|
12
|
+
tree-sitter>=0.25.2
|
|
13
|
+
tree-sitter-java>=0.23.5
|
|
14
|
+
tree-sitter-typescript>=0.23.2
|
|
15
|
+
lxml>=5.0.0
|
|
16
|
+
pyyaml>=6.0.0
|
|
17
|
+
click>=8.1.0
|
|
18
|
+
|
|
19
|
+
[dev]
|
|
20
|
+
pytest>=8.0.0
|
|
21
|
+
pytest-asyncio>=0.24.0
|
|
22
|
+
pytest-cov>=7.0.0
|
|
23
|
+
mypy>=1.8.0
|
|
24
|
+
ruff>=0.9.0
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
src
|