You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

55 lines
1.6 KiB
Django/Jinja

You are working inside the gimme-job codebase. Create a complete site adapter for **{{ site_id }}**.
## Site Information
- **site_id**: `{{ site_id }}`
- **URL**: `{{ site_url }}`
## Captured Artifacts
{% if html_dump_path %}
- HTML dump: `{{ html_dump_path }}`
{% endif %}
{% if dom_snapshot_path %}
- DOM snapshot: `{{ dom_snapshot_path }}`
{% endif %}
{% if screenshot_path %}
- Screenshot: `{{ screenshot_path }}`
{% endif %}
## Global Search Defaults
```yaml
{{ global_config_yaml }}
```
## Base Adapter Interface (from gimme_job/adapters/base.py)
```python
{{ base_adapter_source }}
```
## Task
1. Read the HTML dump and/or DOM snapshot to understand the page structure.
2. Identify job card containers and field selectors.
3. Generate all 4 required files:
- `sites/{{ site_id }}.yaml`
- `gimme_job/adapters/{{ site_id }}.py`
- `tests/adapters/test_{{ site_id }}.py`
- `workspace/manifests/{{ site_id }}.learning-report.md`
4. Run `uv run pytest tests/adapters/test_{{ site_id }}.py -v` to verify.
5. If the test fails, fix the adapter and re-run once.
## Constraints
- Runtime must work WITHOUT AI.
- Use `ManifestDrivenAdapter` from `gimme_job/adapters/base.py` as the base class if the site follows standard patterns. Only subclass for custom logic.
- Register with `@register("{{ site_id }}")` from `gimme_job/adapters/registry.py`.
- Avoid `nth-child` selectors unless unavoidable.
- Prefer `aria-label`, `data-*`, semantic HTML.
- Handle zero results as `ZERO_RESULTS_EXPECTED` (not an error).
- Do NOT visit detail pages.
When done, write a brief learning report to `workspace/manifests/{{ site_id }}.learning-report.md`.