widgettdc-api / source_intel /CHANGELOG_DATABASE_VIEWS.md
Kraft102's picture
fix: sql.js Docker/Alpine compatibility layer for PatternMemory and FailureMemory
5a81b95

Database View Changelog

Detailed tracking of database view changes for the CIA intelligence platform. This changelog provides comprehensive documentation of all view additions, modifications, and deprecations with schema specifications.

Format: Chronological with schema details
Versioning: Aligned with CIA platform releases
Scope: Database views only
Parent Changelog: CHANGELOG_INTELLIGENCE_ANALYSIS.md


📋 Quick Reference

View Count Category Latest Version
85 Total All Views v1.39.0
57 Regular Standard SQL Views v1.39.0
28 Materialized Performance-Optimized v1.32.0

Related Documentation:


[1.39.0] - 2025-12-01

Fixed Views (3)

1. view_ministry_effectiveness_trends ⚠️ CRITICAL FIX

Issue: View returned 0 rows despite previous fix attempts in v1.31, v1.32, v1.37
Root Cause: Incorrect filter WHERE LOWER(org_code) LIKE '%departement%'

Problem Details:

  • Ministry org_codes in assignment_data are SHORT CODES like 'KN', 'N', 'UD', 'F'
  • The text "departement" appears in the detail field (full ministry name), NOT in org_code
  • Previous fixes attempted case-insensitive matching but didn't address the fundamental filter mismatch
  • Filter excluded ALL ministry assignments, making view permanently empty

Solution: Remove LIKE '%departement%' filter, rely solely on assignment_type = 'Departement'

Changes:

-- BEFORE (incorrect):
WHERE assignment_type = 'Departement' 
  AND org_code IS NOT NULL 
  AND LOWER(org_code) LIKE '%departement%'  -- ❌ Always false for 'KN', 'N', etc.

-- AFTER (correct):
WHERE assignment_type = 'Departement' 
  AND org_code IS NOT NULL
  -- ✅ Removed LIKE filter, assignment_type is sufficient

Additional Fix: Changed short_code extraction

-- BEFORE: Tried to extract substring from org_code containing 'departement'
SUBSTRING(org_code FROM 1 FOR position('departement' IN LOWER(org_code)) + 10) AS short_code

-- AFTER: Use org_code directly as it's already the short code
org_code AS short_code

Impact:

  • Unblocks ministry effectiveness tracking for Product Line 4 (Ministry & Government Intelligence)
  • Enables 4 ministry risk rules (M-01 through M-04)
  • View will now return data once ministry assignments are imported
  • Related views also fixed: view_ministry_productivity_matrix, view_ministry_risk_evolution

GitHub Issue: #8009
Changelog: db-changelog-1.39.xml
Intelligence Value: ⭐⭐⭐⭐⭐ VERY HIGH - Critical for government oversight


2. view_ministry_productivity_matrix ⚠️ SAME FIX

Issue: Identical root cause as view_ministry_effectiveness_trends
Solution: Applied same filter correction
Impact: Ministry productivity benchmarking now functional


3. view_ministry_risk_evolution ⚠️ SAME FIX

Issue: Identical root cause as view_ministry_effectiveness_trends
Solution: Applied same filter correction
Impact: Ministry risk tracking over time now functional


[1.36.0] - 2025-11-24

Added Views (3)

1. view_ministry_decision_impact

Purpose: Ministry effectiveness tracking through decision outcomes and impact assessment

Schema:

CREATE VIEW view_ministry_decision_impact AS
SELECT 
    m.ministry_id,
    m.ministry_name,
    d.decision_id,
    d.decision_date,
    d.decision_type,
    d.impact_score,
    d.budget_affected,
    d.policy_area,
    COUNT(d.decision_id) OVER (PARTITION BY m.ministry_id) as total_decisions,
    AVG(d.impact_score) OVER (PARTITION BY m.ministry_id) as avg_ministry_impact,
    RANK() OVER (ORDER BY AVG(d.impact_score) OVER (PARTITION BY m.ministry_id) DESC) as ministry_effectiveness_rank
FROM ministry m
LEFT JOIN decision d ON m.ministry_id = d.ministry_id
WHERE d.decision_date >= CURRENT_DATE - INTERVAL '5 years';

Key Metrics:

  • Ministry ID and name
  • Decision count per ministry
  • Average impact score per ministry
  • Ministry effectiveness ranking
  • Budget impact tracking
  • Policy area categorization

Intelligence Product: Ministry Performance Scorecards
Analysis Framework: Decision Intelligence Framework
Intelligence Value: ⭐⭐⭐⭐⭐ VERY HIGH

Use Cases:

  • Government effectiveness assessment
  • Ministry performance comparison
  • Coalition stability monitoring
  • Policy impact evaluation
  • Budget execution analysis

Sample Query:

-- Top 5 most effective ministries in last year
SELECT 
    ministry_name,
    total_decisions,
    ROUND(avg_ministry_impact, 2) as effectiveness_score,
    ministry_effectiveness_rank
FROM view_ministry_decision_impact
WHERE decision_date >= CURRENT_DATE - INTERVAL '1 year'
ORDER BY ministry_effectiveness_rank
LIMIT 5;

2. view_riksdagen_party_decision_summary

Purpose: Party-level decision aggregation and effectiveness tracking

Schema:

CREATE VIEW view_riksdagen_party_decision_summary AS
SELECT 
    p.party,
    EXTRACT(YEAR FROM d.decision_date) as decision_year,
    COUNT(DISTINCT d.decision_id) as total_decisions,
    COUNT(DISTINCT CASE WHEN d.outcome = 'PASSED' THEN d.decision_id END) as successful_decisions,
    AVG(d.impact_score) as avg_impact_score,
    AVG(d.coalition_support_percent) as avg_coalition_support,
    STDDEV(d.impact_score) as impact_score_variance
FROM party p
JOIN politician pol ON p.party = pol.party
JOIN decision d ON pol.person_id = d.proposer_id
GROUP BY p.party, EXTRACT(YEAR FROM d.decision_date);

Key Metrics:

  • Party name and decision year
  • Total decisions proposed
  • Successful decision count
  • Average impact score per party
  • Coalition support percentage
  • Impact score variance (consistency measure)

Intelligence Product: Party Decision Analysis Reports
Analysis Framework: Comparative Analysis, Temporal Analysis
Intelligence Value: ⭐⭐⭐⭐⭐ VERY HIGH

Use Cases:

  • Party effectiveness comparison
  • Legislative success rate analysis
  • Coalition influence assessment
  • Temporal trend tracking
  • Party strategy evaluation

Sample Query:

-- Party effectiveness ranking for 2024
SELECT 
    party,
    total_decisions,
    successful_decisions,
    ROUND(100.0 * successful_decisions / NULLIF(total_decisions, 0), 1) as success_rate_pct,
    ROUND(avg_impact_score, 2) as effectiveness_score
FROM view_riksdagen_party_decision_summary
WHERE decision_year = 2024
ORDER BY success_rate_pct DESC, total_decisions DESC;

3. view_riksdagen_politician_decision_summary

Purpose: Individual politician decision-making effectiveness and activity tracking

Schema:

CREATE VIEW view_riksdagen_politician_decision_summary AS
SELECT 
    pol.person_id,
    pol.first_name || ' ' || pol.last_name as politician_name,
    pol.party,
    EXTRACT(YEAR FROM d.decision_date) as decision_year,
    COUNT(DISTINCT d.decision_id) as decisions_made,
    COUNT(DISTINCT CASE WHEN d.outcome = 'PASSED' THEN d.decision_id END) as successful_decisions,
    AVG(d.impact_score) as effectiveness_score,
    MAX(d.decision_date) as most_recent_decision,
    COUNT(DISTINCT d.policy_area) as policy_areas_covered
FROM politician pol
LEFT JOIN decision d ON pol.person_id = d.proposer_id
GROUP BY pol.person_id, pol.first_name, pol.last_name, pol.party, EXTRACT(YEAR FROM d.decision_date);

Key Metrics:

  • Politician identification and party
  • Decisions made per year
  • Successful decision count
  • Average effectiveness score
  • Most recent decision date
  • Policy area diversity

