Files
obsidian/BPMSoft CRM — RAG поиск по коду.md

127 lines
4.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 # перезапустить
```