Skip to content

Data Flow


Job Creation

User (UI form)
ui/<job_type>.py  _job_dialog() on_save()
db/queries.py  add_braille_job() / add_lp_job() / etc.
  │  ├── INSERT INTO <job_table>
  │  └── log_event("CREATE", "SUCCESS")
SQLite  accessibility_manager.db

File Ingestion

User provides path or uploads file
ui/ingestion.py  (or _ingest_dialog() in job panels)
db/queries.py  ingest_file()
  │  ├── Resolve source path (must be inside FILES_DIR — SEC-004)
  │  ├── Copy to artifacts/<ProjectTitle>/<name>.<ext>
  │  ├── Compute SHA-256 checksum
  │  ├── INSERT INTO file_object
  │  └── (optional) link_file_to_job() + log_event("INGEST")
Filesystem  ~/.local/share/accessibility_mgr/artifacts/
SQLite     file_object, job_file_link, metadata_event

Step Completion

User clicks "Mark Done"
ui/<job_type>.py  _complete()
  │  └── if step == "delivered":  open_delivery_dialog()
  │       else: Q.complete_step(job_type, job_id, step)
db/queries.py  complete_step()
  │  ├── UPDATE <table> SET <step>=1, <step>_date=datetime('now')
  │  └── log_event("STEP_COMPLETE")
SQLite

Delivery

User fills delivery dialog
ui/delivery_dialog.py  _confirm()
db/queries.py  record_delivery()
  │  ├── UPDATE <table> SET delivered=1, delivery_date=..., delivery_method=...
  │  └── log_event("DELIVERY")
SQLite

User types query
ui/search.py  _execute()
db/queries.py  search_all(query)
  │  ├── Try FTS5 virtual tables (fast)
  │  └── Fallback: LIKE queries on all tables
Returns dict keyed by category:
  braille_jobs, lp_jobs, tactile_jobs, print_jobs,
  files, metadata, events, students

REST API

External caller
  │  POST /api/workflows/enqueue
api/platform_api.py  enqueue_workflow()
  │  └── _require_api_auth() via X-API-Key header
services/singletons.py  queue.enqueue()
  ├── WorkflowQueueService (in-memory)
  └── (shared with UI workflow monitor)