kcar
39ad1818ae
Merge branch agent/p0-correctness-security
...
api-ci-deploy / test-build-deploy (push) Has been cancelled
# Conflicts:
# modules/database/supabase/utils/client.py
2026-05-28 19:17:22 +01:00
kcar
88a3193e01
Keep platform bootstrap permissions additive
2026-05-28 15:10:54 +01:00
kcar
4f6634e088
Implement Supabase-first me bootstrap
2026-05-28 14:14:35 +01:00
kcar
54760083b5
fix: tighten API P0 auth and route handling
2026-05-28 12:42:42 +01:00
kcar
d5bda761d6
fix: enable per-user RLS via SupabaseAnonClient.for_user() and StorageUser(access_token=)
2026-05-27 21:51:58 +01:00
kcar and Claude Sonnet 4.6
035ea17844
fix: prevent platform admin from being auto-enrolled in default school
...
Two root causes fixed:
1. seed_environment.py: KevlarAI website was 'https://kevlarai.com ' (real
domain) instead of 'https://kevlarai.test '. Also, seed step 8 now patches
kcar's auth user_metadata to set user_type='platform_admin' on every
reset+seed, so the fix is self-healing and doesn't require manual DB edits.
2. provisioning_service.py: user_type_map now maps 'platform_admin' to
('superadmin', 'superadmin'), so _ensure_membership() is never called for
platform admin accounts and they are never silently enrolled in the
default institute.
Co-Authored-By: Claude Sonnet 4.6 <[email protected] >
2026-05-27 04:16:22 +01:00
kcar and Claude Sonnet 4.6
abf8d05ca1
feat(phase-b): Supabase-first timetable, classes, enrollment, and student views
...
- timetable_builder_router: Supabase-primary slot write (POST /timetable/slots),
week_cycle support, GET /slots reads from Supabase, materialize-periods endpoint,
rebuild-neo4j endpoint, sync-lessons endpoint (Track B: TaughtLesson Neo4j nodes),
_sync_teacher_timetables_to_neo4j and _sync_taught_lessons_to_neo4j helpers
- classes_router: GET /{class_id} enriched with profiles + enrollment_requests,
GET /school/students for admin search, PATCH /enrollment-requests/{id} approve/reject
- taught_lessons_router: GET /student/lessons student week view with enrichment
- school_router: academic_periods sync, day-type management
- platform_admin_router + platform_admin: POST /admin/reset and /admin/seed endpoints
- invitations_router: teacher invite scaffolding
- reset_environment + seed_environment: idempotent dev environment scripts
- graph_tree_router: Supabase-first institute resolution
- provisioning_service: neo4j_private_db_name column support
- main.py + run/routers.py: register new routers
Co-Authored-By: Claude Sonnet 4.6 <[email protected] >
2026-05-27 02:55:44 +01:00
kcar and Claude Sonnet 4.6
fe3d7a12c8
feat(phase-b): school/timetable API routers + graph nav tree
...
New routers (all previously untracked):
- graph_tree_router: /graph/tree, /graph/node/children, /graph/calendar/academic
Supabase-driven tree builder; institute DB resolved by teacher email scan
- school_router: /school/status (role + calendar flags), /school/info PATCH
Self-heals profiles.school_id from institute_memberships if null
- timetable_builder_router: /timetable/setup (AcademicYear/Term/Week + SchoolTimetable),
/timetable/slots (read/write TimetableSlot nodes), /timetable/init (TeacherTimetable)
- user_init_router: /user/init (provision user node in institute DB)
routers.py: register all new routers with correct prefixes
users.py: add JournalNode and PlannerNode schema classes
Co-Authored-By: Claude Sonnet 4.6 <[email protected] >
2026-05-26 01:24:44 +01:00
kcar and Claude Sonnet 4.6
84f7fa9de1
fix: cache Neo4j driver failure state to avoid 60s retry on every request
...
get_global_driver() now sets _driver_unavailable=True when the initial
connection fails, so subsequent calls fail immediately instead of
spending 60s retrying each time. Added reset_global_driver() to allow
manual reconnection after Neo4j comes back up.
Also fixes APP_BOLT_URL in .env: was bolt://bolt.classroomcopilot.ai
(public IP, port not exposed), now bolt://192.168.0.209:7687 (LAN).
Co-Authored-By: Claude Sonnet 4.6 <[email protected] >
2026-05-21 17:26:21 +00:00
kcar
14030170e7
timing
2025-11-19 20:13:35 +00:00
kcar
3758c7572a
latest
2025-11-14 14:47:19 +00:00
kcar
2a85845835
Environment methods
2025-08-23 19:01:36 +01:00
kcar
e0c489f625
Initial commit
2025-07-11 13:52:19 +00:00