Для того чтобы раскидать задачи между тремя людьми, я распределю их по сложности и приоритету. ### Человек 1 (Основной фокус на поиске): #### `search/main.py` * **P0**: Переключить основной query на `question.search_text` с fallback на `question.text` * **P0**: Подключить `question.variants` как дополнительные query-варианты * **P0**: Подключить `question.hyde` как дополнительные dense-запросы * **P0**: Подключить `question.keywords` как основу для sparse-запросов * **P0**: Перестать терять retrieval-кандидатов после rerank * **P0**: Дедуплицировать `message_ids` перед ответом * **P0**: Ограничить финальную выдачу до `top-50` * **P0**: Агрегировать score по `message_id` * **P2**: Использовать `entities.people` и `entities.emails` для boost или фильтрации * **P2**: Использовать `entities.documents`, `entities.names`, `entities.links` для lexical boost * **P2**: Использовать `date_range` для фильтрации по `metadata.start` и `metadata.end` * **P2**: Использовать `contains_quote` и `contains_forward` как сигналы ранжирования * **P2**: Добавить multi-query fusion в `Qdrant` * **P2**: Подобрать `prefetch`, `retrieve_k`, `rerank_limit` * **P3**: Добавить retry и timeout политику для dense/rerank HTTP вызовов --- ### Человек 2 (Основной фокус на индексации и разметке): #### `index/main.py` * **P1**: Перейти с символьного chunking на chunking по сообщениям * **P1**: Учитывать time gap при сборке чанков * **P1**: Маркировать в тексте `quote`, `forward`, автора сообщения и автора цитаты * **P1**: Развести `page_content`, `dense_content`, `sparse_content` * **P1**: Материализовать `sender_id` и `mentions` в индексируемый текст * **P1**: Разбирать `file_snippets` и вытаскивать имя файла, mime и url * **P1**: Разбирать `member_event` и превращать его в индексируемый текст #### `index/requirements.txt` и/или `search/requirements.txt` * **P4**: Добавить `razdel` * **P4**: Добавить `pymorphy3` * **P4**: Добавить `rapidfuzz` --- ### Человек 3 (Основной фокус на Docker и зависимостях): #### `docker-compose.yml` * **P3**: Привести локальный `docker-compose.yml` к схеме с `API_KEY` * **P3**: Добавить `--platform linux/amd64` в сборку образов #### `doc/` (новый файл с регрессионными вопросами) * **P3**: Зафиксировать набор локальных тестовых вопросов для проверки регрессий #### `search/requirements.txt` * **P4**: Добавить `python-dateutil` или `dateparser` * **P4**: Добавить `tenacity` --- Таким образом, задачи равномерно распределены по 3 участникам с учётом сложности и области фокуса.