
    Lj                    j    S SK Jr  S SKrS SKrS SKrS SKJrJr  S SKJrJ	r	J
r
  SS jrSS jrS	S jrg)
    )annotationsN)datetimetimezone)connectensure_dirsINTERNAL_TOKEN_FILEc                     [         R                  " [        R                  5      R	                  SS9R                  5       $ )Nr   )microsecond)r   nowr   utcreplace	isoformat     1/mnt/data/_core_build/package/core/core_schema.pyutc_nowr   
   s,    <<%--!-<FFHHr   c                 T   [        5         [        R                  " 5       (       a+  [        R                  " SS9R	                  5       n U (       a  U $ [
        R                  " S5      n [        R                  " U SS9   [        R                  " [        S5        U $ ! [         a     U $ f = f)Nzutf-8)encoding0   i  )r   r   exists	read_textstripsecretstoken_urlsafe
write_textoschmodOSError)tokens    r   ensure_internal_tokenr       s    M!!###--w?EEGL!!"%E""57;
$e, L  Ls   <B 
B'&B'c                     [        5         [        5         [        5        n U R                  S5        U R	                  S5        U R	                  S5        U R                  5         S S S 5        g ! , (       d  f       g = f)Na  
        CREATE TABLE IF NOT EXISTS connectors(
            connector_key TEXT PRIMARY KEY,
            connector_name TEXT NOT NULL,
            connector_type TEXT NOT NULL,
            base_url TEXT,
            status TEXT NOT NULL DEFAULT 'not_configured',
            last_test_at TEXT,
            last_sync_at TEXT,
            last_error TEXT,
            meta_json TEXT NOT NULL DEFAULT '{}'
        );

        CREATE TABLE IF NOT EXISTS tracked_documents(
            id INTEGER PRIMARY KEY,
            source_key TEXT NOT NULL,
            document_slug TEXT NOT NULL,
            document_code TEXT NOT NULL,
            search_query TEXT NOT NULL,
            discovered_url TEXT,
            enabled INTEGER NOT NULL DEFAULT 1,
            last_checked_at TEXT,
            last_changed_at TEXT,
            last_hash TEXT,
            last_snapshot_id INTEGER,
            last_error TEXT,
            UNIQUE(source_key, document_slug)
        );

        CREATE TABLE IF NOT EXISTS source_snapshots(
            id INTEGER PRIMARY KEY,
            source_key TEXT NOT NULL,
            document_slug TEXT NOT NULL,
            document_code TEXT NOT NULL,
            source_url TEXT NOT NULL,
            checked_at TEXT NOT NULL,
            content_hash TEXT NOT NULL,
            title TEXT,
            text_path TEXT,
            html_path TEXT,
            downloaded_file_path TEXT,
            manifest_path TEXT,
            is_current INTEGER NOT NULL DEFAULT 1,
            extraction_status TEXT NOT NULL DEFAULT 'raw_saved',
            extraction_meta_json TEXT NOT NULL DEFAULT '{}'
        );

        CREATE INDEX IF NOT EXISTS idx_core_snapshots_document
            ON source_snapshots(source_key, document_slug, checked_at);
        CREATE INDEX IF NOT EXISTS idx_core_tracked_enabled
            ON tracked_documents(source_key, enabled);

        CREATE TABLE IF NOT EXISTS ai_runs(
            id INTEGER PRIMARY KEY,
            purpose TEXT NOT NULL,
            model TEXT NOT NULL,
            created_at TEXT NOT NULL,
            status TEXT NOT NULL,
            input_hash TEXT,
            result_meta_json TEXT NOT NULL DEFAULT '{}',
            error TEXT
        );
        u  
            INSERT INTO connectors(connector_key,connector_name,connector_type,base_url,status,meta_json)
            VALUES('techexpert','Техэксперт','legal_source','http://nps3.cntd.ru/docs','not_configured','{}')
            ON CONFLICT(connector_key) DO UPDATE SET
              connector_name=excluded.connector_name,
              connector_type=excluded.connector_type,
              base_url=COALESCE(connectors.base_url, excluded.base_url)
        a  
            INSERT INTO connectors(connector_key,connector_name,connector_type,base_url,status,meta_json)
            VALUES('openai','OpenAI / ChatGPT','ai','https://api.openai.com','not_configured',
                   '{"model":"gpt-5.6-sol"}')
            ON CONFLICT(connector_key) DO UPDATE SET
              connector_name=excluded.connector_name,
              connector_type=excluded.connector_type
        )r   r    r   executescriptexecutecommit)cons    r   init_core_schemar&      sd    M	c > >	@ 	  	 	  	 	

c 
s   AA,,
A:)returnstr)r'   None)
__future__r   jsonr   r   r   r   core_dbr   r   r   r   r    r&   r   r   r   <module>r-      s+    "   	 ' = =ITr   