feat: roll-call votes + granular alert filter fix (v0.9.5)

Roll-call votes:
- Migration 0017: bill_votes + member_vote_positions tables
- Fetch vote XML directly from House Clerk / Senate LIS URLs
  embedded in bill actions recordedVotes objects
- GET /api/bills/{id}/votes triggers background fetch on first view
- VotePanel on bill detail: yea/nay bar, result badge, followed
  member positions with Sen./Rep. title, party badge, and state

Alert filter fix:
- _should_dispatch returns True when alert_filters is None so users
  who haven't saved filters still receive all notifications

Authored-By: Jack Levy
This commit is contained in:
Jack Levy
2026-03-02 20:33:32 -05:00
parent 676bf1b78d
commit 91473e6464
13 changed files with 673 additions and 3 deletions

View File

@@ -199,6 +199,31 @@ export interface CollectionDetail extends Collection {
bills: Bill[];
}
export interface MemberVotePosition {
bioguide_id?: string;
member_name?: string;
party?: string;
state?: string;
position: string;
}
export interface BillVote {
id: number;
congress: number;
chamber: string;
session: number;
roll_number: number;
question?: string;
description?: string;
vote_date?: string;
yeas?: number;
nays?: number;
not_voting?: number;
result?: string;
source_url?: string;
positions: MemberVotePosition[];
}
export interface NotificationEvent {
id: number;
bill_id: string;