District Transfer Tracking
Architecture & Major Components
High-level diagram (text):
- Scheduled/manual trigger (
run.sh) -> source exports + normalization + sheet sync -> validation/scoring/enrichment -> Aeries write-back + operational dashboard + reporting
run.sh triggersource exports + mappingTransfers + context sheet syncstatus/scoring/AIR enrichmentAeries write-back + dashboard operations + reporting- Scheduled/manual trigger (
Entry points:
run.sh: primary orchestrator (cron-safe, lock-protected).appsscript/Code.js: spreadsheet tools menu + helper automation.appsscript/Dashboard.js+appsscript/TransferDashboard.html: role-based web app.deploy.sh: Apps Script deployment.scripts/*.py: stage helpers (status normalization, scoring, AIR matching, Aeries write-back prep/summarize).
Top-level folders:
conf.d/: all connector/mapping configs.sql/: Aeries/AIR query templates and Aeries write-back SQL template.appsscript/: dashboard and spreadsheet workflow logic.templates/: report/new-submission email templates.REFERENCE-INFO/: binary usage and integration references.data/,temp/,logs/,backups/,emails_sent/,lock/: operational artifacts/state.
Key abstractions:
- Unified transfer schema persisted in
Transfers. - Calculated lifecycle (
record.status.calculated) and scoring (decision.score.*,indicator.*) columns. - Role/access model via
config-dashboard-usersand option/config tabs. - Projection precedence model (Enrolled > AIR > Transfer) and suppression safeguards.
- Two-path Aeries acknowledgement model:
aeries=TRUEfor SIS update confirmation under eligibility constraints.registration.sc.updated=TRUEfor AIR registration school-code updates.
- Unified transfer schema persisted in
Setup / Build / Run
- Build system(s):
- No monolithic build; operational shell + Python helpers + Apps Script.
- External binaries under
bin/are runtime dependencies.
- Local run steps:
cp config.example.toml config.toml- Configure APIs, SQL, sheet sync, reporting, and pipeline toggles.
- Verify required Google Sheet tabs/headers.
- Run:
./run.sh - Deploy dashboard/script updates:
./deploy.sh
- Runtime dependencies:
- InformedK12, Jotform, Aeries SIS DB, Aeries AIR DB, Google Sheets, SMTP.
- Service account key with write access to operational sheet.
- Python runtime for helper scripts.
- CLI tools:
google-sheet-sync,csv_mapper,mssql_to_csv,informedk12-sync,jotform-sync,email_template_mailer.
Operational Notes
- Full-cycle behavior:
- Backs up Transfers, ingests all sources, syncs raw/unified/context tabs, recalculates lifecycle/scoring, enriches AIR linkage, optionally writes to Aeries, and sends report/notification emails.
- Core operational interfaces:
- Spreadsheet Transfer Tools menu:
- Open Dashboard
- Add Manual Transfer
- Populate Student IDs from Aeries
- Validate Grades (Aeries/DOB)
- Export Communication Lists
- Refresh Transfer Filter Views
- Dashboard tabs:
- Overview
- Transfers
- Pending BOUSD Decision
- Pending BOUSD Approved School
- Data Validation
- Incomplete
- Withdrawn
- Enrollment Projections
- Class Load
- Info
- Spreadsheet Transfer Tools menu:
- Aeries write-back specifics:
- Writes STU transfer status fields (
IT/NIT) and routing school (NS) with rules by transfer type/direction/decision. - Writes AIR registration school code (
AeriesRegistration_60.dbo.STU.SC) for eligible approved Inter In rows when enabled. - Result summarizer computes update/no-op/not-found metrics and syncs acknowledgement fields to Transfers.
- Writes STU transfer status fields (
- Common failure modes:
- Missing sheet headers/columns required by stage helpers.
- Unmapped school labels for NS/registration school routing.
- No eligible STU tag rows (
TG IN ('', '*', 'I')) causing intentional aeries ack suppression. - Ambiguous AIR Name+DOB matches (skipped by design).
- Missing config-dashboard sheets/headers (auto-create attempted; fallback warnings emitted).
- Validation/audit anchors:
logs/run-*.log+ report emailsummary_rows.data/aeries-stu-status-writeback-generated.sql+data/aeries-stu-status-writeback-results.csv.- Transfers backup snapshots in
backups/. - Dashboard Data Validation queue and issue-guided remediation.
Registry Alignment
- Mapped registry entries:
INT-001,INT-002,INT-004,INT-005. - The registry confirms this page is the primary production transfer-operations record, not just a repo summary. It clarifies the weekday hourly cadence, Phase I lineage, AIR readiness dependency, and Aeries write-back risk profile.
- Cross-repo runtime context now matters explicitly:
district-transfer-trackingis the active implementation and runtime layer.aether/informedk12-sync-transfers.shis now a retired historical wrapper reference. - Validation gaps that remain outside the current Atlas page: production host inventory, key-file storage and recovery ownership, dashboard deployment identifiers, and final escalation/rollback ownership.