102 lines
3.2 KiB
Markdown
102 lines
3.2 KiB
Markdown
# Lokale ontwikkeling
|
|
|
|
## Ondersteunde omgeving
|
|
|
|
- Linux, macOS of WSL2;
|
|
- Python 3.12 of 3.13;
|
|
- `uv` voor dependency- en lockfilebeheer;
|
|
- optioneel Docker Compose voor PostgreSQL, Redis en de volledige stack.
|
|
|
|
Tests gebruiken standaard SQLite, eager Celery en een in-memory e-mailbackend. Ze hebben geen internet, Redis, mailbox of Ollama nodig.
|
|
|
|
## Eerste start
|
|
|
|
```bash
|
|
./scripts/codex_bootstrap.sh
|
|
uv run python manage.py runserver 0.0.0.0:8080
|
|
```
|
|
|
|
Het script maakt alleen voor lokale ontwikkeling een `.env`, installeert de gelockte dependencies, migreert, laadt veilige demodata en draait alle kwaliteitsgates. De lokaal aangemaakte login is `admin / codex-local-only`. Verwijder of wijzig deze credentials vóór ieder gedeeld of bereikbaar gebruik.
|
|
|
|
## Handmatige start
|
|
|
|
```bash
|
|
uv sync --all-groups
|
|
mkdir -p local media logs backups
|
|
cp .env.example .env
|
|
# Laat DATABASE_URL leeg voor SQLite en vul een unieke DJANGO_SECRET_KEY in.
|
|
uv run python manage.py migrate
|
|
uv run python manage.py bootstrap_instance --with-demo
|
|
uv run python manage.py runserver 0.0.0.0:8080
|
|
```
|
|
|
|
## Veelgebruikte commando's
|
|
|
|
```bash
|
|
make help
|
|
make test
|
|
make lint
|
|
make format
|
|
make verify
|
|
uv run python manage.py shell
|
|
uv run python manage.py seed_sources
|
|
uv run python manage.py import_job_fixture fixtures/pages/sample_jsonld_job.html
|
|
```
|
|
|
|
De volgende achtergrondprocessen zijn alleen nodig wanneer `CELERY_TASK_ALWAYS_EAGER=0`:
|
|
|
|
```bash
|
|
uv run celery -A config worker -l INFO -Q high,default,low
|
|
uv run celery -A config beat -l INFO
|
|
```
|
|
|
|
## Demo opnieuw opbouwen
|
|
|
|
```bash
|
|
./scripts/reset_demo.sh
|
|
```
|
|
|
|
Dit verwijdert uitsluitend `local/db.sqlite3`. Gebruik het niet tegen een productievolume.
|
|
|
|
## Testen per laag
|
|
|
|
```bash
|
|
uv run pytest tests/unit
|
|
uv run pytest tests/integration
|
|
uv run pytest tests/security
|
|
uv run pytest tests/integration/test_pipeline.py -q
|
|
uv run pytest --cov=apps --cov=config --cov-report=term-missing
|
|
```
|
|
|
|
Voeg bij iedere parserwijziging een bronfixture toe. Tests mogen alleen een echte netwerkcall doen in een expliciet afgescheiden, handmatig gestarte smoke-test die niet in CI draait.
|
|
|
|
## Databasewijzigingen
|
|
|
|
```bash
|
|
uv run python manage.py makemigrations
|
|
uv run python manage.py migrate
|
|
uv run python manage.py makemigrations --check --dry-run
|
|
```
|
|
|
|
Controleer de gegenereerde migratie. Voor destructieve wijzigingen is een ADR, datamigratie, herstelpad en back-uptest verplicht.
|
|
|
|
## Static files
|
|
|
|
In development serveert Django static files. Productie gebruikt `collectstatic` in de container en WhiteNoise:
|
|
|
|
```bash
|
|
uv run python manage.py collectstatic --noinput
|
|
```
|
|
|
|
## Troubleshooting
|
|
|
|
**`uv` ontbreekt:** installeer `uv` volgens de officiële instructies van de gekozen werkmachine en heropen de shell.
|
|
|
|
**Database lock op SQLite:** stop tweede web/workerprocessen of gebruik lokaal PostgreSQL voor parallel werk.
|
|
|
|
**Redis connection refused:** zet voor eenvoudige lokale runs `CELERY_TASK_ALWAYS_EAGER=1`, of start Redis/Compose.
|
|
|
|
**Geen digest zichtbaar:** met console-backend staat de mail in de terminal; controleer daarnaast `DigestOutbox` in Django admin.
|
|
|
|
**Bron wordt overgeslagen:** controleer `policy=allow`, een toegestane status, `next_run_at`, de domeinpolicy en de platformdenylist. Forceer nooit een fetch om een veiligheidsblokkade te omzeilen.
|