news_packs


Description

{“what”:“A collection of news articles and derived metrics for a single topic.”,“why”:“Groups all news data and metadata for one topic so it can be cached and served as a unit.”,“by”:“fleet-annotator-worker”,“at”:“2026-09-23T00:09:58.950324948+00:00”}

Columns

Column Type Size Nulls Auto Default Children Parents Comments
id serial 10 √ nextval('news_packs_id_seq'::regclass)

{“what”:“Unique integer identifier for each news pack.”,“why”:“Uniquely identifies a pack for updates, deletion, and references from other tables.”,“by”:“fleet-annotator-worker”,“at”:“2026-09-23T00:09:58.962707292+00:00”}

topic text 2147483647 null

{“what”:“The subject or keyword the news pack is about, e.g. ‘AI’.”,“why”:“Determines which news pack to retrieve for a given topic; without it packs are indistinguishable.”,“by”:“fleet-annotator-worker”,“at”:“2026-09-23T00:09:58.976083419+00:00”}

news_data jsonb 2147483647 null

{“what”:“JSON payload containing the news articles and their metadata.”,“why”:“Holds the actual news content; without it the pack has no data to serve.”,“by”:“fleet-annotator-worker”,“at”:“2026-09-23T00:09:58.990120078+00:00”}

source_mode text 2147483647 'manual'::text

{“what”:“Source selection mode: ‘manual’ or other allowed values.”,“why”:“Indicates whether sources were manually curated or automatically chosen; affects trust and refresh logic.”,“by”:“fleet-annotator-worker”,“at”:“2026-09-23T00:09:59.003924346+00:00”}

sources_verified bool 1 √ false

{“what”:“Flag indicating whether the news sources have been verified as reliable.”,“why”:“Distinguishes verified packs from unverified ones; unverified packs may be excluded from production use.”,“by”:“fleet-annotator-worker”,“at”:“2026-09-23T00:09:59.018169704+00:00”}

entity_count int4 10 √ null

{“what”:“Number of distinct entities (e.g., people, orgs) extracted from the news.”,“why”:“Provides a quick metric for pack size without parsing JSON; used for filtering or display.”,“by”:“fleet-annotator-worker”,“at”:“2026-09-23T00:09:59.036565927+00:00”}

stat_count int4 10 √ null

{“what”:“Number of statistics or data points referenced in the news.”,“why”:“Summarizes the pack’s statistical content; helps compare packs or decide if more data is needed.”,“by”:“fleet-annotator-worker”,“at”:“2026-09-23T00:09:59.049228589+00:00”}

case_ref_count int4 10 √ null

{“what”:“Number of case references (e.g., legal cases) mentioned in the news.”,“why”:“Indicates legal relevance; used to prioritize packs for legal research.”,“by”:“fleet-annotator-worker”,“at”:“2026-09-23T00:09:59.063277678+00:00”}

created_at timestamptz 35,6 √ now()

{“what”:“Timestamp when the pack was created, in UTC.”,“why”:“Tracks pack age; used for sorting and auditing.”,“by”:“fleet-annotator-worker”,“at”:“2026-09-23T00:09:59.077110700+00:00”}

expires_at timestamptz 35,6 √ (now() + '90 days'::interval)

{“what”:“Timestamp when the pack becomes stale and should be refreshed, in UTC.”,“why”:“Defines cache lifetime; without it packs would be served indefinitely with outdated news.”,“by”:“fleet-annotator-worker”,“at”:“2026-09-23T00:09:59.100701119+00:00”}

Indexes

Constraint Name Type Sort Column(s)
news_packs_pkey Primary key Asc id
idx_news_topic Performance Asc topic

Check Constraints

Constraint Name Constraint
news_packs_source_mode_check (source_mode = ANY (ARRAY['serp'::text, 'internal'::text, 'manual'::text]))

Relationships