# Режим: pipeline — Очередь URL (Second Brain) Обрабатывает URL вакансий из `data/pipeline.md`. Пользователь добавляет URL когда угодно, затем запускает `/career-ops pipeline` для обработки. ## Workflow 1. **Прочитать** `data/pipeline.md` → найти `- [ ]` в секции "Ожидающие" (или "Pendientes" / "Pending" — pipeline.md может содержать заголовки на любом языке) 2. **Для каждого URL**: a. Зарезервировать следующий `REPORT_NUM` атомарно, запустив `node reserve-report-num.mjs` (и освободить маркер, запустив `node reserve-report-num.mjs --release ` после записи отчета) b. **Извлечь JD** через Playwright → WebFetch → WebSearch c. Если URL недоступен → пометить `- [!]` с заметкой, продолжить d. **Выполнить auto-pipeline**: Оценка A-F → Отчёт .md → PDF (если балл >= 3.0) → Трекер e. **Переместить из "Ожидающие" в "Обработанные"**: `- [x] #NNN | URL | Компания | Роль | Балл/5 | PDF ✅/❌` 3. **Если 3+ URL**, запустить агентов параллельно (Agent tool с `run_in_background`). **Ограничение:** Playwright требует ресурсов — использовать **только один** Playwright-агент одновременно (правило `_shared.md`). Все прочие шаги (WebFetch, оценка, генерация отчёта) допускают полную параллелизацию. Рекомендуемая схема: один агент с Playwright верифицирует активность вакансии; остальные агенты получают JD через WebFetch и параллельно проводят оценку. 4. **По завершении** показать таблицу: ``` | # | Компания | Роль | Балл | PDF | Рекомендуемое действие | ``` ## Формат pipeline.md ```markdown ## Ожидающие - [ ] https://jobs.example.com/posting/123 - [ ] https://hh.ru/vacancy/12345678 | Компания | Senior Backend - [!] https://private.url/job — Ошибка: требуется авторизация ## Обработанные - [x] #143 | https://jobs.example.com/posting/789 | Acme Corp | AI PM | 4.2/5 | PDF ✅ - [x] #144 | https://hh.ru/vacancy/87654321 | BigCo | Backend | 2.1/5 | PDF ❌ ``` ## Определение JD из URL 1. **Playwright (предпочтительно):** `browser_navigate` + `browser_snapshot`. Работает со всеми SPA. 2. **WebFetch (fallback):** Для статических страниц. 3. **WebSearch (последний ресурс):** Поиск на вторичных порталах. **Особые случаи:** - **hh.ru**: API доступен: `https://api.hh.ru/vacancies/{id}` — JSON с полным описанием - **LinkedIn**: Может требовать логин → пометить `[!]`, попросить вставить текст - **PDF**: Если URL на PDF — прочитать через Read tool - **`local:` префикс**: Читать локальный файл. Пример: `local:jds/company-role.md` ## Нумерация 1. Запустить `node reserve-report-num.mjs` для атомарного резервирования следующего порядкового номера (stdout вернет `{###}`). 2. Записать файл отчета, используя этот номер. 3. Освободить маркер, запустив `node reserve-report-num.mjs --release {###}` после записи отчета. ## Синхронизация источников Перед обработкой URL: ```bash node cv-sync-check.mjs ``` Если рассинхронизация — предупредить пользователя.