Transcriber and Coordinator Workflow - FreeUKGen/MyopicVicar GitHub Wiki

Transcriber & Coordinator Workflow

This domain covers how a FreeREG transcriber gets work, submits it, and how coordinators manage that pipeline end to end — from picking up a scanned register image, through transcribing and submitting a CSV batch, to a coordinator reviewing and approving it.

Scoped to FreeREG on master — some resources in this codebase are shared with the FreeCEN skin (UseridDetail, Syndicate, Csvfile) and are documented as such where relevant; a few (ManageParm, the FreeCEN "PARMS" file importer) are FreeCEN-only and deliberately excluded from this domain.

Pages

  • Assignment-System — a syndicate coordinator hands scanned-image work to a transcriber/reviewer
  • Image-Server-System — the scanned-register image pipeline (Source → ImageServerGroup → ImageServerImage) that assignments are drawn from
  • Csvfile-System — how a transcriber uploads/replaces a completed CSV batch
  • Syndicate-System — volunteer transcription groups, and the coordinator dashboard built on top of them
  • UseridDetail-System — the account/role/permission model underlying everyone in this domain
  • Favorite-Actions-System — small per-user UI shortcut feature
  • Coordinator-Admin-Tools — the post-login dashboard, county navigation hub, and a couple of smaller utilities (S3 browsing, a CMS page wrapper)

How the pieces fit together

flowchart TD
    U["UseridDetail<br/>role: transcriber / syndicate_coordinator /<br/>county_coordinator / ..."] --> S[Syndicate<br/>volunteer group, one syndicate_coordinator]
    S --> A[Assignment]
    A -->|belongs_to| SRC[Source] --> REG[Register] --> CH[Church] --> PL[Place]
    A --> ISI["ImageServerImage<br/>status: u/ar/a/bt/ts/t/br/rs/r/cs/c"]
    A --> ISG[ImageServerGroup<br/>batch of images, allocated to a syndicate]
    ISI --> CSV[Transcriber produces a CSV batch,<br/>uploads it via Csvfile]
    CSV --> PF["PhysicalFile + Freereg1CsvFile<br/>(the permanent batch/processing records)"]
    PF --> MC[Coordinator reviews via ManageCounty /<br/>ManageSyndicate dashboards]
Loading

Cross-cutting pattern worth knowing before you dig in

"Dispatch on a hidden discriminator param" is a house style across this whole domain, not an isolated quirk of one controller. You'll see it repeatedly:

  • MessagesController#create dispatches on the submit button's literal label (params[:commit]) — see Message-System.
  • ImageServerImage#update dispatches on params[:image_server_image][:origin].
  • ImageServerGroup#update dispatches on params[:type].
  • AssignmentsController#update dispatches on params[:_method].
  • ManageCountiesController's ~12 dashboard actions are all reached through the identical route manage_counties/selection, disambiguated only by custom routing constraint classes matching on params[:option]/similar — the URL alone doesn't tell you which action runs.

None of these are bugs by themselves, but all of them mean: renaming a button, a param, or a constraint's match string will silently break a flow with no error — just the wrong (or no) action running. Keep that in mind before refactoring any view or route in this domain.

⚠️ **GitHub.com Fallback** ⚠️