# Architect
> ๐๏ธ ๆถๆง่จญ่จ็ดฐ็ฏ่ๆ่กๆฑบ็ญใ
## ็ณป็ตฑๆถๆงๅ
```
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ MCP Client (Claude, Copilot CLI) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ stdio/SSE
โโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ MedVision MCP Server โ
โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ โ
โ โ Session โ โ Analysis โ โ Canvas โ โ
โ โ Tools โ โ Tools โ โ Tools โ โ
โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ โ
โ โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ Visual RAG Engine โ โ
โ โ RAD-DINO + FAISS + DenseNet (Mode B) โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ Model Registry โ โ
โ โ DenseNet โ RAD-DINO โ LLaVA-Med โ SAM3 โ ... โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Canvas UI โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ React + Fabric.js Interactive Workspace โ โ
โ โ - DICOM/Image Display โ โ
โ โ - Annotation Tools (Draw, Box, Polygon) โ โ
โ โ - AI Overlay (Segmentation, Heatmaps) โ โ
โ โ - Visual RAG Region Selection โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
```
## ๆ ธๅฟๆดๅ๏ผVisual RAG ร Canvas
> **User ๅ้ธๅๅ โ RAD-DINO ็ทจ็ขผ โ FAISS ๆชข็ดข โ External Agent ๅคๆท โ push_to_canvas**
```
Canvas (ๅ้ธ) โ MCP Server (RAG) โ Claude (ๅคๆท) โ Canvas (ๆจ่จ)
โ โ โ โ
โผ โผ โผ โผ
region embedding ๅ็ญ+ๆจ่จ ้กฏ็คบ็ตๆ
+ question + similar_cases ๆไปค
```
## ๆจก็ตไพ่ณด
```
presentation/server.py
โ
application/tools/*.py
application/tools/visual_rag.py โ NEW
โ
domain/services/*.py
โ
infrastructure/models/*.py
/persistence/*.py
/faiss_index/ โ NEW
```
## ๆ่ก้ธๅ
### MCP Server
- **FastMCP**: ็ฐกๅ MCP ๅฏฆไฝ
- **Transport**: stdio (Claude Desktop), SSE (web)
### Database
- **SQLAlchemy**: ORM
- **aiosqlite**: Async SQLite
- ่กจ: sessions, images, annotations, analysis_results, **cases, reports, diagnoses**
### AI Models (ๅทฒ้ฉ่ญ)
| Model | ็ๆ
| Format | ็จ้ |
|-------|------|--------|------|
| RAD-DINO | โ
Ready | HF/PyTorch | 768-dim ็ทจ็ขผ |
| DenseNet-121 | โ
Ready | PyTorch | 18 ็จฎ็
็ๅ้ก |
| FAISS | โ
Ready | faiss-cpu | ๅ้ๆชข็ดข |
| PSPNet | โ
Ready | PyTorch | ๅจๅฎๅๅฒ |
| LLaVA-Med | โ ๆชๆธฌ่ฉฆ | HF/vLLM | VQA |
| SAM3 | โ ๆชๆธฌ่ฉฆ | PyTorch | ไบๅๅๅฒ |
### Visual RAG ๅ
ไปถ
| ๅ
ไปถ | ่ฆๆ ผ | ๆง่ฝ |
|------|------|------|
| RAD-DINO | microsoft/rad-dino, 346MB | ~2s/img (GPU) |
| FAISS | L2 ่ท้ข, 768-dim | <1ms ๆชข็ดข |
| DenseNet | torchxrayvision | ~0.1s/img |
| Reference DB | SQLite + FAISS Index | 100K+ cases |
### Canvas UI
- **React 18**: Framework
- **Fabric.js 6**: Canvas
- **Vite**: Build tool
- **TailwindCSS**: Styling
## API ่จญ่จ
### MCP Tool ๅ้ก
1. **Session Tools**
- `create_session` โ `session_id`
- `load_image(session_id, path)` โ `image_id`
- `get_session_info(session_id)` โ session state
2. **Analysis Tools**
- `classify_xray(image_id)` โ findings[]
- `medical_vqa(image_id, question)` โ answer
- `segment_region(image_id, prompt)` โ mask
3. **Visual RAG Tools** (NEW)
- `search_similar_cases(image, region, top_k)` โ similar_cases[]
- `analyze_with_rag(image, region, question)` โ RAG context
- `analyze_selected_region(session_id, region, question, actions)` โ comprehensive result
4. **Canvas Tools**
- `sync_canvas_state(session_id, state)` โ ack
- `push_to_canvas(session_id, overlay)` โ ack
- `request_user_input(session_id, prompt)` โ user_input
5. **Agent Tools**
- `invoke_medical_agent(instruction)` โ result
- `get_agent_capabilities()` โ capabilities[]
---
*Last Updated: 2026-02-02*