Intelligence Product: Politician Decision Scorecards
Analysis Framework: Temporal Analysis, Pattern Recognition
Intelligence Value: ⭐⭐⭐⭐ HIGH

Use Cases:

  • Individual politician performance assessment
  • Legislative productivity tracking
  • Policy specialization analysis
  • Career trajectory monitoring
  • Comparative politician effectiveness

Sample Query:

-- Most effective politicians in 2024 (minimum 5 decisions)
SELECT 
    politician_name,
    party,
    decisions_made,
    successful_decisions,
    ROUND(effectiveness_score, 2) as score,
    policy_areas_covered
FROM view_riksdagen_politician_decision_summary
WHERE decision_year = 2024 
  AND decisions_made >= 5
ORDER BY effectiveness_score DESC
LIMIT 20;

Modified Views (0)

None

Deprecated Views (0)

None

Performance Impact

  • All 3 new views use efficient aggregation patterns
  • Indexed on key join columns (ministry_id, person_id, party)
  • Recommend materialized view consideration for frequent access
  • Estimated query time: 50-200ms on full dataset

[1.35.0] - 2025-11-22

Added Views (0)

Note: This release focused on comprehensive documentation of all 85 existing views rather than adding new views.

Documentation Enhancement

  • Documented all 85 views with structured format:
    • Purpose and intelligence value
    • Key metrics and schema overview
    • Sample queries and use cases
    • Intelligence applications
    • Framework mappings
  • Updated DATABASE_VIEW_INTELLIGENCE_CATALOG.md with complete coverage
  • Achieved 100% documentation coverage

Modified Views (0)

None

Deprecated Views (0)

None


[1.34.0] - 2025-11-18

Added Views (3)

1. view_riksdagen_vote_data_ballot_politician_summary_daily

Purpose: Daily voting statistics and participation tracking per politician

Schema:

CREATE VIEW view_riksdagen_vote_data_ballot_politician_summary_daily AS
SELECT 
    intressent_id as person_id,
    DATE(vote_date) as vote_date,
    COUNT(*) as total_votes,
    COUNT(CASE WHEN vote = 'Ja' THEN 1 END) as yes_votes,
    COUNT(CASE WHEN vote = 'Nej' THEN 1 END) as no_votes,
    COUNT(CASE WHEN vote = 'Avstår' THEN 1 END) as abstain_votes,
    COUNT(CASE WHEN vote = 'Frånvarande' THEN 1 END) as absent_votes
FROM vote_data
GROUP BY intressent_id, DATE(vote_date);

Key Metrics:

  • Daily vote counts by type (yes/no/abstain/absent)
  • Politician voting participation rate
  • Daily attendance tracking

Intelligence Product: Daily Activity Reports
Analysis Framework: Temporal Analysis
Intelligence Value: ⭐⭐⭐ MEDIUM


2. view_riksdagen_vote_data_ballot_politician_summary_monthly

Purpose: Monthly voting trends and participation aggregation

Schema:

CREATE VIEW view_riksdagen_vote_data_ballot_politician_summary_monthly AS
SELECT 
    intressent_id as person_id,
    DATE_TRUNC('month', vote_date) as vote_month,
    COUNT(*) as total_votes,
    COUNT(CASE WHEN vote = 'Ja' THEN 1 END) as yes_votes,
    COUNT(CASE WHEN vote = 'Nej' THEN 1 END) as no_votes,
    COUNT(CASE WHEN vote = 'Avstår' THEN 1 END) as abstain_votes,
    COUNT(CASE WHEN vote = 'Frånvarande' THEN 1 END) as absent_votes,
    ROUND(100.0 * COUNT(CASE WHEN vote != 'Frånvarande' THEN 1 END) / 
          NULLIF(COUNT(*), 0), 2) as participation_rate
FROM vote_data
GROUP BY intressent_id, DATE_TRUNC('month', vote_date);

Key Metrics:

  • Monthly vote counts by type
  • Monthly participation rate
  • Temporal trend analysis

Intelligence Product: Monthly Performance Scorecards
Analysis Framework: Temporal Analysis
Intelligence Value: ⭐⭐⭐⭐ HIGH


3. view_riksdagen_vote_data_ballot_politician_summary_annual

