
    ja                     N   d dl m Z mZ d dlZd dlmZ d dlmZmZ ddlm	Z	m
Z
mZmZmZmZ ddd	d
dd	ddd	ddd	ddd	ddd	dZddddddZh dZh dZdddddZej        j        ej        j        fZdeded ed!dfd"ZdYdeded#efd$ZdYdeded#ed!efd%Zdeded!efd&Zd' Zd( Z d)ed*ed+ed!e!fd,Z"d- Z#d.ed!e!fd/Z$d.ed!e!fd0Z%d1 Z&d2ed3e'd!dfd4Z(dZd5Z)dZd6Z*d7 Z+dZd8Z,d[d9Z-d\d:Z.d]d;ed<e/d!e'fd=Z0dZd;ed>e'd2efd?Z1d;ed>e'd2efd@Z2d;ed>e'd2efdAZ3d;ed>e'd2efdBZ4d;ed>e'd2efdCZ5d;ed>e'd2efdDZ6d;ed>e'd2efdEZ7d;ed>e'd2efdFZ8d;ed>e'd2efdGZ9d^dHed<e/d!e'fdIZ:dJedz  d!edz  fdKZ;d_dMe'd>e'd2edNe!d!df
dOZ<dPedQed!efdRZ=d`dPedTedUed!e'fdVZ>dYdWedTedz  d!ee'         fdXZ?dS )a    )datetime	timedeltaN)logger)	query_all	query_one   )appeared_at
checked_inlives_at	same_areasame_schoolvictims_of_casez#3B82F6(   fillsizez#7C3AED#   #F59E0B   #10B981#14b8a6   #a855f7)personcaseschoolguardianlocationorganizationz#DC2626z#EA580Cz#CA8A04z#6B7280)extremehighmediumlownormal>	   r   r   r
   
co_suspect
studies_atr	   guardian_ofr   suspected_in>   r   r   r   Z      im  )1m3m6m1ycontext
identifierexcreturnc                 4    t          j        d| ||           d S )NzGraph %s skipped for %s: %s)r   warning)r/   r0   r1   s      F/home/longshao/multi-rider-rag/modules/graph/services/graph_builder.py_warn_graph_queryr6   9   s    
N0':sKKKKK    sqlc                     	 t          ||          S # t          $ r}t          | ||           Y d }~n+d }~wt          $ r}t          | ||           Y d }~nd }~ww xY wd S N)r   _SCHEMA_ERRORSr6   	Exceptionr/   r0   r8   paramsr1   s        r5   _safe_query_oner?   =   s    4f%%% 4 4 4':s33333333 4 4 4':s3333333344    
A2AAAc                     	 t          ||          S # t          $ r}t          | ||           Y d }~n+d }~wt          $ r}t          | ||           Y d }~nd }~ww xY wg S r:   )r   r;   r6   r<   r=   s        r5   _safe_query_allrB   G   s    4f%%% 4 4 4':s33333333 4 4 4':s333333334Ir@   c                     	  |            pg S # t           $ r}t          | ||           Y d }~n+d }~wt          $ r}t          | ||           Y d }~nd }~ww xY wg S r:   )r;   r6   r<   )r/   r0   loaderr1   s       r5   _safe_relation_rowsrE   Q   s    4vxx~2 4 4 4':s33333333 4 4 4':s333333334Is    
A.AAAc                 p    | d S t          | d          r|                                 S t          |           S )N	isoformat)hasattrrG   strvalues    r5   _format_timerL   [   s:    }tuk"" !   u::r7   c                 \    | d S 	 t          |           S # t          t          f$ r | cY S w xY wr:   )float	TypeError
ValueErrorrJ   s    r5   	_to_floatrQ   c   sF    }tU||z"   s    ++schematablecolumnc           	      l    d}	 t          t          || ||d                    S # t          $ r Y dS w xY w)Nz
        SELECT 1 AS exists
        FROM information_schema.columns
        WHERE table_schema = %(schema)s
          AND table_name = %(table)s
          AND column_name = %(column)s
        LIMIT 1
    )rR   rS   rT   F)boolr   r<   )rR   rS   rT   r8   s       r5   _column_existsrW   l   sS    CIcfuPV#W#WXXYYY   uus    % 
33c                     | sd S d t          |                               d          D             }|rd|v rd S |t          z  S )Nc                     h | ]<}|                                 |                                                                 =S  )striplower).0items     r5   	<setcomp>z'_normalize_relations.<locals>.<setcomp>~   sJ       ::<<

  r7   ,all)rI   splitRELATION_NAMES)	relations
normalizeds     r5   _normalize_relationsrf   {   se     t 	NN((--  J
  *,,t&&r7   namec                     | d u p|| v S r:   rZ   selectedrg   s     r5   _relation_enabledrk      s    t/tx//r7   c                     | d uo|| v S r:   rZ   ri   s     r5   _optional_relation_enabledrm      s    44DH$44r7   c                     | sd S t                               t          |                                                                                     }|sd S t          j                    t          |          z
  S )N)days)TIME_RANGE_DAYSgetrI   r[   r\   r   nowr   )
time_rangero   s     r5   _time_range_startrt      si     ts:4466<<>>??D t<>>I400000r7   edgesedgec                     |                     d          |                     d          |                     d          ft          fd| D                       rd S |                     |           d S )Nsourcetargettypec              3      K   | ]F}|                     d           |                     d          |                     d          fk    V  GdS )rx   ry   rz   Nrq   )r]   r^   keys     r5   	<genexpr>z_append_edge.<locals>.<genexpr>   sT      
_
_QUDHHX 2 2DHHV4D4DEL
_
_
_
_
_
_r7   )rq   anyappend)ru   rv   r}   s     @r5   _append_edger      sv    88Htxx11488F3C3C
DC

_
_
_
_Y^
_
_
___ 	LLr7   c                     t                               |t          d         d                   }d|  d|p	| d d         |t          d         d         d| ||ddS )	Nr   r   P_   r   r   )zjhm
risk_score
risk_levelidrz   labelstyle
properties)RISK_COLORSrq   NODE_STYLES)r   xmr   r   r   s        r5   _person_noder      sk    ??:{8'<V'DEED4kktBQBxH(=f(EFF#:ZXX  r7   c                 n    d|  d|p|p	| d d         t           d         | ||t          |          ||ddS )NC_r   
   ajbhajmcayfasjcbdw_mcssfjr   r   rL   r   s         r5   
_case_noder      s^    4kk(t(tCRCyV$ &&
 
  r7   c                 J    d|  d| r
| d d         ndt           d         d| idS )NS_r      u   未知学校rg   r   r   )rg   s    r5   _school_noder      s@    4kk"6crcX&tn  r7   c                 >    d|p|  d| pdt           d         | ||ddS )NG_r   u	   监护人r   r   lxdhr   r   r   s      r5   _guardian_noder      s@    4:2"{Z(t<<  r7   c                     d|  d| r
| d d         ndt           d         | |t          |          t          |          t          |          ddS )NL_r   r   u   未知地点rg   count	last_timejdwdr   )r   rL   rQ   r   s        r5   _location_noder      sf    4kk"6crcZ(%i00B--B--
 
  r7   c           
      j    d|  d| r
| d d         ndt           d         | ||t          |          ddS )NO_r   r   u   未知机构rg   addressr   r   r   r   r   s       r5   _organization_noder      sW    4kk"6crc^,%i00	
 
  r7   r   depthc                 L    i }g }t          |          }t          |          }d}t          |d i          }	|	sg g dS t           |	                    d          |	                    d          |	                    d                    }
|
||
d         <   t          |d          rt           |||           t          |d	          rt           ||           t          |d
          rt           ||           t          |d          rt           ||           t          |d          rt           ||           t          |d          rt           ||           t          |d          rt           ||           t          |d          rt           ||           t          |d          rt           ||           |dk    r=t          |d          r- fd|D             }|d d         D ]}t          ||||           t!          |                                          |dS )Nz
        SELECT p.zjhm, p.xm, s.total_score, s.risk_level
        FROM "jcgkzx_monitor"."wcnr_target_pool" p
        LEFT JOIN "jcgkzx_monitor"."wcnr_score" s ON s.zjhm = p.zjhm
        WHERE p.zjhm = %(zjhm)s
    r   nodesru   r   total_scorer   r   r(   r%   r'   r&   r	   r
   r   r   r      c                 x    g | ]6}|                     d           r|d  k     |                    d d          7S )r    )
startswithreplace)r]   nidr   s     r5   
<listcomp>z&build_person_graph.<locals>.<listcomp>  sV     
 
 
&)~~d##
(+{D{{(:(: KKb!!(:(:(:r7      )rf   rt   r   r   rq   rk   
_add_cases_add_co_suspects_add_guardian_add_school_add_appeared_at_add_checked_inrm   _add_lives_at_add_same_school_add_same_arealistvalues)r   r   rd   rs   r   ru   selected_relationssince
center_sqlcentercenter_nodefirst_layer_personssub_zjhms   `            r5   build_person_graphr      s   EE-i88j))EJ zFD>22F *b)))fjj

