4.1 KiB
4.1 KiB
Режим: pipeline — Очередь URL (Second Brain)
Обрабатывает URL вакансий из data/pipeline.md. Пользователь добавляет URL когда угодно, затем запускает /career-ops pipeline для обработки.
Workflow
- Прочитать
data/pipeline.md→ найти- [ ]в секции "Ожидающие" (или "Pendientes" / "Pending" — pipeline.md может содержать заголовки на любом языке) - Для каждого URL:
a. Зарезервировать следующий
REPORT_NUMатомарно, запустивnode reserve-report-num.mjs(и освободить маркер, запустивnode reserve-report-num.mjs --release <num>после записи отчета) b. Извлечь JD через Playwright → WebFetch → WebSearch c. Если URL недоступен → пометить- [!]с заметкой, продолжить d. Выполнить auto-pipeline: Оценка A-F → Отчёт .md → PDF (если балл >= 3.0) → Трекер e. Переместить из "Ожидающие" в "Обработанные":- [x] #NNN | URL | Компания | Роль | Балл/5 | PDF ✅/❌ - Если 3+ URL, запустить агентов параллельно (Agent tool с
run_in_background). Ограничение: Playwright требует ресурсов — использовать только один Playwright-агент одновременно (правило_shared.md). Все прочие шаги (WebFetch, оценка, генерация отчёта) допускают полную параллелизацию. Рекомендуемая схема: один агент с Playwright верифицирует активность вакансии; остальные агенты получают JD через WebFetch и параллельно проводят оценку. - По завершении показать таблицу:
| # | Компания | Роль | Балл | PDF | Рекомендуемое действие |
Формат pipeline.md
## Ожидающие
- [ ] 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
- Playwright (предпочтительно):
browser_navigate+browser_snapshot. Работает со всеми SPA. - WebFetch (fallback): Для статических страниц.
- WebSearch (последний ресурс): Поиск на вторичных порталах.
Особые случаи:
- hh.ru: API доступен:
https://api.hh.ru/vacancies/{id}— JSON с полным описанием - LinkedIn: Может требовать логин → пометить
[!], попросить вставить текст - PDF: Если URL на PDF — прочитать через Read tool
local:префикс: Читать локальный файл. Пример:local:jds/company-role.md
Нумерация
- Запустить
node reserve-report-num.mjsдля атомарного резервирования следующего порядкового номера (stdout вернет{###}). - Записать файл отчета, используя этот номер.
- Освободить маркер, запустив
node reserve-report-num.mjs --release {###}после записи отчета.
Синхронизация источников
Перед обработкой URL:
node cv-sync-check.mjs
Если рассинхронизация — предупредить пользователя.