# Meeting Room — Архитектура и решения ## Концепция Meeting-room — это CLI-инструмент (как git, terraform). Устанавливается глобально, работает в рабочей директории `.meeting-room/`. ``` projects/ ├── meeting-room/ ← исходники пакета (pip install -e .) ├── .meeting-room/ ← рабочая директория обсуждений (git-репа) │ ├── config.yaml ← конфиг, переопределяет дефолтный │ ├── scenarios/ ← сценарии .md │ ├── sessions/ ← результаты (json, gitignored) │ └── .gitignore └── my-project/ ← любой проект, можно указать как workdir ``` ## Принятые решения ### Сценарии — Markdown с YAML frontmatter YAML неудобен для многострочного текста. Markdown естественно поддерживает заголовки, списки, код, выделение. Frontmatter — для метаданных (участники, раунды). ### Multi-provider архитектура Каждая роль привязана к конкретному API-провайдеру и модели через `provider` + `model`. Позволяет смешивать модели: GPT-4o, Claude, Qwen, Gemini в одном обсуждении. ### API-ключи через env-переменные Формат: `MEETING_ROOM__API_KEY`, `MEETING_ROOM__BASE_URL`. В config.yaml можно `${ENV_VAR}` плейсхолдеры. Ключи не утекают в гит. ### Система инструментов (tools) OpenAI function calling: read_file, list_files, search_in_files, write_file, web_search, web_fetch, run_command. Привязаны к ролям через наборы: all, files, readonly, web, none. ### Три бэкенда - custom — свой Python, round-robin с tool support, из коробки - autogen — Microsoft AutoGen - crewai — CrewAI ### Workspace (.meeting-room) `meeting-room init` создаёт структуру в CWD. CLI ищет config.yaml: 1. CLI --config arg 2. .meeting-room/config.yaml (поиск от CWD вверх) 3. Встроенный package config ### Сохранение результатов `--save` — JSON файл в sessions/ с таймстемпом, именем сценария, полной историей. ## Структура пакета ``` meeting_room/ ├── __init__.py ├── cli.py — CLI (init, run, list, save) ├── api_client.py — мультипровайдерный OpenAI-совместимый клиент ├── tools.py — инструменты (файлы, веб, shell) ├── scenario_loader.py — загрузчик .md/.yaml ├── config/ │ └── config.yaml — дефолтный конфиг (без ключей) ├── scenarios/ │ └── example-saas.md — встроенный пример └── backends/ ├── custom/ ├── autogen/ └── crewai/ ``` ## Gitea Репозиторий: git.kzntsv.site/OpeItcLoc03/meeting-room Токен: env GITEA_TOKEN, без admin-грантов.