You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: AGENT.md
+58-9Lines changed: 58 additions & 9 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,10 +2,11 @@
2
2
3
3
## Project Overview
4
4
5
-
FastAPI backend service that exposes a LlamaIndex Knowledge Graph query engine over HTTPS. Called by a Kotlin LangGraph4j agent as a tool. Neo4j is the graph store.
5
+
Hybrid RAG system with a FastAPI backend and Vue 3 frontend. The backend exposes a LlamaIndex Knowledge Graph query engine over HTTPS, called by a Kotlin LangGraph4j agent as a tool. Neo4j is the graph store, pgvector handles vector embeddings, and Celery processes ingestion and deletion asynchronously. The UI provides document upload with interactive knowledge graph visualization, a query interface with retrieval mode selection, and document management.
6
6
7
7
## Tech Stack
8
8
9
+
### Backend
9
10
-**Framework**: FastAPI + Uvicorn
10
11
-**Validation**: Pydantic + Pydantic-Settings
11
12
-**Logging**: Structlog (JSON in prod, console in debug)
@@ -18,21 +19,44 @@ FastAPI backend service that exposes a LlamaIndex Knowledge Graph query engine o
poetry run celery -A app.worker.celery_app:celery_app worker --loglevel=info
59
83
```
60
84
85
+
### Frontend
86
+
87
+
All commands run from `ui/`.
88
+
89
+
```bash
90
+
# Install dependencies
91
+
pnpm install
92
+
93
+
# Run dev server
94
+
pnpm dev
95
+
96
+
# Type check + production build
97
+
pnpm build
98
+
99
+
# Lint
100
+
pnpm lint
101
+
```
102
+
61
103
## Code Conventions
62
104
105
+
### Backend
63
106
-**Line length**: 100 characters
64
107
-**Type hints**: Required on all functions (strict mypy)
65
108
-**Modern Python syntax**: Use `list[str]` not `List[str]`, etc.
@@ -70,9 +113,15 @@ poetry run celery -A app.worker.celery_app:celery_app worker --loglevel=info
70
113
-**Logging**: Use structlog, not `print()` or stdlib `logging` directly
71
114
-**Docstrings**: PEP 257 — all public modules, classes, functions, and methods must have docstrings. Use triple double quotes. One-line for simple cases, multi-line with summary + blank line + description for complex ones.
72
115
116
+
### Frontend
117
+
-**Components in `src/components/ui/`** are auto-generated by shadcn-vue and excluded from linting — do not edit directly
118
+
-**Composition API only** — use `<script setup lang="ts">`, no Options API
119
+
-**Import paths**: Use `@/` alias (maps to `src/`)
120
+
73
121
## Testing
74
122
75
123
- Tests live in `tests/` mirroring the app structure
76
124
- Use `pytest-asyncio` with mode `auto`
77
125
- Use `httpx.AsyncClient` with `ASGITransport` for endpoint tests
78
126
- Fixtures defined in `tests/conftest.py`
127
+
-`conftest.py` sets `CELERY_BROKER_URL=""` at import time to force in-memory rate limiter storage — no Redis or Docker required to run tests
0 commit comments