Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Uploading Elections / Ballots #723

Open
2 of 8 tasks
ArendPeter opened this issue Jan 13, 2025 · 0 comments
Open
2 of 8 tasks

Uploading Elections / Ballots #723

ArendPeter opened this issue Jan 13, 2025 · 0 comments
Assignees
Milestone

Comments

@ArendPeter
Copy link
Member

ArendPeter commented Jan 13, 2025

The basics are implemented (see video, and PR #724)

2025-01-12.17-11-11.mp4

There's 4 rough scenarios where votes can be added to an election

  • A) Vote from user
  • B) Admin adds votes to an existing election
  • C) Admin creates new election from CVR
  • D) Admin create or updates election for the public archive from a CVR

Election State: B, C, & D should be possible regardless of whether the election is open or closed. IRL mail in ballots are frequently received after the polls have closed. Also C & D are not intended to be in an open state at all.

Public Archive: C & D are very similar. Scenario C will create the election in the users account, and it will only be editable by that user. Scenario D will also create the election in the user's account, but it will also be displayed on a special "Public Election Archive". There will also be an "Public Archiver" role and the election will be updatable by anyone with that role.

Validation : Votes added in scenario B, should include the voter_id in each of the rows. Then the upload ballots API should be capable of overriding the voter_id from the cookies with the one from the CSV


There's a PR at #724 implementing the basics, but here's some follow ups

  • Setup yaml with election settings : There are 100s of RCV elections that need to be added to the public archive, and they each have different configurations. Rather than managing them individually we should setup rules based on the file name. For example the file "Genola_11022021_CityCouncil", it should infer that it's a Utah city and therefore uses bloc-IRV
  • Reduce Upload Ballots Payload : Currently the frontend sends ballots in batches of 100 to reduce the payload. But the structure of the API has a lot of redundant information (ex. election id is stored on every ballot). This needs to be reduced in order to make future use cases viable (ex. NYC elections with 1M ballots)
  • Replace all UUIDs with shorter IDs #733
  • Update RCV tabulator to handle invalid ballots #753
  • Test larger election sizes : Once we get the above items sorted out for Genola_11022021_CityCouncil (393 ballots), we can scale up to Burlington_03032009_Mayor.csv (8984 ballots), Alaska_08162022_HouseofRepresentativesSpecial.csv (184k ballots), and eventually NewYorkCity_06222021_DEMMayorCitywide.csv (1M ballots).
  • Expose Errors : If we're bulk adding a bunch of elections we should communicate the errors that are occurring for each election
  • Public Archive Support : There's a checkbox for enabling public archive, but this doesn't do anything yet. Checking this box for mark the election as public archive, and there should be a dedicated page for browsing public archive elections
  • Avoid over counting stats : Uploaded elections (scenario C & D) shouldn't count toward the stats on the front page (but votes that are bulk added by an admin (scenario B) should count)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant