set dotenv-load

lookup_db := "artifacts/lookups.db"
personnel_db := "artifacts/personnel.db"
entities_db := "../deped-entity/artifacts/entities.db"
personnel_csv := "data/portal/2026-04-29-personnel.csv"
esf7_teaching := "data/esf7/ESF7 DATA SY2024-25 - Teaching Personnel _ 20260414.csv"
esf7_non_teaching := "data/esf7/ESF7 DATA SY2024-25 - Non Teaching Personnel _ 20260414.csv"
esf7_related := "data/esf7/ESF7 DATA SY2024-25 - Related Teaching Personnel _ 20260414.csv"
source_data_dir := "data"
r2_prefix := env_var_or_default("R2_PREFIX", "deped-hr")

# serve documentation
docs:
    uv run zensical serve --dev-addr localhost:8002

# create .env file from example
dumpenv:
    op inject -i env.example -o .env

# upload to pypi
publish:
    uv build && \
    UV_PUBLISH_TOKEN=$PYPI_TOKEN uv publish

# download source artifacts from Cloudflare R2
download:
    uv run deped-dcp-template r2 download --target {{ source_data_dir }} --prefix {{ r2_prefix }}

# upload source artifacts to Cloudflare R2
upload:
    uv run deped-dcp-template r2 upload --source {{ source_data_dir }} --prefix {{ r2_prefix }}

# create lookup database from deped-dcp-templates
lookup:
    uv run deped-dcp-template extract \
    --templates-dir templates \
    --output {{ lookup_db }}

# create personnel database with mandatory ESF7 authority layer
build:
    uv run hr build \
    --personnel {{ personnel_csv }} \
    --lookups {{ lookup_db }} \
    --entities {{ entities_db }} \
    --db {{ personnel_db }} \
    --esf7 "{{ esf7_teaching }}" \
    --esf7 "{{ esf7_non_teaching }}" \
    --esf7 "{{ esf7_related }}"

# run incremental staged rebuild with mandatory ESF7 authority layer
rebuild:
    uv run hr rebuild \
    --personnel {{ personnel_csv }} \
    --lookups {{ lookup_db }} \
    --entities {{ entities_db }} \
    --db {{ personnel_db }} \
    --esf7 "{{ esf7_teaching }}" \
    --esf7 "{{ esf7_non_teaching }}" \
    --esf7 "{{ esf7_related }}"

# force a full staged reload while preserving build metadata history
rebuild-reset:
    uv run hr rebuild \
    --personnel {{ personnel_csv }} \
    --lookups {{ lookup_db }} \
    --entities {{ entities_db }} \
    --db {{ personnel_db }} \
    --esf7 "{{ esf7_teaching }}" \
    --esf7 "{{ esf7_non_teaching }}" \
    --esf7 "{{ esf7_related }}" \
    --reset

# reload ESF7 layer into existing personnel.db (skips personnel rebuild)
reload-esf7:
    uv run hr load-esf7 \
    --db {{ personnel_db }} \
    --esf7 "{{ esf7_teaching }}" \
    --esf7 "{{ esf7_non_teaching }}" \
    --esf7 "{{ esf7_related }}"

# run hr audit on built database
audit:
    uv run hr audit --db {{ personnel_db }}

# show latest staged loader status
stage-status:
    uv run hr stage status --db {{ personnel_db }}

# show latest staged loader reports
stage-report:
    uv run hr stage report --db {{ personnel_db }}

# run incremental hr pipeline with mandatory ESF7
restart:
    mkdir -p artifacts && \
    just lookup && \
    just rebuild && \
    just audit

# force a full reload after refreshing lookup data
restart-reset:
    mkdir -p artifacts && \
    just lookup && \
    just rebuild-reset && \
    just audit