=!!6::l#;#; K  +E+d
+^<< .4u---+\:: -ue,,,+];; *dE5)))+\:: (D%'''+];; -ue,,,+\:: ,eU+++!"4jAA *dE5)))!"4mDD -ue,,,!"4kBB +tUE***zz'(:NKKz
 
 
 
-2
 
 
 ,BQB/ 	6 	6Hxu5555%,,..))E:::r7   r   c                    dg}d| i}|r|                     d           ||d<   |r|                     d           ||d<   d                    |          }d                    |	          }t          d
| ||          }	|	D ]}
|
                    d          }|st          ||
                    d          |
                    d          |
                    d          |
                    d          |
                    d                    }|d         |vr|||d         <   d|  |d         ddd}t          ||           d S )Nzx."xyrxx_sfzh" = %(zjhm)sr   za."ajxx_fasj" >= %(since)sr   z!a."ajxx_ajbh" <> %(exclude_ajbh)sexclude_ajbhz AND z
        SELECT a."ajxx_ajbh", a."ajxx_ajmc", a."ajxx_ay", a."ajxx_fasj"
        FROM "ywdata"."zq_zfba_ajxx" a
        JOIN "ywdata"."zq_zfba_xyrxx" x
          ON x."ajxx_join_ajxx_ajbh" = a."ajxx_ajbh"
        WHERE {where_clause}
    )where_clauser   	ajxx_ajbh	ajxx_ajmcajxx_ay	ajxx_fasjajxx_cbdw_mcr   r   r      涉嫌SUSPECTED_INrx   ry   r   rz   )r   joinformatrB   rq   r   r   )r   r   ru   r   r   
conditionsr>   r   r8   casescr   noderv   s                 r5   r   r   #  s   -.Jd^F  6777w .=>>>!-~<<
++L 	L))  L$V<<E " "uu[!! 	EE+EE)EE+EE.!!EE&MM
 
 :U"" $E$t*%t++dhXfggUD!!!!" "r7   c                    d}d}t          d| |d| i          }|d d         D ]}|                    d          }|st          d||d|i          pi }t          ||                    d	          |                    d
          |                    d                    }	|	d         |vr|	||	d         <   t	          |d|  |	d         dddddd           d S )Nat  
        SELECT DISTINCT x2."xyrxx_sfzh", x2."xyrxx_xm"
        FROM "ywdata"."zq_zfba_xyrxx" x1
        JOIN "ywdata"."zq_zfba_xyrxx" x2
          ON x2."ajxx_join_ajxx_ajbh" = x1."ajxx_join_ajxx_ajbh"
          AND x2."xyrxx_sfzh" <> x1."xyrxx_sfzh"
        WHERE x1."xyrxx_sfzh" = %(zjhm)s
          AND NULLIF(BTRIM(COALESCE(x2."xyrxx_sfzh", '')), '') IS NOT NULL
    z~
        SELECT zjhm, total_score, risk_level
        FROM "jcgkzx_monitor"."wcnr_score"
        WHERE zjhm = %(co_zjhm)s
    z_add_co_suspects.peopler   r   
xyrxx_sfzhz_add_co_suspects.scoreco_zjhmxyrxx_xmr   r   r   r   u   共犯
CO_SUSPECTz#EF4444r   stroke	lineWidthrx   ry   r   rz   r   )rB   rq   r?   r   r   )
r   r   ru   r8   	score_sqlco_suspectscor   
score_infor   s
             r5   r   r   G  s6   CI
 "";T3QUWWK#2#  &&&& 	$$ 	
 
 
  	 RVVJ''NN=)):>>,+G+G
 
 :U"" $E$t*U!4kkT$Z| )::
 
 	 	 	 	! r7   c           	      $   d}t          d| |d| i          }|r|                    d          sd S t          |d         d |                    d                    }|d         |vr|||d         <   t          ||d         d|  dd	d
did           d S )Nz
        SELECT jhr1xm, jhr1lxdh
        FROM "ywdata"."b_per_qskjwcnr"
        WHERE zjhm = %(zjhm)s AND jhr1xm IS NOT NULL
        LIMIT 1
    r   r   jhr1xmjhr1lxdhr   r   u   监护GUARDIAN_OFr   r   r   )r?   rq   r   r   )r   r   ru   r8   rowr   s         r5   r   r   n  s    C /4vtn
E
EC cggh'' #h-swwz/B/BCCDDz d4jt*T=I&      r7   c           	          d}t          d| |d| i          }|pi                     d          }|sd S t          |          }|d         |vr|||d         <   t          |d|  |d         ddd	d
id           d S )NzZ
        SELECT yxx FROM "ywdata"."zq_zfba_wcnr_sfzxx" WHERE sfzhm = %(zjhm)s LIMIT 1
    r   r   yxxr   r   u   就读
STUDIES_ATr   r   r   )r?   rq   r   r   )r   r   ru   sfz_sqlrow2school_namer   s          r5   r   r     s    G =$&$HHD:2""5))K $$DDz d4jt++d<I&      r7   c           
      j    t          d  fd          D ]}|                    di                               di           }|                    d          p|                    d          }|sZt          ||                    d          |                    d          |                    d	          |                    d
                    }|d         |vr|||d         <   |                    d          pd  |d         ddd}|                    dddi           t	          ||           d S )Nr   c                  &    t           d          S )N   )limit)r	   r   s   r5   <lambda>z"_add_appeared_at.<locals>.<lambda>  s    +VZbcJdJdJd r7   r   r   device_namerg   r   r   r   r   r   rv   r   APPEARED_ATu   出现rx   ry   rz   r   r   r   z#22C55E)rE   rq   r   
setdefaultr   )r   r   ru   relationpropsr  r   rv   s   `       r5   r   r     sP   '(:DBdBdBdBdee " "VR((,,\2>>ii..C%))F2C2C 	IIgIIk""IIdOOIIdOO
 
 :U"" $E$t*||F## 
!4kk4j!	(
 (
 	(I!6777UD!!!!+" "r7   c           	      l    t          d  fd          D ]}|                    di                               di           }|                    d          p|                    d          }|sZt          ||                    d          p|                    d          |                    d	          |                    d
                    }|d         |vr|||d         <   |                    d          pd  |d         ddd}|                    dddi           t	          ||           d S )Nr   c                  "    t                     S r:   )r
   r  s   r5   r  z!_add_checked_in.<locals>.<lambda>  s    TXIYIY r7   r   r   lgmcrg   lgdzr   r   r   r   rv   r   
CHECKED_INu   入住r  r   r   r   )rE   rq   r   r  r   )r   r   ru   r  r  
hotel_namer   rv   s   `       r5   r   r     sV   '(94AYAYAYAYZZ " "VR((,,\2>>YYv&&;%))F*;*;
 	!IIf59!5!5IIgIIk""	
 
 :U"" $E$t*||F## 
!4kk4j 	(
 (
 	(I!6777UD!!!!)" "r7   c                     t          d  fd          D ]}|                    di                               di           }|                    d          p|                    d          }|sYt          |          }|d                             |           |d         |vr|||d         <   |                    d          pd	  |d         d
dd}|                    dddi           t          ||           d S )Nr   c                  "    t                     S r:   )r   r  s   r5   r  z_add_lives_at.<locals>.<lambda>  s    xPT~~ r7   r   r   r   rg   r   rv   r   LIVES_ATu   居住r  r   r   r   )rE   rq   r   updater  r   )r   r   ru   r  r  r   r   rv   s   `       r5   r   r     s)   '?U?U?U?UVV " "VR((,,\2>>))I&&;%))F*;*; 	g&&\!!%(((:U"" $E$t*||F## 
!4kk4j	(
 (
 	(I!6777UD!!!!!" "r7   c           	          t          d  fd          D ]7}|                    di                               di           }|                    d          }|sEt          ||                    d          p(|                    di                               d          |                    d          |                    d	                    }|d                             |           |d
         |vr|||d
         <   |                    d          pd  |d
         ddd}|                    dddd           t          ||           9d S )Nr   c                  "    t                     S r:   )r   r  s   r5   r  z"_add_same_school.<locals>.<lambda>  s    +VZJ[J[ r7   r   r   r   r   r   r   r   r   rv   r   SAME_SCHOOLu   同校r  r   z#f59e0b      ?r   rE   rq   r   r  r  r   r   r   ru   r  r  	peer_zjhmr   rv   s   `       r5   r   r     so   '(:DB[B[B[B[\\ " "VR((,,\2>>IIf%%	 	IIdOODx||FB77;;GDDIIl##IIl##	
 
 	\!!%(((:U"" $E$t*||F## 
!4kk4j!	(
 (
 	IC!H!HIIIUD!!!!+" "r7   c           	          t          d  fd          D ]7}|                    di                               di           }|                    d          }|sEt          ||                    d          p(|                    di                               d          |                    d          |                    d	                    }|d                             |           |d
         |vr|||d
         <   |                    d          pd  |d
         ddd}|                    dddd           t          ||           9d S )Nr   c                  "    t                     S r:   )r   r  s   r5   r  z _add_same_area.<locals>.<lambda>  s    	RV r7   r   r   r   r   r   r   r   r   rv   r   	SAME_AREAu	   同辖区r  r   r   r  r   r  r  s   `       r5   r   r     so   '(8$@W@W@W@WXX " "VR((,,\2>>IIf%%	 	IIdOODx||FB77;;GDDIIl##IIl##	
 
 	\!!%(((:U"" $E$t*||F## 
!4kk4j 	(
 (
 	IC!H!HIIIUD!!!!+" "r7   r   c           
      j   i }g }t          ddd          }|rdnd}d                    |          }t          |d| i          }|sg g d	S t          |                    d
          |                    d          |                    d          |                    d          |                    d          |                    d                    }|||d         <   d}	t          |	d| i          }
g }|
D ]}|                    d          }|s|                    |           t          ||                    d          |                    d          |                    d                    }|d         |vr|||d         <   t          ||d         |d         ddd           t          |           D ]}|                    d          p|                    d          }|s/t          ||                    d          p|                    d                    }|d         |vr|||d         <   t          ||d         |d         ddd           |dk    r |d d         D ]}t          ||||             |d!k    rt          ||||"           t          |                                          |d	S )#Nywdatazq_zfba_ajxxr   
, a."ssfj"r   z
        SELECT a."ajxx_ajbh", a."ajxx_ajmc", a."ajxx_ay", a."ajxx_fasj",
               a."ajxx_cbdw_mc"{ssfj_select}
        FROM "ywdata"."zq_zfba_ajxx" a
        WHERE a."ajxx_ajbh" = %(ajbh)s
        LIMIT 1
    )ssfj_selectr   r   r   r   r   r   r   r   aV  
        SELECT DISTINCT x."xyrxx_sfzh", x."xyrxx_xm",
               s.total_score, s.risk_level
        FROM "ywdata"."zq_zfba_xyrxx" x
        LEFT JOIN "jcgkzx_monitor"."wcnr_score" s ON s.zjhm = x."xyrxx_sfzh"
        WHERE x."ajxx_join_ajxx_ajbh" = %(ajbh)s
          AND NULLIF(BTRIM(COALESCE(x."xyrxx_sfzh", '')), '') IS NOT NULL
    r   r   r   r   r   r   r   r   saryxx_sfzhr   	saryxx_xmu   受害	VICTIM_OFr   r   )r   r   )has_ssfj)rW   r   r   r   rq   r   r   r   r   r   r   _add_related_casesr   r   )r   r   r   ru   r%  r!  case_sqlr   	case_nodesuspects_sqlsuspectssuspect_idssuspectsuspect_zjhmr   victimvictim_zjhms                    r5   build_case_graphr0    s"   EEh??H"*2,,K 	;''  X~..D *b)))   I 'E)D/L ~66HK  {{<00 	<(((KK
##KK&&KK%%	
 
 :U"" $E$t*U4jo"	
 
 	 	 	 	 "$''  jj((EFJJ},E,E 	KD)9)9)TVZZ=T=TUU:U"" $E$t*U4jo	
 
 	 	 	 	 zz', 	F 	FL|UEEEEEEzz4AAAA%,,..))E:::r7   r   c                 
   t          | pd                                          }|sd S d}|D ]9}|                    |          }|dk    r|d |t          |          z            c S :t          |          dk    r
|d d         n|S )Nr   )u   分局u   县局u   市局u	   公安局r      )rI   r[   findlen)r   rK   markersmarkeridxs        r5   _case_area_prefixr8  ]  s    2$$&&E t9G - -jj  !88+#F++,,,, E

a5!99U2r7   Fcenter_caser%  c                    |                      d          }|                      d          }|                      d          }|r|r|sd S |||d}g }t          |                      d                    }	|	r|                    d           |	 d|d<   |rB|                      d	          r-|                    d
           |                      d	          |d	<   |sd S |rdnd}
d                    |
d                    |                    }t          d|||          }d| }|D ]+}|                     d          }|r||k    r!t          ||                     d          |                     d          |                     d          |                     d          |                     d	                    }|d         |vr|||d         <   t          |||d         ddddddgdd|                     d          t          |                     d                    |                     d          |                     d	          dd           -d S )Nr   r   r   )r   r   r   r   z%a."ajxx_cbdw_mc" LIKE %(area_prefix)s%area_prefixr   za."ssfj" = %(ssfj)sr   r   a  
        -- RELATED_CASE ajxx_fasj BETWEEN
        SELECT a."ajxx_ajbh", a."ajxx_ajmc", a."ajxx_ay", a."ajxx_fasj",
               a."ajxx_cbdw_mc"{ssfj_select}
        FROM "ywdata"."zq_zfba_ajxx" a
        WHERE a."ajxx_ajbh" <> %(ajbh)s
          AND a."ajxx_ay" = %(ay)s
          AND a."ajxx_fasj" BETWEEN %(fasj)s - INTERVAL '30 days'
                                AND %(fasj)s + INTERVAL '30 days'
          AND ({area_clause})
        ORDER BY ABS(EXTRACT(EPOCH FROM (a."ajxx_fasj" - %(fasj)s))) ASC
        LIMIT 10
    z OR )r!  area_clauser&  r   r   r   u   串并RELATED_CASEz#a78bfar  r2  )r   r   lineDashu   同类案由/时空关联)reasonr   r   r   r   )rx   ry   r   rz   r   r   )	rq   r8  r   r   r   rB   r   r   rL   )r9  r   ru   r%  r   r   r   r>   area_conditionsr<  r!  r8   related_casescenter_node_idr   related_ajbhr   s                    r5   r&  r&  i  s   ??;''D		#	#B??;''D r    F
 O#KOON$C$CDDK 2FGGG#. 1 1 1} 1KOOF++ 14555$00v "*2,,K 	;FKK4P4PQQ  $$8$VLLM $[[N  ww{++ 	|t33GGK  GGIGGK  GGN##GGFOO
 
 :U"" $E$t*U$4j" )!QPP5ggi(($SWW[%9%9::77>22 
 
 	 	 	 	 r7   node_idprefixc                 ^    |                      |          r| t          |          d          n| S r:   )r   r4  )rE  rF  s     r5   _strip_node_prefixrH    s/    $+$6$6v$>$>K73v;;<<  GKr7   both	node_type	directionc                 b   i }g }|pd                                                                 }|dk    rt          | d          }t          |||           t	          |||           t          |||           t          |||           t          |||           t          |||           |	                    d| d            nI|dk    r>t          | d          t          d          }fd|d	         D             }|d
         }ng g dS t          |                                          |dS )Nr   r   r   r   r   r   )r   c                 Z    i | ]'}|                     d           d k    |d          |(S )r   r   r|   )r]   r   r   s     r5   
<dictcomp>zexpand_node.<locals>.<dictcomp>  s=    ^^^dR]W[R]R]@]@]dT@]@]@]r7   r   ru   r   )r[   r\   rH  r   r   r   r   r   r   popr0  r   r   )	rE  rJ  rK  r   ru   normalized_typer   graphr   s	           @r5   expand_noderR    sQ   EE B--//5577O(""!'4004&&&ue,,,dE5)))D%'''ue,,,eU+++		+t++t$$$$	F	"	"!'400 Q///^^^^eGn^^^gb)))%,,..))E:::r7   keywordc           	      H   |r&|                                                                 nd }|r|dvrg S d}d}d}d|  d}g }|dv rHt          |d|i          D ]5}|                    |d         d	|                    d
d          d           6|dv rHt          |d|i          D ]5}|                    |d         d|                    dd          d           6|dv rEt          |d|i          D ]2}|                    d          }	|	r|                    |	d|	d           3|S )N>   r   r   r   z
        SELECT zjhm, xm FROM "jcgkzx_monitor"."wcnr_target_pool"
        WHERE xm LIKE %(kw)s OR zjhm LIKE %(kw)s
        LIMIT 10
    z
        SELECT "ajxx_ajbh", "ajxx_ajmc" FROM "ywdata"."zq_zfba_ajxx"
        WHERE "ajxx_ajmc" LIKE %(kw)s OR "ajxx_ajbh" LIKE %(kw)s
        LIMIT 10
    z
        SELECT DISTINCT device_name
        FROM "jcgkzx_monitor"."wcnr_ryrl_gj"
        WHERE device_name LIKE %(kw)s
          AND device_name IS NOT NULL
        LIMIT 10
    r;  )Nr   kwr   r   r   r   )r   rz   r   )Nr   r   r   r   )Nr   r  r   )r[   r\   r   r   rq   )
