How luo-yangsiqi/cad- works
This is a CAD knowledge-base application: users upload drawings, inspect revisions and evidence, and ask natural-language questions answered through semantic retrieval plus PostgreSQL verification. The graph preserves the documented DWG/OCR/Vision ingestion stages and the separate chat, exact-query, and hybrid-search capabilities. Several subsystem links are based on README descriptions because their implementations were not sampled; uncertain call wiring is omitted.
Main entry points: pipeline.py Upload orchestrator · hybrid_retrieval_service.py Hybrid retrieval · App.tsx Workspace pages · main.py FastAPI routes
Components 28
Workspace experience
- Workspace pages
frontend/src/app/App.tsx - Drawing views
frontend/src/pages/DrawingWorkspacePage.tsx - Upload status
frontend/src/pages/UploadJobPage.tsx - API client
frontend/src/services/api.ts - FastAPI routes
app/api/main.py - Chat endpoint
app/api/chat.py
Drawing ingestion
- Upload orchestrator
app/ingestion/pipeline.py - DWG extraction
scripts/extract_cad.py - OCR processing
scripts/process_cad_ocr_batch.py - CAD OCR alignment
scripts/align_cad_ocr.py - Vision observations
scripts/run_vision.py - Feature fusion
scripts/build_unified_features.py - Fact import
scripts/db/import_all.py - Upload artifacts
Query and retrieval
- Chat orchestration
app/services/chat_service.py - Whitelisted tools
app/tools/cad_query_tools.py - Query facade
app/services/cad_query_service.py - Hybrid retrieval
app/retrieval/hybrid_retrieval_service.py - Constraint planner
app/retrieval/query_planner.py
Persistence and indexing
- Semantic search
app/semantic/service.py - Drawing repository
app/repositories/drawing_repository.py - Job repository
app/repositories/ingestion_repository.py - PostgreSQL
app/db/connection.py - Qdrant vectors
Model integrations
- DeepSeek text API
- Vision client
app/llm/deepseek_vision_client.py - DeepSeek Vision API
Other components
- CAD user
Connections 33
- CAD user → Workspace pages: uses
- Workspace pages → Drawing views: routes to
- Workspace pages → Upload status: routes to
- Drawing views → API client: requests data
- Upload status → API client: submits and polls
- API client → FastAPI routes: HTTP requests
- FastAPI routes → Upload orchestrator: starts upload
- Upload orchestrator → Upload artifacts: saves artifacts
- Upload orchestrator → Job repository: creates and updates jobs
- Upload orchestrator → DWG extraction: runs extraction
- Upload orchestrator → OCR processing: runs OCR
- Upload orchestrator → CAD OCR alignment: runs alignment
- Upload orchestrator → Vision observations: optionally runs
- Upload orchestrator → Feature fusion: builds features
- Upload orchestrator → Fact import: imports facts
- Upload orchestrator → Semantic search: indexes chunks
- DWG extraction → Upload artifacts: writes structured output
- Vision observations → Vision client: requests analysis
- Vision client → DeepSeek Vision API: sends image
- FastAPI routes → Chat endpoint: mounts routes
- Chat endpoint → Chat orchestration: dispatches chat
- Chat orchestration → DeepSeek text API: requests response
- Chat orchestration → Whitelisted tools: executes selected tools
- Whitelisted tools → Query facade: delegates validated queries
- Query facade → Drawing repository: reads exact facts
- Query facade → Hybrid retrieval: dispatches hybrid search
- Hybrid retrieval → Constraint planner: builds constraints
- Hybrid retrieval → Semantic search: recalls candidates
- Hybrid retrieval → Drawing repository: verifies and audits
- Semantic search → Qdrant vectors: queries vectors
- Drawing repository → PostgreSQL: reads and writes
- Job repository → PostgreSQL: persists job metadata
- Fact import → PostgreSQL: imports drawing facts