
    ;j-                        d dl mZ d dlZd dlZd dlmZ d dlmZmZm	Z	 d dl
mZ efddZefddZefddZdd	Zed
k(  r e        yy)    )annotationsN)Path)DB_PATHinit_schemasync_projects)score_campaignc                    t        j                  |       5 }|j                  d      j                         }d d d        D ]+  }t	        |d   dd|d   dd|d   xs ddd|d	           - y # 1 sw Y   :xY w)
NzeSELECT project_id,title,potential_score,confidence FROM product_catalog ORDER BY potential_score DESCr   28s |    42s   z>4   )sqlite3connectexecutefetchallprint)db_pathconnrowsrows       lead_engine_v2.pylist_projectsr      s    		! T||s

(* 	  LQCAs|3s1v{2.>c#a&JKL	 s    A//A8c                n   d}| |g}|r|dz  }|j                  |       |dz  }t        j                  |      5 }|j                  ||      j	                         }d d d        D ]C  }t        d|d    d|d    d|d	    d|d
    d|d   dd|d           t        d|d           E y # 1 sw Y   RxY w)Na  
      SELECT m.id,c.company,c.email,p.title,m.lead_score,m.human_gate,m.rationale
      FROM lead_project_matches m
      JOIN cold_contacts c ON c.id=m.contact_id
      JOIN product_catalog p ON p.project_id=m.project_id
      WHERE c.campaign_id=? AND m.lead_score>=?
    z AND m.project_id=?z% ORDER BY m.lead_score DESC LIMIT 100[r   z] r   r   r   r   z	 | Score    z.2fz | Gate    z       )appendr   r   r   r   r   )	campaign_id
project_id	min_scorer   queryparamsr   r   rs	            r   	shortlistr'      s    E 9%F&&j!	44E		! 6T||E6*3356 !A$r!A$s1Q4&AaD61Q4*HQqTFSTQqTFm6 6s   !B++B4c                h   |dvrt        d      t        j                  |      5 }|j                  d|| f       |j	                          |j                  d| f      j                         }d d d        st        d|  d      t        d|d    d	|d
    d|d    d|d           y # 1 sw Y   >xY w)N>   pendingapprovedrejectedz.decision must be approved, rejected or pendingzUUPDATE lead_project_matches SET human_gate=?, updated_at=CURRENT_TIMESTAMP WHERE id=?zOSELECT id,human_gate,project_id,contact_id FROM lead_project_matches WHERE id=?zMatch z
 not foundz	match_id=r   z gate=r   z	 project=r   z	 contact=r   )
ValueErrorr   r   r   commitfetchone
SystemExitr   )match_iddecisionr   r   r   s        r   set_gater2   (   s    ::IJJ		! 	Tcx 	
 	ll]K
 (* 		 6(:677	Ic!fXVCF89SVHIc!fX
NO	 	s   AB((B1c                    t        j                  d      } | j                  dd      }|j                  d       |j                  d       |j                  d      }|j	                  d	t
        d
       |j                  d      }|j	                  d	t
        d
       |j	                  d       |j	                  dt        d       |j                  d      }|j	                  dt
        d
       |j	                  dg dd       | j                         }t                |j                  dk(  rt        dt                       y |j                  dk(  rt                t                y |j                  dk(  r"t        dt        |j                                y |j                  dk(  r,t        |j                  |j                   |j"                         y |j                  dk(  r!t%        |j&                  |j(                         y y )NzAgent Solutions Lead Engine 2.0)descriptioncmdT)destrequiredzsync-projectsprojectsscorez
--campaign)typer7   r'   z	--projectz--min-scoreg      @)r:   defaultgatez--matchz
--decision)r*   r+   r)   )choicesr7   zsynced_projects=zscored_matches=)argparseArgumentParseradd_subparsers
add_parseradd_argumentintfloat
parse_argsr   r5   r   r   r   r   campaignr'   projectr#   r2   matchr1   )parsersubr9   shortr<   argss         r   mainrM   8   s   $$1RSF


UT

:CNN?#NN:NN7#E	|#=NN;'E	|#=	{#	}5#>>>&!DicD9l,MX\]DMxx?"  123	Z		W	t}} =>?@	[	 $--t~~>	V	T]]+ 
    __main__)r   r   returnNone)
r!   rC   r"   z
str | Noner#   rD   r   r   rP   rQ   )r0   rC   r1   strr   r   rP   rQ   )rP   rQ   )
__future__r   r>   r   pathlibr   	v2_schemar   r   r   lead_scoring_v2r   r   r'   r2   rM   __name__ rN   r   <module>rY      sW    "    9 9 * #* L [b ( <C P ,@ zF rN   