4.6 KiB
4.6 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. 🚦 Playwright verification gate (обов'язково):browser_navigate→browser_snapshot. Визначити: title + description + Apply button = active; тільки footer/navbar без JD = closed/inactive. Якщо inactive → позначити- [!] URL — Вакансія закрита/неактивна, пропустити цей URL, перейти до наступного. c. Витягти JD з того ж Playwright snapshot (або WebFetch/WebSearch як fallback, якщо Playwright вже підтвердив активність) d. Якщо URL недоступний (login wall, 404, timeout) → позначити- [!]з приміткою, продовжити e. Виконати auto-pipeline: Оцінка A-F → Звіт .md → PDF (якщо бал >= 3.0) → Трекер f. Перемістити з "Очікуючі" в "Оброблені":- [x] #NNN | URL | Компанія | Роль | Бал/5 | PDF ✅/❌ - Якщо 3+ URL, паралелізація з Agent tool (
run_in_background). Обмеження: тільки один Playwright-агент одночасно (правило_shared.md). Рекомендована схема: один агент послідовно проходить verification gate для кожного URL через Playwright; після підтвердження активності — запускає окремих агентів для evaluation/report/PDF (WebFetch, оцінка, генерація звіту паралельно). Жоден агент не починає evaluation, поки Playwright gate не підтвердив, що вакансія активна. - По завершенні показати таблицю:
| # | Компанія | Роль | Бал | PDF | Рекомендована дія |
Формат pipeline.md
## Очікуючі
- [ ] https://jobs.example.com/posting/123
- [ ] https://dou.ua/vacancies/company-role/ | Компанія | 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://djinni.co/jobs/123456 | BigCo | Backend | 2.1/5 | PDF ❌
Визначення JD з URL
- Playwright (переважно):
browser_navigate+browser_snapshot. Працює з усіма SPA. - WebFetch (fallback): Для статичних сторінок.
- WebSearch (останній ресурс): Пошук на вторинних порталах.
Особливі випадки:
- DOU.ua: Парсити сторінку вакансії через Playwright
- Djinni.co: Може вимагати логін → позначити
[!], попросити вставити текст - 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
Якщо розсинхронізація — попередити користувача.