added prototype dev settings with test import and db wipe

This commit is contained in:
2026-05-26 16:38:37 +02:00
parent 2181d1731e
commit 9d783b60a9
13 changed files with 1253 additions and 33 deletions

View File

@ -0,0 +1,99 @@
#!/usr/bin/env python3
"""Generate dev-test-fixture.json for admin Dev tab import."""
import json
from pathlib import Path
PREFIX = "dev_"
PASSWORD = "socialvrlab"
CLIENT_PREFIX = "DEV-CL-"
QUESTIONNAIRE_IDS = [
"questionnaire_1_demographic_information",
"questionnaire_2_rhs",
"questionnaire_3_integration_index",
"questionnaire_4_consultation_results",
"questionnaire_5_final_interview",
"questionnaire_6_follow_up_survey",
]
PER_QUESTIONNAIRE = 40
NUM_ADMINS = 2
NUM_SUPERVISORS = 3
NUM_COACHES = 20
NUM_CLIENTS = 100
CLIENTS_WITHOUT_COMPLETIONS = 15 # DEV-CL-0086 .. 0100
def main():
admins = [
{"username": f"{PREFIX}admin_{i}", "location": f"Dev Admin Standort {i}"}
for i in range(1, NUM_ADMINS + 1)
]
supervisors = [
{"username": f"{PREFIX}supervisor_{i}", "location": f"Dev Supervisor Region {i}"}
for i in range(1, NUM_SUPERVISORS + 1)
]
coaches = []
for i in range(1, NUM_COACHES + 1):
sv = (i - 1) % NUM_SUPERVISORS + 1
coaches.append({
"username": f"{PREFIX}coach_{i:02d}",
"supervisor": f"{PREFIX}supervisor_{sv}",
})
clients = []
for i in range(1, NUM_CLIENTS + 1):
coach_idx = (i - 1) // 5 + 1
if coach_idx > NUM_COACHES:
coach_idx = NUM_COACHES
clients.append({
"clientCode": f"{CLIENT_PREFIX}{i:04d}",
"coach": f"{PREFIX}coach_{coach_idx:02d}",
})
clients_with_data = [
c["clientCode"]
for c in clients
if int(c["clientCode"].split("-")[-1]) <= NUM_CLIENTS - CLIENTS_WITHOUT_COMPLETIONS
]
completions = []
slot = 0
for qn_id in QUESTIONNAIRE_IDS:
for _ in range(PER_QUESTIONNAIRE):
client_code = clients_with_data[slot % len(clients_with_data)]
completions.append({
"clientCode": client_code,
"questionnaireID": qn_id,
})
slot += 1
fixture = {
"fixtureVersion": 1,
"description": "Dev/test users, clients, and completed questionnaires. Skip-on-conflict import; password socialvrlab.",
"prefix": PREFIX,
"defaultPassword": PASSWORD,
"admins": admins,
"supervisors": supervisors,
"coaches": coaches,
"clients": clients,
"completions": completions,
"stats": {
"admins": len(admins),
"supervisors": len(supervisors),
"coaches": len(coaches),
"clients": len(clients),
"clientsWithoutCompletions": CLIENTS_WITHOUT_COMPLETIONS,
"completions": len(completions),
"perQuestionnaire": PER_QUESTIONNAIRE,
},
}
out = Path(__file__).resolve().parents[2] / "dev-test-fixture.json"
out.write_text(json.dumps(fixture, ensure_ascii=False, indent=2) + "\n", encoding="utf-8")
print(f"Wrote {out}")
print(json.dumps(fixture["stats"], indent=2))
if __name__ == "__main__":
main()