[{"data":1,"prerenderedAt":346},["ShallowReactive",2],{"/docs/jobs/dojjob/features/elections":3,"/docs/jobs/dojjob/features/elections-surround":336,"/docs/jobs/dojjob/features/elections-implemented-suggestions":345},{"id":4,"title":5,"body":6,"description":326,"extension":327,"head":328,"implementedSuggestions":328,"meta":329,"navigation":330,"path":331,"schemaOrg":328,"seo":332,"sitemap":333,"stem":334,"__hash__":335},"docs/1.docs/0.jobs/5.dojjob/3.features/10.elections.md","Elections & Public Displays",{"type":7,"value":8,"toc":312},"minimark",[9,14,23,29,33,83,101,105,125,132,135,139,142,145,148,153,156,159,163,173,176,228,235,239,301],[10,11,13],"h2",{"id":12},"election-management","Election management",[15,16,17,18,22],"p",{},"DOJ staff manage election drafts, choices, voting periods and results in the ",[19,20,21],"strong",{},"Elections"," app. Citizens cast their vote at a configured digital booth. A courtroom's evidence screens and the courthouse's public schedule displays are separate systems.",[15,24,25],{},[26,27],"img",{"alt":13,"src":28},"/products/doj/election-management-preview-043efac709.webp",[10,30,32],{"id":31},"setup","Setup",[34,35,36,53,68],"ol",{},[37,38,39,40,44,45,48,49,52],"li",{},"Enable ",[41,42,43],"code",{},"Config.ToggleFeatures.elections"," and allow the ",[41,46,47],{},"doj_elections"," app for the intended grades. Assign ",[19,50,51],{},"Manage elections"," to the staff who administer ballots. The normal tablet duty requirement applies.",[37,54,55,56,59,60,63,64,67],{},"Select the DOJ job and courthouse in ",[41,57,58],{},"/jobconfig",". Add a ",[19,61,62],{},"Digital voting booth"," to its locations and place it with an accessible entrance. The default model is ",[41,65,66],{},"sky_doj_voting_booth_01",".",[37,69,70,71,74,75,78,79,82],{},"Complete the database migrations before opening a ballot. Version ",[41,72,73],{},"0.2.0"," records the character identifier in ",[41,76,77],{},"sky_doj_election_votes.char_id"," and enforces a unique ",[41,80,81],{},"(election_id, char_id)"," pair. Voting refuses to start with an incompatible or incomplete schema. Do not remove the uniqueness constraint to work around an error.",[15,84,85,86,90,91,94,95,97,98,100],{},"These instructions apply to ",[87,88,73],"a",{"href":89},"/docs/jobs/dojjob/changelog",". Version ",[41,92,93],{},"0.1.1"," used a private election pepper; the character-based implementation in ",[41,96,73],{}," no longer reads that setting. Complete the ",[41,99,73],{}," update and its database migration before removing an existing secret.",[10,102,104],{"id":103},"create-and-run-a-ballot","Create and run a ballot",[34,106,107,110,113,116,119,122],{},[37,108,109],{},"Create a draft with its public title, description, opening time, closing time and answer options.",[37,111,112],{},"Review the ballot text and schedule. Defaults allow 2–12 options, a minimum duration of 5 minutes and a maximum duration of 30 days.",[37,114,115],{},"Save the draft. Draft edits use version checks so a second editor cannot silently overwrite the version you opened.",[37,117,118],{},"Publish the draft when it is ready. A published future election is scheduled; voters cannot vote before its opening time.",[37,120,121],{},"During the voting period, citizens approach a booth, open the ballot, choose an option and submit their vote. The server checks their current booth access, election state and whether they have already voted.",[37,123,124],{},"Review results after the voting period has ended, or close the election through the staff controls. Cancel a draft or published election when the ballot should no longer proceed.",[15,126,127,128,131],{},"An elapsed closing time and the staff ",[19,129,130],{},"Close"," action are distinct: the time-ended election no longer accepts votes, but its persisted status may still be published until staff close it.",[15,133,134],{},"The standard booth interaction opens the ballot at the booth; Escape closes it. Keep the entrance clear and place the booth so players can stand inside the interaction area. This is in-world voting, not an unrestricted remote ballot from any location.",[10,136,138],{"id":137},"one-vote-and-privacy","One vote and privacy",[15,140,141],{},"The server enforces one recorded vote per election and character. Repeated submissions or visiting a second booth do not create a second vote for that character.",[15,143,144],{},"New vote rows store the character identifier alongside the selected option. Database administrators can therefore associate those votes with characters; do not describe this as an anonymous ballot. Protect database access and backups. Separate characters remain separate voting identities.",[15,146,147],{},"The public booth shows ballot details, choices and the current character's own voting status. It does not receive voter identities or live option counts. Staff results and public booth views are separate; do not treat a screenshot of the staff view as the citizen view.",[149,150,152],"h3",{"id":151},"migrating-older-elections","Migrating older elections",[15,154,155],{},"Back up the database before moving from the older hashed-voter implementation. Its existing votes are retained in the results with no recovered character identifier. Published elections that contain those legacy votes are closed during migration, because their previous voters cannot safely be matched to the new character identifiers. Create a new ballot when voting needs to continue; do not reopen the old one by editing the database.",[15,157,158],{},"The migration replaces the old voter-key constraint and removes the obsolete voter keys and pepper fingerprints. Preserve your pre-migration backup if you need to retain that historical data. This does not claim that an existing customer database has already been migrated.",[10,160,162],{"id":161},"public-hearing-displays","Public hearing displays",[15,164,39,165,168,169,172],{},[41,166,167],{},"Config.ToggleFeatures.publicDisplays"," and ",[41,170,171],{},"Config.PublicDisplays.enabled",". Under the courthouse's locations, place the desired public wall screen, desk monitor or floor terminal. Fresh installations have no display placements.",[15,174,175],{},"The public docket shows public hearings, courtroom occupancy, times, status and directions. Only hearings enabled for public display are included; the related calendar visibility also applies. Use the hearing's subject and judge reveal controls deliberately:",[177,178,179,192],"table",{},[180,181,182],"thead",{},[183,184,185,189],"tr",{},[186,187,188],"th",{},"Setting",[186,190,191],{},"Public effect",[193,194,195,204,212,220],"tbody",{},[183,196,197,201],{},[198,199,200],"td",{},"Public hearing enabled",[198,202,203],{},"Allows the hearing to appear on the docket.",[183,205,206,209],{},[198,207,208],{},"Reveal subject",[198,210,211],{},"Shows the configured public subject; otherwise the case label stays neutral.",[183,213,214,217],{},[198,215,216],{},"Reveal judge",[198,218,219],{},"Includes the configured judge display name.",[183,221,222,225],{},[198,223,224],{},"Wayfinding",[198,226,227],{},"Helps visitors find the courtroom without exposing the private case record.",[15,229,230,231,67],{},"The default display window covers the previous 120 minutes and the next 48 hours, with up to six visible rows. A public docket does not grant access to case files, witness statements or evidence. To show admitted exhibits inside a room, configure that room's evidence displays instead; see ",[87,232,234],{"href":233},"/docs/jobs/dojjob/features/hearings","Hearings & Courtrooms",[10,236,238],{"id":237},"troubleshooting","Troubleshooting",[177,240,241,251],{},[180,242,243],{},[183,244,245,248],{},[186,246,247],{},"Symptom",[186,249,250],{},"Check",[193,252,253,261,269,277,285,293],{},[183,254,255,258],{},[198,256,257],{},"Voting reports a schema error",[198,259,260],{},"Completed migrations, the character column and the election/character uniqueness constraint.",[183,262,263,266],{},[198,264,265],{},"A secret error still appears",[198,267,268],{},"You are running the older implementation; follow the matching package instructions instead of removing its required secret.",[183,270,271,274],{},[198,272,273],{},"An election is missing from a booth",[198,275,276],{},"Publication state, schedule, booth configuration and whether migration closed a legacy ballot.",[183,278,279,282],{},[198,280,281],{},"A second submission is refused",[198,283,284],{},"The existing vote is retained; do not clear the constraint to permit another.",[183,286,287,290],{},[198,288,289],{},"A public screen shows no hearing",[198,291,292],{},"Display placement/activation, time window, hearing public flag and calendar visibility.",[183,294,295,298],{},[198,296,297],{},"A participant's name is missing",[198,299,300],{},"Public subject/judge reveal controls; private participant data is intentionally omitted.",[15,302,303,304,168,308,67],{},"General installation and permission setup are covered under ",[87,305,307],{"href":306},"/docs/jobs/dojjob/setup/installation","Installation",[87,309,311],{"href":310},"/docs/jobs/dojjob/setup/permissions","Permissions",{"title":313,"searchDepth":314,"depth":315,"links":316},"",1,2,[317,318,319,320,324,325],{"id":12,"depth":315,"text":13},{"id":31,"depth":315,"text":32},{"id":103,"depth":315,"text":104},{"id":137,"depth":315,"text":138,"children":321},[322],{"id":151,"depth":323,"text":152},3,{"id":161,"depth":315,"text":162},{"id":237,"depth":315,"text":238},"Set up character-based voting and configure public courthouse information.","md",null,{},true,"/docs/jobs/dojjob/features/elections",{"title":5,"description":326},{"loc":331},"1.docs/0.jobs/5.dojjob/3.features/10.elections","Xv-5fceuZI6iTaMIdRgsW3qUn7KRK8Oshrl6aUi5238",[337,340],{"title":234,"path":233,"stem":338,"description":339,"children":-1},"1.docs/0.jobs/5.dojjob/3.features/09.hearings","Schedule hearings, configure courtroom points and run proceedings with admitted evidence.",{"title":341,"path":342,"stem":343,"description":344,"children":-1},"Conditions & Optional Asset Taxes","/docs/jobs/dojjob/features/conditions","1.docs/0.jobs/5.dojjob/3.features/11.conditions","Track court-imposed obligations, provider actions and review deadlines, with a separate optional tax collector.",[],1791330900954]