Product input needed: FieldSeeker technician names → Nidus users (identity, aliases, disabled-by-default) #257
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Context
Today a Nidus Inspection/Treatment cannot say who performed it as a real identity: the FieldSeeker translation drops the source's technician name, so the review UI shows nothing (only
creator_id, which is null for imports). The goal is to attribute work to actual Nidus users — enabling account avatars and "what has this user done" queries without free-text matching.Proposed approach: at import time, resolve the source technician name against a user-alias table; if unrecognized (and it looks like a person), create a new Nidus user disabled by default, so it cannot log in until an account owner fleshes it out and enables it.
Before building, this issue records the reconnaissance on the FieldSeeker technician data and the product decisions needed. Counts below are from the shared dev database (
nidus-sync, one district) — read-only.What FieldSeeker gives us
The technician is a free-text name string on each source row — no id, no foreign key, and no personnel/employee table exists in the
fieldseekerschema. So identity is name-string-only, which is why an alias table is unavoidable.Secondary columns that also carry a technician-ish name:
trapdata.idbytech(24 distinct),servicerequest.assignedtech(46),servicerequest.techclosed(37),pool.survtech(22),servicerequest.entrytech(16),pointlocation.assignedtech(11),inspectionsample.idbytech(4).trapdata.sortbytechis entirely empty.Other name-ish fields present but not the field technician:
creator/editor(121 / 116 distinct ArcGIS account names, themselves mixed — see below), andcreated_user/last_edited_user(1–2 distinct — effectively blank in this district).How reliable are the names?
Across the seven
fieldtechtables: 1,743,762 rows, 161 distinct values.Spelling is very consistent: across all 161 values there is exactly one case/whitespace near-duplicate cluster (
bryan ferguson/Bryan Ferguson/Bryan Ferguson). Names are reused across tables too (66 appear in 2 tables, 31 in 3, 25 in 4, 26 in 5, 1 in 6).So a small, stable vocabulary — a curated alias table would map nearly everything exactly.
The catch: the vocabulary mixes people with zones, labs, and opaque ids
Zone NN Delta(e.g.Zone20 Delta)Lab Nbb63513e7297e68f1c0a)~68% of
fieldtechrows carry a zone, lab, or hex token — not a person. Zones/labs are how the district records route/broadcast work; the hex ids are unexplained. Naively "create a user per distinct value" would mint disabled users forZone20 Delta,Lab 3, and 64 hex strings.Misc non-person tokens also appear:
Website,Admin,Admin Delta,DMVCD Admin,FrontierPadmin,FSAdministrator,Front Desk,No Value,-1,Tester,AT,JV,SPM,Biologists,HTC 1,HTC 2,Na, and one free-text sentence.Alias / mismatch evidence (the problem the alias table must solve)
Real cases observed, small in number:
Bryan Ferguson/bryan ferguson/bryan furgusonA. Davis/A. Davi/A. DAvis/ADavisDeltaRick Alvarez/Rick Alverez·Jesus Solano/Jesus JolanoConlin Reis/Conlin/CReisDelta·Ryan Spratt/RSprattDeltaMir Bear-Johnson/Mir Delta·Hector Cardenas/HectorDeltaArturo Bolanos/Arturo Bolano·Kalvin Chavez/Kalvin Chaves·Juan Pablo Ortega/Pablo OrtegaThe ArcGIS
creator/editoraccounts use a further variant form — e.g.CRodriguezDelta,JPerezDelta,LMcGillDelta,zone20Delta— so if we ever key on those too, aliases must cover that shape as well.Product questions
fieldtechthe technician for our purposes, or should we also resolveassignedtech/idbytech/survtech/testtech/techclosed? Those add ~24 further distinct names on top offieldtech.fieldtechrows this district)? Scope and timing?Suggested next step
Settle Q1/Q2 (classification, and what the hex ids are) first — they determine what "unrecognized technician" even means. After that, the schema (user
disableddefault +user_aliaskeyed by external system + raw string) and the import resolve-or-create path can be designed.(Recon methodology: read-only queries against
nidus-sync; categories assigned by value shape — leadingZone/Lab, 16+ hex, otherwise "other".)This has been superceded by doc/design/integrations/fieldseeker/technician-identity.md