Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 7 additions & 5 deletions validatie_samenwijzer/CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,10 +47,12 @@ uv run python scripts/seed_bulk.py # ~1000 studenten over geïndexeerde OERs (
./scripts/verwerk_oers.sh --preview # droge run
./scripts/verwerk_oers.sh # hernoem + indexeer

# Multi-machine setup: sync oeren vanuit Box + ingest + seed in één commando
./scripts/bootstrap.sh # volledige setup
./scripts/bootstrap.sh --skip-sync # alleen ingest + seed (oeren/ al lokaal)
./scripts/sync_oeren.sh # alleen rclone copy
# Multi-machine setup: sync oeren vanuit Box + ingest + bulk-seed in één commando
./scripts/bootstrap.sh # default = bulk-seed (~1000 studenten)
./scripts/bootstrap.sh --skip-sync # alleen ingest + seed (oeren/ al lokaal)
./scripts/bootstrap.sh --seed-minimal # 3+2 dev-demo i.p.v. bulk
./scripts/bootstrap.sh --skip-seed # geen testdata
./scripts/sync_oeren.sh # alleen rclone copy
```

## Omgeving
Expand Down Expand Up @@ -102,7 +104,7 @@ Tabs:
- **Sync oeren** — wrapper rond `scripts/sync_oeren.sh`.
- **Re-ingest** — scope-dropdown (alles/aeres/davinci/rijn_ijssel/talland/utrecht)
+ `--reset` checkbox.
- **Seed** — `seed.py` (basis-accounts) of `seed_bulk.py` (~1000 studenten).
- **Seed** — `seed_bulk.py` (~1000 studenten, default werkdata) of `seed.py` (3+2 dev-demo).

## Architectuur

Expand Down
60 changes: 32 additions & 28 deletions validatie_samenwijzer/app/pages/9_beheer.py
Original file line number Diff line number Diff line change
Expand Up @@ -147,25 +147,22 @@ def _run_in_placeholder(cmd: list[str], cwd: Path | None = None) -> None:
"Tijdens de run is de app niet bruikbaar; subprocess-output verschijnt hieronder."
)

col_skip_sync, col_skip_seed, col_bulk = st.columns(3)
with col_skip_sync:
skip_sync = st.checkbox(
"Skip sync",
value=False,
help="Sla `rclone copy` over (oeren/ is al up-to-date).",
)
with col_skip_seed:
skip_seed = st.checkbox(
"Skip seed",
value=False,
help="Geen testaccounts aanmaken.",
)
with col_bulk:
seed_bulk = st.checkbox(
"Seed bulk (~1000 studenten)",
value=False,
help="Naast basis-accounts ook `seed_bulk.py` draaien.",
)
seed_keuze = st.radio(
"Seed-data",
options=["bulk", "minimal", "geen"],
format_func=lambda v: {
"bulk": "Bulk (~1000 studenten over alle OERs) — default",
"minimal": "Minimaal (3 studenten + 2 mentoren, dev-demo)",
"geen": "Geen seed-data aanmaken",
}[v],
index=0,
horizontal=False,
)
skip_sync = st.checkbox(
"Skip oeren-sync (oeren/ is al up-to-date)",
value=False,
help="Sla `rclone copy` over en gebruik wat lokaal staat.",
)

bevestig = st.checkbox(
"Ja, ik weet dat dit de DB volledig herbouwt",
Expand All @@ -177,10 +174,10 @@ def _run_in_placeholder(cmd: list[str], cwd: Path | None = None) -> None:
cmd = ["bash", "scripts/bootstrap.sh"]
if skip_sync:
cmd.append("--skip-sync")
if skip_seed:
if seed_keuze == "minimal":
cmd.append("--seed-minimal")
elif seed_keuze == "geen":
cmd.append("--skip-seed")
if seed_bulk:
cmd.append("--seed-bulk")
_run_in_placeholder(cmd)


Expand Down Expand Up @@ -231,13 +228,20 @@ def _run_in_placeholder(cmd: list[str], cwd: Path | None = None) -> None:

col_a, col_b = st.columns(2)
with col_a:
st.markdown("**Basis (3 studenten + 2 mentoren)**")
st.markdown("**Bulk (~1000 studenten)** — default werkdata")
st.caption(
"Verdeelt 1000 studenten over de top OERs van alle 5 instellingen "
"met deterministische seed (RNG=2026). Vereist dat OERs eerst zijn geïngest."
)
if st.button("Run seed_bulk.py", type="primary"):
_run_in_placeholder(["uv", "run", "python", "scripts/seed_bulk.py"])
with col_b:
st.markdown("**Minimaal (3 + 2)** — dev-demo")
st.caption(
"Hardcoded subset: 2 instellingen, 2 OERs, 3 studenten, 2 mentoren. "
"Bedoeld voor handmatige UI-tests. Geen vervanging voor bulk-seed."
)
if st.button("Run seed.py"):
_run_in_placeholder(["uv", "run", "python", "scripts/seed.py"])
with col_b:
st.markdown("**Bulk (~1000 studenten over alle OERs)**")
st.caption("Vereist dat OERs eerst zijn geïngest.")
if st.button("Run seed_bulk.py"):
_run_in_placeholder(["uv", "run", "python", "scripts/seed_bulk.py"])

render_footer()
29 changes: 16 additions & 13 deletions validatie_samenwijzer/scripts/bootstrap.sh
Original file line number Diff line number Diff line change
@@ -1,23 +1,27 @@
#!/usr/bin/env bash
# Volledige machine-setup voor validatie_samenwijzer:
# 1. Sync oeren/ vanuit Box (rclone)
# 2. uv sync (incl. dev deps)
# 1. uv sync (incl. dev deps)
# 2. Sync oeren/ vanuit Box (rclone)
# 3. ingest --alles (bouw oeren.db op)
# 4. seed.py (basis-accounts)
# 4. seed_bulk.py (~1000 studenten over alle geïndexeerde OERs)
#
# Gebruik: ./scripts/bootstrap.sh [--skip-sync] [--skip-seed] [--seed-bulk]
# Gebruik:
# ./scripts/bootstrap.sh # default
# ./scripts/bootstrap.sh --skip-sync # oeren/ al lokaal
# ./scripts/bootstrap.sh --skip-seed # geen testdata aanmaken
# ./scripts/bootstrap.sh --seed-minimal # i.p.v. bulk: alleen seed.py (dev-demo)

set -euo pipefail

SKIP_SYNC=false
SKIP_SEED=false
SEED_BULK=false
SEED_MINIMAL=false

for arg in "$@"; do
case "$arg" in
--skip-sync) SKIP_SYNC=true ;;
--skip-seed) SKIP_SEED=true ;;
--seed-bulk) SEED_BULK=true ;;
--seed-minimal) SEED_MINIMAL=true ;;
*) echo "Onbekende optie: $arg"; exit 1 ;;
esac
done
Expand All @@ -44,15 +48,14 @@ uv run python -m validatie_samenwijzer.ingest --alles
if $SKIP_SEED; then
echo ""
echo "=== 4. Seed-data (overgeslagen via --skip-seed) ==="
else
elif $SEED_MINIMAL; then
echo ""
echo "=== 4. Basis-accounts ==="
echo "=== 4. Minimale dev-seed (3 studenten + 2 mentoren) ==="
uv run python scripts/seed.py
if $SEED_BULK; then
echo ""
echo "=== 4b. Bulk-seed (~1000 studenten) ==="
uv run python scripts/seed_bulk.py
fi
else
echo ""
echo "=== 4. Bulk-seed (~1000 studenten over alle geïndexeerde OERs) ==="
uv run python scripts/seed_bulk.py
fi

echo ""
Expand Down
Loading