better ux with search functionality
This commit is contained in:
@ -6,8 +6,12 @@ from pathlib import Path
|
||||
PREFIX = "dev_"
|
||||
PASSWORD = "socialvrlab"
|
||||
CLIENT_PREFIX = "DEV-CL-"
|
||||
SCALE = 5
|
||||
|
||||
QUESTIONNAIRE_IDS = [
|
||||
# Newest questionnaire bundle (repo root); IDs are read from this file when present.
|
||||
BUNDLE_PATH = Path(__file__).resolve().parents[2] / "questionnaires_bundle_2026-05-28.json"
|
||||
|
||||
FALLBACK_QUESTIONNAIRE_IDS = [
|
||||
"questionnaire_1_demographic_information",
|
||||
"questionnaire_2_rhs",
|
||||
"questionnaire_3_integration_index",
|
||||
@ -16,15 +20,29 @@ QUESTIONNAIRE_IDS = [
|
||||
"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
|
||||
PER_QUESTIONNAIRE = 40 * SCALE
|
||||
NUM_ADMINS = 2 * SCALE
|
||||
NUM_SUPERVISORS = 3 * SCALE
|
||||
NUM_COACHES = 20 * SCALE
|
||||
NUM_CLIENTS = 100 * SCALE
|
||||
CLIENTS_WITHOUT_COMPLETIONS = 15 * SCALE
|
||||
|
||||
|
||||
def load_questionnaire_ids() -> list[str]:
|
||||
if not BUNDLE_PATH.is_file():
|
||||
return FALLBACK_QUESTIONNAIRE_IDS
|
||||
bundle = json.loads(BUNDLE_PATH.read_text(encoding="utf-8"))
|
||||
ids = [
|
||||
item["questionnaire"]["questionnaireID"]
|
||||
for item in bundle.get("questionnaires", [])
|
||||
if item.get("questionnaire", {}).get("questionnaireID")
|
||||
]
|
||||
return ids or FALLBACK_QUESTIONNAIRE_IDS
|
||||
|
||||
|
||||
def main():
|
||||
questionnaire_ids = load_questionnaire_ids()
|
||||
|
||||
admins = [
|
||||
{"username": f"{PREFIX}admin_{i}", "location": f"Dev Admin Standort {i}"}
|
||||
for i in range(1, NUM_ADMINS + 1)
|
||||
@ -59,7 +77,7 @@ def main():
|
||||
|
||||
completions = []
|
||||
slot = 0
|
||||
for qn_id in QUESTIONNAIRE_IDS:
|
||||
for qn_id in questionnaire_ids:
|
||||
for _ in range(PER_QUESTIONNAIRE):
|
||||
client_code = clients_with_data[slot % len(clients_with_data)]
|
||||
completions.append({
|
||||
@ -68,17 +86,25 @@ def main():
|
||||
})
|
||||
slot += 1
|
||||
|
||||
bundle_note = BUNDLE_PATH.name if BUNDLE_PATH.is_file() else "fallback questionnaire list"
|
||||
|
||||
fixture = {
|
||||
"fixtureVersion": 1,
|
||||
"description": "Dev/test users, clients, and completed questionnaires. Skip-on-conflict import; password socialvrlab.",
|
||||
"description": (
|
||||
f"Dev/test users, clients, and completed questionnaires ({SCALE}x scale). "
|
||||
f"Questionnaires aligned with {bundle_note}. Skip-on-conflict import; password socialvrlab."
|
||||
),
|
||||
"prefix": PREFIX,
|
||||
"defaultPassword": PASSWORD,
|
||||
"sourceBundle": bundle_note,
|
||||
"questionnaireIDs": questionnaire_ids,
|
||||
"admins": admins,
|
||||
"supervisors": supervisors,
|
||||
"coaches": coaches,
|
||||
"clients": clients,
|
||||
"completions": completions,
|
||||
"stats": {
|
||||
"scale": SCALE,
|
||||
"admins": len(admins),
|
||||
"supervisors": len(supervisors),
|
||||
"coaches": len(coaches),
|
||||
@ -86,6 +112,7 @@ def main():
|
||||
"clientsWithoutCompletions": CLIENTS_WITHOUT_COMPLETIONS,
|
||||
"completions": len(completions),
|
||||
"perQuestionnaire": PER_QUESTIONNAIRE,
|
||||
"questionnaires": len(questionnaire_ids),
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user