Purpose: Annual voting behavior and effectiveness metrics

Schema:

CREATE VIEW view_riksdagen_vote_data_ballot_politician_summary_annual AS
SELECT 
    intressent_id as person_id,
    EXTRACT(YEAR FROM vote_date) as vote_year,
    COUNT(*) as total_votes,
    COUNT(CASE WHEN vote = 'Ja' THEN 1 END) as yes_votes,
    COUNT(CASE WHEN vote = 'Nej' THEN 1 END) as no_votes,
    COUNT(CASE WHEN vote = 'Avstår' THEN 1 END) as abstain_votes,
    COUNT(CASE WHEN vote = 'Frånvarande' THEN 1 END) as absent_votes,
    ROUND(100.0 * COUNT(CASE WHEN vote != 'Frånvarande' THEN 1 END) / 
          NULLIF(COUNT(*), 0), 2) as participation_rate,
    COUNT(DISTINCT ballot_id) as ballots_participated
FROM vote_data
GROUP BY intressent_id, EXTRACT(YEAR FROM vote_date);

Key Metrics:

  • Annual vote counts by type
  • Annual participation rate
  • Ballots participated in
  • Year-over-year trend comparison

Intelligence Product: Annual Performance Reviews
Analysis Framework: Temporal Analysis
Intelligence Value: ⭐⭐⭐⭐ HIGH


Modified Views (0)

None

Deprecated Views (0)

None

Performance Impact

  • Added indexes on vote_date column for temporal queries
  • Materialized view candidates for daily/monthly summaries
  • Estimated query time: 100-500ms depending on date range

[1.33.0] - 2025-11-10

Added Views (5)

Behavioral Pattern Detection Views

Supporting new risk rules P-16 through P-20, PA-06 through PA-07, C-03 through C-04, and M-04

Views Added:

  1. view_politician_voting_consistency - Voting pattern stability analysis
  2. view_politician_engagement_trends - Parliamentary engagement tracking
  3. view_party_internal_cohesion - Party vote unity metrics
  4. view_committee_backlog_tracking - Committee workload analysis
  5. view_ministry_response_times - Ministry responsiveness metrics

Combined Schema Specifications: See full_schema.sql for complete definitions

Intelligence Value: ⭐⭐⭐⭐ HIGH - Supports advanced behavioral analysis


Modified Views (0)

None

Deprecated Views (0)

None


[1.32.0] - 2025-11-01

Added Views (2)

1. view_riksdagen_party_ballot_support_annual_summary

Purpose: Annual party voting alignment matrix and coalition pattern analysis

Key Metrics:

  • Party-to-party voting agreement rates
  • Coalition cohesion scores
  • Annual alignment trends
  • Cross-party support patterns

Intelligence Product: Coalition Analysis Reports
Analysis Framework: Network Analysis
Intelligence Value: ⭐⭐⭐⭐⭐ VERY HIGH


2. view_riksdagen_committee_productivity

Purpose: Committee decision throughput and member productivity aggregation

Key Metrics:

  • Committee decision counts
  • Average decision time
  • Member contribution metrics
  • Committee effectiveness scores

Intelligence Product: Committee Performance Scorecards
Analysis Framework: Comparative Analysis
Intelligence Value: ⭐⭐⭐⭐ HIGH


Modified Views (0)

None

Deprecated Views (0)

None


[1.31.0] - 2025-10-15

Added Views (8)

Ministry Intelligence Views

Supporting ministry-level risk rules M-01 through M-05

Views Added:

  1. view_ministry_budget_variance - Budget execution tracking
  2. view_ministry_performance_metrics - Effectiveness indicators
  3. view_ministry_accountability_score - Parliamentary response rates
  4. view_ministry_decision_speed - Decision approval timelines
  5. view_ministry_committee_interactions - Cross-ministry collaboration
  6. view_ministry_policy_outcomes - Policy implementation tracking
  7. view_ministry_resource_utilization - Resource efficiency metrics
  8. view_ministry_stakeholder_satisfaction - External feedback integration

Intelligence Value: ⭐⭐⭐⭐⭐ VERY HIGH - Completes executive branch monitoring


Modified Views (0)

None

Deprecated Views (0)

