diff --git a/BPMSoft CRM — RAG поиск по коду.md b/BPMSoft CRM — RAG поиск по коду.md new file mode 100644 index 0000000..32f86cc --- /dev/null +++ b/BPMSoft CRM — RAG поиск по коду.md @@ -0,0 +1,126 @@ +# 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 # перезапустить +```