### Task 9: Фронтенд — кандидаты, действия, чёрный список, история **Files:** - Modify: `frontend/src/views/DiscoveryView.vue` **Interfaces:** - Consumes: Task 8 (store). - [ ] **Step 1: Табы панели задачи**: «В обработке» (`new`) / «На рассмотрении» (`review`) / «Вступили» (`joined`) / «Отклонены» (`rejected`) + «История» (лог). Бейджи счётчиков скрыты при 0. - [ ] **Step 2: Карточка кандидата**: название, @username, kind-иконка/метка (канал/группа/форум), метки marks (чипы: закрытая, не прочитан, участники/язык не подтверждены, мало сообщений), участники, «подходит X из N», кнопки «Вступить и мониторить» / «Отклонить» (только для review). Форум → раскрывающийся список topics («тема — подходит X из N»). - [ ] **Step 3: Чёрный список** (под списками или отдельный таб) — снять источник; «Настройки квот» — popover/inline с `discJoinLimit/discJoinDelayMin/discJoinDelayMax` + стоп-кран (PATCH /api/settings). - [ ] **Step 4: История** — лог задачи. - [ ] **Step 5: `npm run build`** — без ошибок; визуальная проверка основных сценариев (Task 10). ---