
    ;jC                    L   S SK Jr  S SKrS SKrS SKJr  S SKJr  \" \5      R                  S-  r
Sr\
4SS jjrSS jr\
4SS	 jjr\
4SS
 jjr\S:X  aP  S SKr\R$                  " SS9r\R)                  SSS9  \R+                  5       r\" S\" \R                  5       35        gg)    )annotationsN)Path)Anyzemail_agent.dba)  
CREATE TABLE IF NOT EXISTS prospects_v2 (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  project_id TEXT NOT NULL,
  company TEXT NOT NULL,
  industry TEXT,
  location TEXT,
  website TEXT,
  email TEXT,
  phone TEXT,
  contact_page TEXT,
  company_size TEXT,
  need_signals TEXT,
  fit_rationale TEXT,
  sources_json TEXT NOT NULL,
  research_method TEXT NOT NULL,
  status TEXT NOT NULL DEFAULT 'researched',
  human_gate TEXT NOT NULL DEFAULT 'pending',
  created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
  updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
c                    [         R                  " U 5       nUR                  [        5        UR	                  5         S S S 5        g ! , (       d  f       g = fN)sqlite3connectexecutescriptSCHEMAcommit)db_pathconns     /app/prospect_store_v2.pyinitr       s3    		!T6" 
"	!	!s   &A
Ac                R  ^  / SQnU Vs/ s H  nT R                  U5      (       a  M  UPM     nnU(       a  [        SU 35      e[        T R                  S5      [        5      (       a
  T S   (       d  [        S5      e[	        U 4S jS 5       5      (       d  [        S5      eg s  snf )N)
project_idcompanysourcesresearch_methodzmissing required fields: r   z sources must be a non-empty listc              3  F   >#    U  H  nTR                  U5      v   M     g 7fr   )get).0kitems     r   	<genexpr>validate.<locals>.<genexpr>-   s     R$Qqtxx{{$Qs   !)emailphonecontact_pagewebsitez5at least one public business contact path is required)r   
ValueError
isinstancelistany)r   requiredr   missings   `   r   validater'   &   s    FH"6(Q$((1+q(G64WI>??dhhy)400Y;<<R$QRRRPQQ S 7s
   B$B$c                   [        U 5        [        U5        [        R                  " U5       nS nU R	                  S5      (       a(  UR                  SU S   U S   45      R                  5       nU(       a  US   nUR                  SU R	                  S5      U R	                  S5      U R	                  S5      U R	                  S	5      U R	                  S
5      U R	                  S5      [        R                  " U R	                  S/ 5      SS9U R	                  S5      [        R                  " U S   SS9U S   U45        OUR                  SU S   U S   U R	                  S5      U R	                  S5      U R	                  S5      U R	                  S5      U R	                  S	5      U R	                  S
5      U R	                  S5      [        R                  " U R	                  S/ 5      SS9U R	                  S5      [        R                  " U S   SS9U S   45      nUR                  nUR                  5         S S S 5        U$ ! , (       d  f       W$ = f)Nr    z<SELECT id FROM prospects_v2 WHERE project_id=? AND website=?r   r   a  UPDATE prospects_v2 SET industry=?, location=?, email=?, phone=?,
                   contact_page=?, company_size=?, need_signals=?, fit_rationale=?,
                   sources_json=?, research_method=?, updated_at=CURRENT_TIMESTAMP
                   WHERE id=?industrylocationr   r   r   company_sizeneed_signalsF)ensure_asciifit_rationaler   r   a  INSERT INTO prospects_v2 (
                   project_id,company,industry,location,website,email,phone,contact_page,
                   company_size,need_signals,fit_rationale,sources_json,research_method
                   ) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?)r   )r'   r   r   r	   r   executefetchonejsondumps	lastrowidr   )r   r   r   existingprospect_idcurs         r   upsertr7   1   s   TNM		!T88I||Nl#T)_5 hj  "1+KLL!
 HHZ($((:*>@QHHW%txx'?.AYJJtxx;%PHH_-tzz$y/X]/^*+[ ,,;
 &Y*9MtxxXbOcHHY''):DHHW<MtxxXfOgHH^,djj.RT9Udi.jHH_-tzz$y/X]/^*+C --KK 
"L M 
"	!L s   HH<<
Ic                    [         R                  " [        U 5      R                  SS95      n[	        U[
        5      (       a  UOUR                  S/ 5      nSnU H  n[        XQ5        US-  nM     U$ )Nzutf-8)encoding	prospectsr      )r1   loadsr   	read_textr"   r#   r   r7   )pathr   dataitemscountr   s         r   import_jsonrB   ]   sg    ::d4j**G*<=DtT**Db0IEEt
  L    __main__z$Import scraper/browser-use prospects)descriptionz--import-jsonT)r%   z	imported=)r   r   returnNone)r   dict[str, Any]rF   rG   )r   rH   r   r   rF   int)r>   strr   r   rF   rI   )
__future__r   r1   r   pathlibr   typingr   __file__parentDB_PATHr   r   r'   r7   rB   __name__argparseArgumentParserparseradd_argument
parse_argsargsprint rC   r   <module>rZ      s    "    
x.

"2
2
, ! R 29 )X ,3  z$$1WXF
$7D	Ik$"2"234
56 rC   