init
Release Please / release-please (push) Failing after 4m2s
Web CI / web typecheck + build (push) Successful in 3m39s
CodeQL Analysis / Analyze (javascript-typescript) (push) Failing after 1h1m49s
CodeQL Analysis / Analyze (go) (push) Failing after 1h1m49s

This commit is contained in:
redlineo committed 2026-07-13 10:14:00 +03:00
commit d295c7f139
1527 files changed
+270726

No files matched your search

+58
View File
@@ -0,0 +1,58 @@
# Режим: 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 <num>` после записи отчета)
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
```
Если рассинхронизация — предупредить пользователя.