None


[1.30.0] - 2025-09-01

Added Views (5)

Experience and Seniority Tracking Views

Views Added:

  1. view_politician_experience_score - Years of service and role weighting
  2. view_politician_seniority_ranking - Comparative experience ranking
  3. view_politician_career_progression - Role advancement tracking
  4. view_committee_experience_distribution - Committee seniority analysis
  5. view_government_experience_metrics - Executive branch experience

Intelligence Value: ⭐⭐⭐⭐ HIGH - Supports career trajectory analysis


Modified Views (0)

None

Deprecated Views (0)

None


[1.20.0] - 2024-06-01

Added Views (20)

Core Intelligence Views

Politician Views (8):

  1. view_riksdagen_politician - Basic politician aggregation
  2. view_riksdagen_politician_document_daily_summary - Document productivity
  3. view_riksdagen_politician_document_summary - Document totals
  4. view_riksdagen_politician_vote_summary - Voting records
  5. view_riksdagen_politician_party_summary - Party membership
  6. view_riksdagen_politician_ballot_summary - Ballot participation
  7. view_riksdagen_politician_committee_summary - Committee assignments
  8. view_riksdagen_politician_government_summary - Government roles

Party Views (5):

  1. view_riksdagen_party_summary - Party aggregation metrics
  2. view_riksdagen_party_ballot_support_summary - Voting patterns
  3. view_riksdagen_party_document_summary - Party document productivity
  4. view_riksdagen_party_vote_summary - Party voting records
  5. view_riksdagen_party_committee_summary - Party committee representation

Committee Views (4):

  1. view_riksdagen_committee - Committee basic info
  2. view_riksdagen_committee_decisions - Decision tracking
  3. view_riksdagen_committee_members - Membership lists
  4. view_riksdagen_committee_document_summary - Committee documents

Vote Views (3):

  1. view_riksdagen_vote_data_ballot_summary - Ballot aggregation
  2. view_riksdagen_vote_data_ballot_party_summary - Party vote patterns
  3. view_riksdagen_vote_data_ballot_politician_vote_summary - Politician votes

Intelligence Value: ⭐⭐⭐⭐⭐ VERY HIGH - Foundation of all intelligence products


Modified Views (0)

None

Deprecated Views (0)

None


[1.10.0] - 2022-06-01

Added Views (10)

Initial Intelligence Product Views

Views Added:

  1. view_application_user_activity - User engagement tracking
  2. view_application_session_summary - Session analytics
  3. view_audit_trail - Audit logging
  4. view_data_quality_metrics - Data quality monitoring
  5. view_system_health - Platform health indicators
  6. view_government_role_summary - Government position tracking
  7. view_electoral_region_summary - Regional analysis
  8. view_political_party_summary - Party information
  9. view_world_bank_indicators - Economic indicators
  10. view_financial_authority_data - Government financial data

Intelligence Value: ⭐⭐⭐ MEDIUM - Supporting analytics


Modified Views (0)

None

Deprecated Views (0)

None


[1.0.0] - 2014-11-01

Added Views (4)

Foundation Views

Views Added:

  1. view_riksdagen_committee - Committee tracking
  2. view_riksdagen_government - Government ministerial positions
  3. view_riksdagen_politician - Politician aggregation
  4. view_riksdagen_party_summary - Party-level indicators

Schema: Basic aggregation views without advanced analytics

Intelligence Value: ⭐⭐⭐ MEDIUM - Initial analytical layer


Modified Views (0)

None

Deprecated Views (0)

None


View Categories Reference

By Intelligence Function

Political Scorecards (15 views):

  • Politician performance metrics
  • Attendance and participation
  • Legislative productivity
  • Voting behavior analysis

Coalition Analysis (8 views):

  • Party alignment matrices
  • Coalition cohesion metrics
  • Cross-party voting patterns
  • Government stability indicators

Risk Assessment (12 views):

  • Behavioral anomaly detection
  • Performance decline tracking
  • Democratic accountability monitoring
  • Crisis indicators

Trend Analysis (10 views):

  • Temporal pattern recognition
  • Historical trend analysis
  • Seasonal adjustments
  • Momentum tracking

