Add Doris Schoolhouse and clean pending homelab changes
This commit is contained in:
24
home/doris-schoolhouse/bin/apply-postgres-schema.sh
Executable file
24
home/doris-schoolhouse/bin/apply-postgres-schema.sh
Executable file
@@ -0,0 +1,24 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
cd "$(dirname "$0")/.."
|
||||
SCHEMA_FILE="app/db/schema.sql"
|
||||
if [ ! -f "$SCHEMA_FILE" ]; then
|
||||
echo "schema file missing: $SCHEMA_FILE" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -n "${DATABASE_URL:-}" ] && command -v python3 >/dev/null 2>&1; then
|
||||
export PYTHONPATH=.
|
||||
python3 app/scripts/apply_schema.py
|
||||
exit $?
|
||||
fi
|
||||
|
||||
cat >&2 <<'MSG'
|
||||
Cannot apply schema automatically.
|
||||
Requirements:
|
||||
- DATABASE_URL must be set
|
||||
- python3 must be available
|
||||
- psycopg must be installed for direct apply
|
||||
Alternative: run the SQL in app/db/schema.sql manually against the schoolhouse database.
|
||||
MSG
|
||||
exit 1
|
||||
8
home/doris-schoolhouse/bin/bootstrap-local.sh
Executable file
8
home/doris-schoolhouse/bin/bootstrap-local.sh
Executable file
@@ -0,0 +1,8 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
cd "$(dirname "$0")/.."
|
||||
export SCHOOLHOUSE_STORAGE_BACKEND="${SCHOOLHOUSE_STORAGE_BACKEND:-json}"
|
||||
export SCHOOLHOUSE_STATE_DIR="${SCHOOLHOUSE_STATE_DIR:-/tmp/doris-schoolhouse-state}"
|
||||
export UPLOAD_TMP_DIR="${UPLOAD_TMP_DIR:-/tmp/doris-schoolhouse-uploads}"
|
||||
export PYTHONPATH=.
|
||||
python3 app/scripts/bootstrap_state.py
|
||||
22
home/doris-schoolhouse/bin/check-env.sh
Executable file
22
home/doris-schoolhouse/bin/check-env.sh
Executable file
@@ -0,0 +1,22 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
have() { command -v "$1" >/dev/null 2>&1; }
|
||||
|
||||
printf 'Doris Schoolhouse environment check\n'
|
||||
printf '================================\n'
|
||||
|
||||
for cmd in python3 ffmpeg psql docker curl; do
|
||||
if have "$cmd"; then
|
||||
printf '%-10s %s\n' "$cmd" "$(command -v "$cmd")"
|
||||
else
|
||||
printf '%-10s %s\n' "$cmd" "MISSING"
|
||||
fi
|
||||
done
|
||||
|
||||
python3 - <<'PY'
|
||||
import importlib.util
|
||||
mods = ['fastapi', 'uvicorn', 'psycopg']
|
||||
for mod in mods:
|
||||
print(f'{mod:10} ', 'installed' if importlib.util.find_spec(mod) else 'MISSING')
|
||||
PY
|
||||
12
home/doris-schoolhouse/bin/process-recording.sh
Executable file
12
home/doris-schoolhouse/bin/process-recording.sh
Executable file
@@ -0,0 +1,12 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
if [ "$#" -lt 1 ]; then
|
||||
echo "usage: $0 <recording_id>" >&2
|
||||
exit 1
|
||||
fi
|
||||
cd "$(dirname "$0")/.."
|
||||
export SCHOOLHOUSE_STORAGE_BACKEND="${SCHOOLHOUSE_STORAGE_BACKEND:-json}"
|
||||
export SCHOOLHOUSE_STATE_DIR="${SCHOOLHOUSE_STATE_DIR:-/tmp/doris-schoolhouse-state}"
|
||||
export UPLOAD_TMP_DIR="${UPLOAD_TMP_DIR:-/tmp/doris-schoolhouse-uploads}"
|
||||
export PYTHONPATH=.
|
||||
python3 app/scripts/process_recording.py "$1"
|
||||
8
home/doris-schoolhouse/bin/run-local.sh
Executable file
8
home/doris-schoolhouse/bin/run-local.sh
Executable file
@@ -0,0 +1,8 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
cd "$(dirname "$0")/.."
|
||||
export SCHOOLHOUSE_STORAGE_BACKEND="${SCHOOLHOUSE_STORAGE_BACKEND:-json}"
|
||||
export SCHOOLHOUSE_STATE_DIR="${SCHOOLHOUSE_STATE_DIR:-/tmp/doris-schoolhouse-state}"
|
||||
export UPLOAD_TMP_DIR="${UPLOAD_TMP_DIR:-/tmp/doris-schoolhouse-uploads}"
|
||||
export PYTHONPATH=.
|
||||
uvicorn app.main:app --host 0.0.0.0 --port "${SCHOOLHOUSE_PORT:-8091}"
|
||||
21
home/doris-schoolhouse/bin/test-assignment-handoff.sh
Executable file
21
home/doris-schoolhouse/bin/test-assignment-handoff.sh
Executable file
@@ -0,0 +1,21 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
if [ "$#" -lt 2 ]; then
|
||||
echo "usage: $0 <file> <class_name> [assignment_name]" >&2
|
||||
exit 1
|
||||
fi
|
||||
FILE="$1"
|
||||
CLASS_NAME="$2"
|
||||
ASSIGNMENT_NAME="${3:-Sample Assignment}"
|
||||
TARGET="${N8N_BASE_URL:-https://n8n.example.com}${SCHOOLHOUSE_N8N_ASSIGNMENT_WEBHOOK:-/webhook/school/intake/upload}"
|
||||
cat <<MSG
|
||||
Dry-run assignment handoff preview
|
||||
Target: $TARGET
|
||||
Command:
|
||||
curl -X POST "$TARGET" \\
|
||||
-F "document=@$FILE" \\
|
||||
-F "class_name=$CLASS_NAME" \\
|
||||
-F "assignment_name=$ASSIGNMENT_NAME" \\
|
||||
-F "submission_kind=assignment_turn_in" \\
|
||||
-F "source=doris-schoolhouse"
|
||||
MSG
|
||||
19
home/doris-schoolhouse/bin/test-recording-handoff.sh
Executable file
19
home/doris-schoolhouse/bin/test-recording-handoff.sh
Executable file
@@ -0,0 +1,19 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
if [ "$#" -lt 2 ]; then
|
||||
echo "usage: $0 <file> <class_name>" >&2
|
||||
exit 1
|
||||
fi
|
||||
FILE="$1"
|
||||
CLASS_NAME="$2"
|
||||
TARGET="${N8N_BASE_URL:-https://n8n.example.com}${SCHOOLHOUSE_N8N_RECORDING_WEBHOOK:-/webhook/class/upload}"
|
||||
cat <<MSG
|
||||
Dry-run recording handoff preview
|
||||
Target: $TARGET
|
||||
Command:
|
||||
curl -X POST "$TARGET" \\
|
||||
-F "data=@$FILE" \\
|
||||
-F "class_name=$CLASS_NAME" \\
|
||||
-F "lecture_title=${CLASS_NAME} Recording" \\
|
||||
-F "source=doris-schoolhouse"
|
||||
MSG
|
||||
Reference in New Issue
Block a user