+
    Vej*                     >    R t ^ RIHt RtRtRtRtR R ltR R ltR# )	u  cire_announcements — sweep nacional dos anúncios de insolvência do CITIUS.

O scrape CIRE existente é por NIF e só vê empresas já registadas. Estas tabelas
guardam **todos** os anúncios publicados, independentemente de darem match hoje,
porque o cruzamento com a watchlist é retroactivo: quando um cliente novo entrar,
tem de haver histórico para ele. Mesma razão que levou à `dre_raw` (migration
0014).

As partes ficam em tabela própria e **não** são duplicadas no `raw`. O
`processes.raw` faz essa duplicação e custa ~7,7 kB por linha (83 kB no pior
caso, uma insolvência com centenas de credores); a esta escala — ~110 anúncios
por dia — isso seriam ~440 MB/ano em vez dos ~110 MB/ano desta forma.
)op00200019Nc                    V ^8  d   QhRR/#    returnN )formats   "+alembic/versions/0020_cire_announcements.py__annotate__r      s     A A A    c                  2    \         P                  ! R 4       R# )u	  
        CREATE TABLE cire_announcements (
            id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
            referencia TEXT,
            tribunal TEXT,
            juizo TEXT,
            ato TEXT,
            ato_group TEXT,
            process_number TEXT,
            species TEXT,
            pub_date DATE,
            action_date DATE,
            raw JSONB NOT NULL DEFAULT '{}'::jsonb,

            -- PDF do anúncio: só é puxado para actos que abrem prazo de
            -- reclamação; nos restantes fica a pedido, quando houver match.
            pdf_token TEXT,
            has_pdf BOOLEAN NOT NULL DEFAULT false,
            pdf_text TEXT,
            detail_fetched_at TIMESTAMPTZ,

            claim_days INTEGER,
            claim_days_source TEXT,
            editos_days INTEGER,
            claim_deadline DATE,
            claim_deadline_estimated BOOLEAN NOT NULL DEFAULT false,
            opens_claim_window BOOLEAN NOT NULL DEFAULT false,

            insolvency_date DATE,
            debtor_nif CHAR(9),
            debtor_name TEXT,
            debtor_address TEXT,
            admin_name TEXT,
            admin_email TEXT,
            admin_nif CHAR(9),

            dedup_hash CHAR(64) NOT NULL UNIQUE,
            first_seen_at TIMESTAMPTZ NOT NULL DEFAULT now(),
            last_seen_at TIMESTAMPTZ NOT NULL DEFAULT now()
        );
        CREATE INDEX ix_cire_ann_pub_date ON cire_announcements(pub_date DESC);
        CREATE INDEX ix_cire_ann_deadline ON cire_announcements(claim_deadline)
            WHERE claim_deadline IS NOT NULL;
        CREATE INDEX ix_cire_ann_process ON cire_announcements(process_number);
        CREATE INDEX ix_cire_ann_debtor_nif ON cire_announcements(debtor_nif)
            WHERE debtor_nif IS NOT NULL;
        CREATE INDEX ix_cire_ann_claims ON cire_announcements(opens_claim_window)
            WHERE opens_claim_window;

        CREATE TABLE cire_announcement_parties (
            id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
            announcement_id UUID NOT NULL
                REFERENCES cire_announcements(id) ON DELETE CASCADE,
            role TEXT,
            name TEXT NOT NULL,
            nif CHAR(9)
        );
        CREATE INDEX ix_cire_ann_parties_ann ON cire_announcement_parties(announcement_id);
        CREATE INDEX ix_cire_ann_parties_nif ON cire_announcement_parties(nif)
            WHERE nif IS NOT NULL;
        CREATE INDEX ix_cire_ann_parties_name_trgm
            ON cire_announcement_parties USING gin (name gin_trgm_ops);
        Nr   executer	   r   r   upgrader      s    JJ>	@r   c                    V ^8  d   QhRR/# r   r	   )r
   s   "r   r   r   Z   s      4 r   c                  2    \         P                  ! R 4       R# )zr
        DROP TABLE IF EXISTS cire_announcement_parties;
        DROP TABLE IF EXISTS cire_announcements;
        Nr   r	   r   r   	downgrader   Z   s    JJ	r   )	__doc__alembicr   revisiondown_revisionbranch_labels
depends_onr   r   r	   r   r   <module>r      s/    
AHr   