rS  rJ  rP  
person_sqlr'  location_sqlrU  resultsr   r  s
             r5   search_nodesrY    s   3<Fioo''--///$O ?2PPP	J
H
L 
WBG***Z$44 	^ 	^CNN#f+x#''RVXZJ[J[\\]]]].((Xbz22 	h 	hCNN#k"2FSWWU`bdMeMeffgggg,,,\D":66 	^ 	^C''-00K ^k:P[\\]]]Nr7   r:   )NN)NNNN)NNN)r   NN)r   )F)rI  )@r   r   psycopg2shared.config.configr   shared.db.kingbaser   r   relation_enginer	   r
   r   r   r   r   r   r   rc   OPTIONAL_RELATION_NAMESrp   errorsUndefinedColumnUndefinedTabler;   rI   r<   r6   r?   r   rB   rE   rL   rQ   rV   rW   rf   rk   rm   rt   dictr   r   r   r   r   r   r   intr   r   r   r   r   r   r   r   r   r   r0  r8  r&  rH  rR  rY  rZ   r7   r5   <module>rd     sc   ( ( ( ( ( ( ( (  ' ' ' ' ' ' 3 3 3 3 3 3 3 3                !"--++ "--"B//"B//&33   
 
 
 CBB  


	  /18?3QRLs L L) L L L L L S c      S c  T     # $        3 s C D    
' 
' 
'0c 0d 0 0 0 05s 5t 5 5 5 51 1 1 D T          "            1; 1;S 1; 1;VZ 1; 1; 1; 1;h!" !"S !" !"d !" !" !" !"H$3 $t $D $ $ $ $N D     (c $ t    &"3 "t "D " " " "2"# "d "4 " " " "0" "D " " " " "("3 "t "D " " " "2" "T "$ " " " "2N; N;3 N;s N;4 N; N; N; N;b	3sTz 	3cDj 	3 	3 	3 	3D DD D Dd Dd D_c D D D DNL LS LS L L L L; ; ; ; ;$ ; ; ; ;2# ## ##* #T
 # # # # # #r7   