Network Analysis (6 views):

  • Influence mapping
  • Power structure analysis
  • Coalition detection
  • Broker identification

Decision Intelligence (8 views):

  • Ministry effectiveness
  • Policy impact assessment
  • Decision speed and quality
  • Budget execution

Document Intelligence (7 views):

  • Legislative productivity
  • Policy focus analysis
  • Document workflow tracking

Performance Monitoring (11 views):

  • Committee effectiveness
  • Ministry performance
  • Party strength metrics
  • Individual politician productivity

Audit & Application (8 views):

  • Platform usage tracking
  • User engagement analytics
  • System health monitoring
  • Data quality metrics

Performance Optimization History

Materialized Views (28 total)

v1.32.0 - Performance optimization release:

  • Converted 28 high-traffic views to materialized views
  • Implemented automated refresh schedules
  • Added incremental refresh where applicable
  • Performance improvement: 10-50x query speed increase

Materialized View List:

  1. view_riksdagen_politician (refreshed daily)
  2. view_riksdagen_party_summary (refreshed daily)
  3. view_riksdagen_vote_data_ballot_summary (refreshed daily)
  4. view_riksdagen_committee_productivity (refreshed weekly)
  5. view_riksdagen_party_ballot_support_annual_summary (refreshed weekly) ... (23 more views)

Refresh Strategy:

  • Daily: High-traffic, frequently changing data
  • Weekly: Aggregated historical data
  • Monthly: Long-term trend analysis
  • On-Demand: Ad-hoc analytical queries

Index Additions Supporting Views

v1.34.0

  • Added index on vote_date for temporal views
  • Added composite index on (intressent_id, vote_date) for politician summaries
  • Performance improvement: 60% faster temporal queries

v1.33.0

  • Added indexes on committee_id, ministry_id for cross-entity queries
  • Performance improvement: 40% faster join operations

v1.32.0

  • Added indexes on party, person_id for coalition analysis
  • Added covering indexes for ballot summaries
  • Performance improvement: 70% faster coalition analysis queries

v1.31.0

  • Added indexes on ministry-related foreign keys
  • Performance improvement: 50% faster ministry queries

View Dependency Diagram

graph TD
    A[Base Tables] --> B[Core Views v1.0]
    B --> C[Intelligence Views v1.20]
    C --> D[Risk Assessment Views v1.30-v1.33]
    C --> E[Decision Intelligence Views v1.35-v1.36]
    D --> F[Intelligence Products]
    E --> F
    B --> G[Performance Views v1.32]
    G --> F
    
    style A fill:#e1f5ff
    style B fill:#fff9cc
    style C fill:#ccffcc
    style D fill:#ffcccc
    style E fill:#ffcccc
    style F fill:#e6ccff
    style G fill:#ffe6cc

Contribution Guidelines

When adding new database views:

  1. Document in this changelog with:

    • Complete schema definition (SQL)
    • Purpose and intelligence value
    • Key metrics provided
    • Sample queries demonstrating usage
    • Intelligence products using the view
    • Analysis frameworks supported
    • Performance characteristics
  2. Update DATABASE_VIEW_INTELLIGENCE_CATALOG.md with:

    • View entry in appropriate category
    • Cross-references to frameworks
    • Usage examples
  3. Update INTELLIGENCE_DATA_FLOW.md with:

    • Data pipeline mappings
    • Framework-to-view relationships
  4. Consider materialization:

    • If query time > 500ms, consider materialized view
    • Document refresh strategy
    • Add to refresh-all-views.sql script
  5. Add appropriate indexes:

    • Index foreign key columns
    • Add covering indexes for common queries
    • Document index additions in this changelog
  6. Test thoroughly:

    • Verify view returns expected data
    • Test with various date ranges
    • Validate performance characteristics
    • Ensure null handling is correct

Document Metadata

Maintained By: Intelligence Operative Agent (@intelligence-operative)
Last Updated: 2025-11-25
Document Version: 1.0
Status: Active
Review Frequency: Updated with each platform release
Total Views Tracked: 85 views
Latest Version: v1.36.0


For intelligence-specific context and usage patterns, see CHANGELOG_INTELLIGENCE_ANALYSIS.md