## Why Владелец работает в одном Jira-проекте AURORA и разграничивает свои проекты метками. Сейчас мост знает один такой проект — AWPCA (АРМ КА): базовая JQL `project = AURORA AND labels = AWPCA` и одна доска `board_id = 4216` зашиты в настройки. Нужен второй проект — STOCKS_DRRK — со своей доской Jira (возможно, канбан без спринтов) и своим репозиторием, откуда Claude ведёт его задачи через MCP. Дальше проектов может стать больше. Решения владельца 19.10.2026 (brainstorming, jira-hub#61): - **полноценный вариант**: проект — сущность хаба, а не фильтр поверх общей JQL; - у каждого проекта **своя доска Jira**, у неё может не быть спринтов (канбан); - **сессия Claude в репозитории проекта видит и меняет только задачи своего проекта**; связи между проектами не нужны; - **веб-приложение одно**, проект переключается выпадающим списком в шапке (вариант A из макетов), в его конце — «+ Новый проект…»; - проект заводит **человек из веб-приложения или Claude через MCP**; Claude затем сам прописывает в репозитории, с каким проектом работает его сессия; - **обновление из Jira — одним запросом по всем проектам**: метки всех проектов собираются в одну JQL; так и для автообновления, и для кнопки «Обновить из Jira», и для `refresh` из MCP; - **пока только создание проекта**: переименования и удаления нет. ## What Changes - **Проекты в хабе.** Новая таблица `project` (схема v4): метка Jira (ключ, не меняется), название, номер доски Jira (может отсутствовать), тип доски (`scrum` / `kanban`, определяет агент). Маршруты `GET /projects`, `POST /projects`. Миграция заводит проект AWPCA «АРМ КА» с доской 4216 из нынешних настроек. - **Базовая JQL собирается из проектов** — `project = AND labels in ("<метка>", …)`; настройки `base_jql` и `board_id` уходят из `setting`. Создание проекта ставит полный `refresh`. - **Разрез по проекту в API.** `GET /board?project=` и `GET /issues?project=` отдают задачи проекта и их соседей (задачи других меток, связанные с ними, и их эпики) с признаком `neighbor` относительно проекта. - **Пакет проекта.** `POST /batches` принимает `project`: хаб добавляет метку проекта в `ensure_issue`, запрещает чужие метки проектов и команды над задачами вне проекта; пакет помнит свой проект (`batch.project`). - **Спринты по доске проекта.** `ensure_sprint` получает `board_id` доски проекта задачи от хаба; на канбан-доске и без доски — 422 при постановке. `refresh` получает от хаба список досок проектов; агент собирает спринты со всех scrum-досок и сообщает тип досок, тип которых хабу ещё не известен. - **MCP с привязкой к проекту.** `jira-hub mcp --project <метка>`: инструменты задач и пакетов работают в разрезе проекта. Без привязки доступны только список и создание проектов и служебные инструменты. Новые инструменты `projects`, `project_create` (ответ — готовый фрагмент `.mcp.json` для репозитория проекта). - **Веб-приложение.** Выпадающий список проектов в шапке, форма «Новый проект», проект в адресе (`?project=`) и в памяти браузера; доска и список задач — по выбранному проекту; раскладка доски хранится отдельно для каждого проекта, раскладка AWPCA сохраняется. - **Агент v12** (отдельный PR в jira-agent): доски из параметров команд вместо настройки `board_id`, тип доски. ## Non-Goals - Переименование, удаление проекта, смена его доски — позже. - Свои для каждого проекта словари (`kind_labels`, `link_types`, `transitions_map`, `issue_types`, `closed_statuses`) — Jira-проект один, словари общие. - Проекты в других Jira-проектах (кроме `project_key` = AURORA). - Отдельное автообновление и отдельная кнопка «обновить» для одного проекта. - Перенос задачи из проекта в проект (смена метки проекта) командами в разрезе проекта. - Смена проекта внутри запущенной сессии MCP (только перезапуском с другим `--project`). ## Anti-Goals - Задача одного проекта получила метку другого (или осталась без метки своего) из-за того, что сессия Claude не знала, в каком она проекте. - AWPCA после выкатки потерял задачи, заметки, раскладку доски или историю синхронизаций. - Сессия в репозитории одного проекта по умолчанию видит и меняет задачи другого.