127 lines
4.6 KiB
Markdown
127 lines
4.6 KiB
Markdown
# BPMSoft CRM — RAG поиск по коду
|
||
|
||
Семантический поиск по кодовой базе проекта `C:\Work\BPMSoft\crm`.
|
||
Стек: **Qdrant** (векторная БД) + **Ollama nomic-embed-text** (эмбеддинги) + **MCP сервер** для Claude Code + **веб-интерфейс**.
|
||
|
||
---
|
||
|
||
## Инфраструктура
|
||
|
||
| Компонент | Адрес | Описание |
|
||
|-----------|-------|----------|
|
||
| Qdrant | `http://localhost:6333` | Векторная БД, Docker |
|
||
| Qdrant Dashboard | `http://localhost:6333/dashboard` | Веб-интерфейс Qdrant |
|
||
| Ollama | `http://localhost:11434` | Локальные эмбеддинги |
|
||
| Веб-поиск | `http://localhost:8765` | Интерфейс поиска по коду |
|
||
|
||
Файлы проекта: `C:\Work\BPMSoft\crm\.rag\`
|
||
|
||
---
|
||
|
||
## Команды
|
||
|
||
### Запустить Qdrant (Docker)
|
||
```bash
|
||
docker start qdrant
|
||
```
|
||
> Контейнер настроен на `restart=always` — стартует автоматически вместе с Docker.
|
||
|
||
### Запустить веб-интерфейс поиска
|
||
```bash
|
||
python C:\Work\BPMSoft\crm\.rag\search_server.py
|
||
```
|
||
Открыть в браузере: `http://localhost:8765`
|
||
|
||
### Инкрементальное обновление индекса (только изменённые файлы)
|
||
```bash
|
||
python C:\Work\BPMSoft\crm\.rag\index_incremental.py
|
||
```
|
||
Запускать после изменения/добавления файлов в проекте. Работает быстро — обрабатывает только изменённые файлы.
|
||
|
||
### Полная переиндексация (редко, при крупных изменениях)
|
||
```bash
|
||
python C:\Work\BPMSoft\crm\.rag\index_codebase.py --reindex
|
||
```
|
||
> Занимает несколько часов — пересоздаёт всю коллекцию с нуля.
|
||
|
||
---
|
||
|
||
## Что индексируется
|
||
|
||
### C# (`BPMSoft.Configuration`)
|
||
- Методы, конструкторы → тип `method`
|
||
- Классы, структуры → тип `class` / `struct`
|
||
- Интерфейсы → тип `interface`
|
||
- Enum'ы → тип `enum`
|
||
- XML doc-комментарии включены в контекст
|
||
|
||
### JavaScript (`BPMSoft.Configuration`)
|
||
- ExtJS BPMSoft схемы (`/Schemas/*.js`) → тип `extjs_schema`
|
||
- Методы внутри схем → тип `extjs_method`
|
||
- Mixins схем → тип `extjs_mixins`
|
||
- Angular/src файлы (`/Files/src/js/`) → `function`, `js_class`, `js_method`
|
||
- Autogenerated JS платформы (`/Autogenerated/Src/`)
|
||
|
||
### Исключено из индекса
|
||
- `SvnPackages/` — SVN пакеты
|
||
- `node_modules/`, `bin/`, `obj/`, `dist/`
|
||
- `*.min.js` — минифицированные файлы
|
||
- Angular build cache `/.nx/`
|
||
|
||
---
|
||
|
||
## MCP сервер для Claude Code
|
||
|
||
Зарегистрирован автоматически. Доступные инструменты:
|
||
|
||
| Инструмент | Описание |
|
||
|------------|----------|
|
||
| `search_codebase` | Семантический поиск по запросу |
|
||
| `find_symbol` | Поиск класса/метода по имени |
|
||
| `find_in_namespace` | Все символы в namespace или по пути |
|
||
|
||
### Регистрация вручную (если слетела)
|
||
```bash
|
||
claude mcp add --transport stdio crm-rag -- cmd /c python C:\Work\BPMSoft\crm\.rag\mcp_server.py
|
||
```
|
||
|
||
### Проверить статус
|
||
```bash
|
||
claude mcp list
|
||
```
|
||
|
||
---
|
||
|
||
## Файлы
|
||
|
||
```
|
||
C:\Work\BPMSoft\crm\.rag\
|
||
├── index_codebase.py # Полная индексация
|
||
├── index_incremental.py # Инкрементальное обновление
|
||
├── mcp_server.py # MCP сервер для Claude Code
|
||
├── search_server.py # Веб-сервер поиска (FastAPI)
|
||
├── search_ui.html # Интерфейс поиска
|
||
├── file_hashes.json # Хеши файлов для инкрементальной индексации
|
||
└── qdrant_storage/ # Данные Qdrant (Docker volume)
|
||
```
|
||
|
||
---
|
||
|
||
## Зависимости Python
|
||
|
||
```bash
|
||
pip install qdrant-client tree-sitter tree-sitter-c-sharp tree-sitter-javascript requests fastapi uvicorn mcp
|
||
```
|
||
|
||
---
|
||
|
||
## Управление Docker контейнером
|
||
|
||
```bash
|
||
docker ps | grep qdrant # статус
|
||
docker stop qdrant # остановить
|
||
docker start qdrant # запустить
|
||
docker logs qdrant # логи
|
||
docker restart qdrant # перезапустить
|
||
```
|