
    jEM              	          d dl Z d dlZd dlZej                            ej                            e                    Zej                            ej                            edd                    Z	ej
                            d          pej                            e	d          Zej                            ed          Zej                            ed          Zej                            ed          Zej                            ed          Zej                            ed	          ZeeeefZej                            ed
          ZdhZdZdZdedefdZdedefdZdedefdZdeddfdZ eej                            e	d          ej                            e	dd          ej                            e	d                      ej        dd          Z e ej        dd                    Z ej        dd          Z  ej        dd          Z! ej        d d          Z" e ej        d!ej                            e	d"                              Z# ej        d#e          Z$ e ej        d$ ee                              Z% ej        d%e           Z& ej        d&e!          Z' ej        d'e"          Z(ded(edefd)Z)d*e*ed+f         d(edefd,Z+ e)d-d.d/           e+d0d1          d2Z, e)d3d4          Z- e)d5d6          Z. e)d7d8          Z/ej        0                    e/          1                                hZ2 ej        d9d:          pd:3                                Z4e4e,vrd:Z4 e ej        d;d<                    Z5 e6 ej        d=d>                    Z7 e ej        d?d<                    Z8 e ej        d@dA                    Z9 e ej        dBdC          pd           Z: e ej        dDdC          pd           Z; e ej        dEej                            e	dF                              Z< e ej        dGej                            e	dH                              Z= e ej        dIej                            e<dJ                              Z> e ej        dKej                            e	dL                              Z? e ej        dMej                            e	dN                              Z@ e ej        dOej                            e	dP                              ZA e ej        dQ edR                              ZB e ej        dSdT                    ZC e ej        dUdC                    ZD e)dVdW          ZE e)dXdY          ZF e ej        dZej                            e	d[                              ZG e6 ej        d\d]                    ZH eId^ e ej        d_dT                              ZJ e6 ej        d`da                    ZK ej        dbdc          pdc3                                1                                ddvZL ej        ded          ZM e ej        dfdg                    ZN ej        dhd          ZO ej        did          ZP ej        djd          ZQej                            e	dk          ZRej                            e	dldmdndk          ZSej        T                    eR          reRneSZU e ej        doeU                    ZV ej        dpdq          ZW ej        drds          ZX ej        dtdu          ZY ej        dvd          ZZ ej        dwdx          Z[ ej        dydz          Z\ ej        d{d|          Z] ej        d}d~          Z^ ej        dd          Z_ ej        dd          Z` ej        dd          Za ej        dd          Zb ej        dd          Zc ej        dd          Zd ej        dd          Ze ej        dd          Zf ej        dd          Zg ej        dd          pd3                                1                                dv Zh eId e ej        dd                              Zi ej        dd          Zj ej        dd          Zk ej        dd          Zl ej        dd          Zm ej        dd          Zn ej        d ejo        d          p                                          Zq ej        dd          Zr e ej        dd                    ZsdedetfdZudevfdZwdedefdZxdedetfdZydeveef         fdZzdedefdZ{defdZ|dedefdZ}dedeveef         fdZ~deeveef                  fdZdeeveef                  fdZ ej        e<d            ej        eAd            ej        e>d            ej        e?d            ej        e@d            ej        ed            ej        ed            ej        ed           ej
                            dd            e j        e j        d            e j        d          Zej        0                    e,d:                   1                                dk    re                    de,d:                     ej        dd          Z ej        dd          Z ej        dd          Z ej        dd          Z ej        dd          Z ej        dd¦          ZdS )    Nz..	MODEL_DIRmodelyolo
foundation
productioninsightfaceassetszdeployment_slots.json.ptz'person,motorcycle,bicycle,car,bus,truckg?
path_valuereturnc                     t           j                            |           r| S t           j                            t           j                            t
          |                     S )N)ospathisabsabspathjoinBASE_DIR)r   s    6/home/longshao/multi-rider-rag/shared/config/config.py_resolve_pathr      sB    	w}}Z   7??27<<*==>>>    filenamec           	      T   t           j                            | pd                                          }|sdS t          D ]}t           j                            |          s"t          j        |          D ]\  }}}|                    t          j	                   t          |t          j	                  D ]o}|	                                |	                                k    rCt           j                            t           j                            ||                    c c c S pdS )N key)r   r   basenamestripMODEL_SEARCH_ROOTSisdirwalksortstrlowersortedr   r   )r   target_namesearch_rootdirpathdirnames	filenamesentrys          r   _find_model_filer+       s#   '""HN#9#9#;#;<<K r) I Iw}}[)) 	,.GK,@,@ 	I 	I(GXyMMciM(((	sy999 I I;;==K$5$5$7$7777??27<<+G+GHHHHHHHHH 8I	I
 2r   default_filenamec                 <   t           j                            |                                           }|                    d          rt
          S |                    d          s|dk    rt          S |dv rt          S |                    d          rt          S t          S )Nz.onnxz.tszvit-b-32.pt>   
yolo26n.pt
yolo26s.ptr
   )
r   r   r   r#   endswithMODEL_INSIGHTFACE_DIRMODEL_ASSETS_DIRMODEL_YOLO_FOUNDATION_DIRMODEL_YOLO_PRODUCTION_DIRr   )r,   r#   s     r   _model_fallback_dirr5   0   s    G-..4466E~~g %$$~~e   6 6,,,((~~e )((r   pathsc                  *   | D ]}|rt           j                            |          s%	 t          |dd          5 }|D ]}|                                }|r|                    d          sd|vr2|                    dd          \  }}|                                }|                                                    d                              d          }|r|t           j        |<   	 d d d            n# 1 swxY w Y   # t          $ r Y w xY wd S )	Nrutf-8encoding#=   '")	r   r   isfileopenr   
startswithsplitenviron	Exception)r6   r   fhraw_lineliner   values          r   _load_env_filerK   =   st      	27>>$// 		dC'222 	0b " 0 0H#>>++D !4??3#7#7 !3d?? !%C!3!3JC))++C!KKMM//44::3??E 0*/
30	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0  	 	 	H	 s5   DB.C6*D6C:	:D=C:	>D
DDzapp.envopsz.envORACLE_HOSTr   ORACLE_PORT1521ORACLE_SERVICEORACLE_USERORACLE_PASSWORDORACLE_IC_DIRinstantclient_11_2SMS_ORACLE_HOSTSMS_ORACLE_PORTSMS_ORACLE_SERVICESMS_ORACLE_USERSMS_ORACLE_PASSWORD	env_namesc                 `   |D ]}t          j        |d          pd                                }|s.t          |          }t           j                            |          r!t           j                            |          c S t          t           j                            |                    }|r|c S t           j                            |          c S t          |           }|r|S t           j                            t           j        	                    t          |           |                     S Nr   r   getenvr   r   r   rA   r   r+   r   r   r5   )r,   rZ   env_name	env_value	candidate
found_paths         r   _resolve_model_pathrc   c   s    
* 
*Yx,,299;;	 	!),,	7>>)$$ 	.7??9-----%bg&6&6y&A&ABB
 	wy)))))!"233J 7??27<<(;<L(M(MO_``aaar   default_filenames.c                    |D ]}t          j        |d          pd                                }|s.t          |          }t           j                            |          r!t           j                            |          c S t          t           j                            |                    }|r|c S t           j                            |          c S | D ]}t          |          }|r|c S t           j                            t           j        	                    t          | d                   | d                             S )Nr   r   r]   )rd   rZ   r_   r`   ra   rb   r,   s          r   _resolve_model_path_candidatesrf   w   s9    
* 
*Yx,,299;;	 	!),,	7>>)$$ 	.7??9-----%bg&6&6y&A&ABB
 	wy)))))-  %&677
 		 7??27<<(;<Ma<P(Q(QSdefSghhiiir   biaochezhajiev2.ptMODEL_PATH_BCZJ
MODEL_PATH)yolov8s-worldv2.ptr/   r.   MODEL_PATH_GENERAL)bczjgeneralzmobileclip_blt.tsMOBILECLIP_TS_PATHzmobileclip2_b.tsMOBILECLIP2_TS_PATHzViT-B-32.ptCLIP_VIT_B32_PATHMODEL_DEFAULTrm   MAX_WORKERS8CONF_THRESHz0.8
BATCH_SIZEIMGSZ640TORCH_NUM_THREADS0OPENCV_NUM_THREADS
OUTPUT_DIRoutputSQLITE_DB_PATHzjobs.sqlite3RESULTS_DIR_resultsDATASETS_DIRdatasetsTRAIN_RUNS_DIR
train_runsUPLOAD_TEMP_DIR
upload_tmpMAX_UPLOAD_BYTESi   @VIDEO_FRAME_INTERVAL5JOB_RETENTION_DAYSzdet_10g.onnxFACE_MODEL_DETzw600k_r50.onnxFACE_MODEL_RECFACE_DATA_DIR	face_dataFACE_SIMILARITY_THRz0.35r>   FACE_MATCH_TOP_KFACE_BLUR_THRESHz60.0FACE_SQL_ENABLEDtrue>   ry   nofalseFACE_SQL_HOSTFACE_SQL_PORT5432FACE_SQL_DBFACE_SQL_USERFACE_SQL_PASSWORDzface_library.sqlmodulesfacesqlFACE_SQL_QUERY_PATHDISPATCH_AUTH_URLz-http://68.26.6.231:7204/rzzx_beta/oauth/tokenDISPATCH_TASK_URLzFhttp://68.26.6.231:7204/xbrwzx_beta/api/WxtdjModule/receiveAndCreateRwDISPATCH_CLIENT_IDjcgkptDISPATCH_CLIENT_SECRETDISPATCH_GRANT_TYPEpasswordDISPATCH_RWYID ecfffc32c9aa4aabb75541cb23a3270fDISPATCH_SJCSLYyfdjzldxwlxxwffzzxDISPATCH_QSSX06DISPATCH_FKSX08DISPATCH_GJDQCHNDISPATCH_ZJLX111DISPATCH_XFDWDISPATCH_YWFZRDISPATCH_YWFZRLXDHDISPATCH_DEFAULT_TITLEu   违法行为核查任务DISPATCH_DEFAULT_CONTENTuB   请核查该对象近期涉嫌违法行为并反馈处置情况。DISPATCH_DEFAULT_NOTEuL   由 Multi-Rider 自动识别并流转生成，请结合实际情况核查。DISPATCH_MOCK_MODEr   >   1onyesr   
   DISPATCH_QUEUE_LIMIT100DISPATCH_SMS_DEFAULT_MOBILEDISPATCH_SMS_DEFAULT_TEMPLATEu   【治安基础管控中心】{xm}，系统识别到您涉及“{illegal_type}”线索，请于{deadline}前主动配合核查。联系单位：{zbpcsmc}，联系电话：{ywfzrlxdh}。DISPATCH_SMS_USERIDadminDISPATCH_SMS_PASSWORDDISPATCH_SMS_USERPORT0006FLASK_SECRET_KEY   APP_HOSTz0.0.0.0APP_PORT5001
model_namec                 t    t           j                            |                                           }d|v od|v S )Nr   world)r   r   r   r#   )r   r#   s     r   _is_prompt_model_namer      s7    GZ((..00EU?/w%//r   c                     t           j                            t                    si d dS 	 t	          t          dd          5 } t          j        |           }d d d            n# 1 swxY w Y   t          |t                    rG|	                    d          }t          |t                    si |d<   |
                    dd            |S n# t          $ r Y nw xY wi d dS )N)slots
updated_tsr8   r9   r:   r   r   )r   r   rA   DEPLOYMENT_SLOTS_PATHrB   jsonload
isinstancedictget
setdefaultrF   )rG   payloadr   s      r   _load_deployment_slotsr      s0   7>>/00 14000
'w??? 	$2immG	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$gt$$ 	KK((EeT** &#% |T222N	    t,,,s6   C A#C #A''C *A'+AC 
CCslot_keyc                 8   t                      }|                    d          pi                     t          | pd                                          i           }t	          |t
                    sdS t          j                            t          |                    d          pd                                                    }|sdS t          j        	                    |          d         
                                t          vrdS t          |          r|ndS )Nr   r   r   r>   )r   r   r"   r   r   r   r   r   r   splitextr#   UPLOAD_MODEL_EXTSr+   )r   r   slotr   s       r   get_deployment_slot_model_namer     s    $&&GKK  &B++CB,?,?,E,E,G,GLLDdD!! r!!#dhh|&<&<&B"C"C"I"I"K"KLLJ r	w
##A&,,..6GGGr)*55=::2=r   	model_keyc                     | pd                                 }|t          v r9t          t          j                            t          |                              S t          |          S r\   )r   MODEL_REGISTRYr   r   r   r   resolve_model_path)r   r   s     r   model_supports_text_promptr     sW    ?
!
!
#
#C
n$RW%5%56H6M6M%N%NOOO %%%r   c            	         i dt           d z  dd ffd}  | t                              d                      | t                              d                     t          D ]}t          j                            |          s"t	          j        |          D ]m\  }}}|                    t           j	                   t          |t           j	                  D ]+} | t          j                            ||                     ,nS )Nr   r   c                    | rt           j                            |           sd S t           j                            |           }t           j                            |          d                                         t          vrd S |                                t          v rd S                     |t           j        	                    |                      d S )Nr>   )
r   r   rA   r   r   r#   r   MODEL_ASSET_FILENAMESr   r   )r   r   registrys     r   	_registerz*list_upload_model_paths.<locals>._register  s     	27>>$// 	FW%%d++
7J''*0022:KKKF!666FJ(=(=>>>>>r   rm   rl   r   )r"   r   r   r   r   r   r   r    r!   r#   r$   r   )r   r&   r'   r(   r)   r*   r   s         @r   list_upload_model_pathsr     s&   !H?d
 ?t ? ? ? ? ? ? In  ++,,,In  (()))) 8 8w}}[)) 	,.GK,@,@ 	8 	8(GXyMMciM(((	sy999 8 8	"',,w6677778	8
 Or   c                    | pd                                 }|t          v rt          |          }|rt          |          }|r|S t          |         }t          j                            |          rt          j                            |          S t          j                            |          }|rt          |          }|r|S |S t                      }||v r||         S t          j                            |          
                                }|                                D ]!\  }	}
|	
                                |k    r|
c S "t          d|            )Nr   zunsupported model key: )r   r   r   r+   r   r   rA   r   r   r   r#   items
ValueError)r   r   override_nameoverride_pathregistry_pathregistry_basenamerb   r   normalized_keyr   
model_paths              r   r   r   1  sd   ?
!
!
#
#C
n6s;; 	%,];;M %$$&s+7>>-(( 	27??=111G,,];; 	")*;<<J "!!&((H
h}W%%c**0022N"*.."2"2  
J// 0 :y::
;
;;r   c            
      d   t                      } | sdS t          d          }|r|| v r|S t          j                            t
                              dd                    dddt          j                            t
                              dd                    g}d | D             }|D ]6}|r2|                                |v r||                                         c S 7d	 | D             }|r!t          |t          j        
          d         S t          | t          j        
          d         S )Nr   upload_defaultrm   rj   r/   r.   rl   c                 8    i | ]}|                                 |S  )r#   .0names     r   
<dictcomp>z,get_upload_model_default.<locals>.<dictcomp>_  s"    ;;;$4::<<;;;r   c                 0    g | ]}t          |          |S r   )r   r   s     r   
<listcomp>z,get_upload_model_default.<locals>.<listcomp>d  s&    SSSd2LT2R2RSTSSSr   r   r   )
r   r   r   r   r   r   r   r#   r$   r"   )r   r   preferred_namesname_lookup	preferredprompt_modelss         r   get_upload_model_defaultr  O  sC   &((H r23CDDM (22 	++Ir::;;
++FB7788O <;(;;;K$ 2 2	 	2**k99y001111SShSSSM 7m333A66(	***1--r   c                     t          |           }|r*|                    d          rt          |d                   S |                                 }|dk    rdS d|v rd|v rdS |dk    rdS |d	k    rd
S dS )Ndescriptionrg   z9Private wheelie detection model for closed-set filtering.r   r   z6YOLO-World open-vocabulary model with English prompts.r.   z;YOLO26n base model for low-compute training and deployment.r/   z3YOLO26s base model for balanced accuracy and speed.zCustom detection model.)_friendly_model_metar   r"   r#   )r   metar#   s      r   _upload_model_descriptionr  j  s    
++D ('' (4&'''E$$$JJ7e++GGLLDD$$r   c                     | pd                                                                 }dddddddddd	d
dddddd}||v r||         S d|  ddddS )Nr   u   专项违法行为识别u?   用于飙车炸街、翘头等专项违法行为快速筛查。)labelshort_labelr  u   通用人车要素识别u   通用要素识别uE   适合按提示词检出人员、车辆、摩托车等通用目标。u   快速版训练底模u   快速版底模u<   适合低算力环境快速验证数据集和训练流程。u   标准版训练底模u   标准版底模u?   适合在速度和精度之间取得更均衡的训练效果。)rg   rj   r.   r/   u   自定义识别模型（u   ）u   自定义识别模型uB   本地自定义识别模型，可用于专项筛查或预标注。)r   r#   )r   r#   friendly_maps      r   r  r  z  s    2$$&&,,..E 05\
 
 0/b
 
 -,Y
 
 -,\
 
!/ /L, E"";J;;;.[  r   c                     t                      } | sg S t          j                            t                              dd                                                    ddddddd	t          j                            t                              d
d                                                    didt          dt          t          t          f         ffd}g }t          | |          D ]|}t          |          }|                    |t          |          d         t          |          d         t          |          |rdnd|rt          nt           |rt"          ndd           }|S )Nrm   r   r   rj   r>   r/      r.      rl   r   r   r   c                 |                         |                                 d          |                                 fS )N2   )r   r#   )r   preferred_ranks    r   	_sort_keyz+get_upload_model_options.<locals>._sort_key  s6    !!*"2"2"4"4b99:;K;K;M;MMMr   r   r
  r  promptfilter)rJ   r
  r  r  ui_modedefault_confdefault_classes)r   r   r   r   r   r   r#   r"   tupleintr$   r   appendr  r  PROMPT_MODEL_DEFAULT_CONFrt   PROMPT_MODEL_DEFAULT_CLASSES)r   r  optionsr   	is_promptr  s        @r   get_upload_model_optionsr     s   &((H 	 	++Ir::;;AACCQaaa
++FB7788>>@@"NNc NeCHo N N N N N N (*GX9555 
 

.z::	#-j99'B3J??N8DD'0>88h=F W 9 9KCL#T#?#?RT 
	
 
	
 
	
 
	
 Nr   c                      t                      } ddg}g }|D ]S}|                     |          }|s|                    |t          |          d         t	          |          d           T|S )Nr.   r/   r
  )rJ   r
  r  )r   r   r  r  r  )r   r  r   r   r   s        r   get_train_base_model_optionsr"    s    &((H|,I"$E 

 


\\*--
 	#-j99'B8DD 	
 	
 	
 	
 Lr   T)exist_okYOLO_TELEMETRYz([%(asctime)s] %(levelname)s: %(message)s)levelformatmulti_riderrj   zLPreferred general model yolov8s-worldv2.pt is not active; currently using %sRUIZHI_API_KEYRUIZHI_BASE_URLzhttps://10.2.164.106/v2RUIZHI_TEXT_MODELzayenaspring-pro-001RUIZHI_EMBEDDING_MODELzQwen3-Embedding-0.6BRUIZHI_RERANK_MODELzbge-reranker-baseRUIZHI_KB_NAMEwcnr_test_0518_083959)loggingr   r   r   dirnamer   __file__
CONFIG_DIRr   r   rE   r   r   MODEL_YOLO_DIRr3   r4   r1   r2   r   r   r   r  r  r"   r   r+   r5   rK   r^   rM   r  rN   rP   rQ   rR   INSTANT_CLIENT_DIRrU   rV   rW   rX   rY   rc   r  rf   r   rn   ro   rp   r   r#   r   r   rq   rr   floatrt   ru   rv   rx   rz   r{   r}   r~   r   r   r   r   r   r   r   r   r   r   maxr   r   r   r   r   r   r   r   _face_sql_root_face_sql_bundledrA   _face_sql_defaultr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   urandomhexr   r   r   boolr   r   r   r   r   r   r   r  r  r  listobjectr   r"  makedirsr   basicConfigINFO	getLoggerloggerwarningr(  r)  r*  r+  r,  r-  r   r   r   <module>rE     ss     				 W__RW__X6677
7??27<<
D$??@@JNN;''J27<<'+J+J	i00GLLFF GLLFF Y>> 7<<	844 	  Y0GHH G H   ?c ?c ? ? ? ?s s     
# 
# 
 
 
 
3 4    & GLL9%%GLL5),,GLL6""   bir**c)")M62233+R00bir**")-r22"]929_bgll8Ui>j>j#k#kll ")-{;;#ibi 133{3C3CDDEERY3^DD ")-{;;bi 5GG b# b3 b3 b b b b(jeCHo jSV j[^ j j j j,   46GVV--.`bvww  )()<>RSS ))*<>STT ''7JKK G&''--//  ?I66C)JJLL&&Mc)")M3//00eIBImU3344S<--..
IBIgu%%&&C		"5s;;@qAA S#7==BCC ]929\27<<(3S3STTUU
yry)927<<R`;a;abbccmIBImRW\\*j5Y5YZZ[[}YRY~rw||Hj7Y7YZZ[[yry)927<<R^;_;_``aa-		*;RW\\(T`=a=a b bcc3yry!3SS9K5L5LMMNN s929%;SAABB S#7==>> $$^5EFF$$%57GHHibihP[9\9\]]^^eIBI&;VDDEE 3q##ibi(:C@@AABB 5#5v>>?? BI0&99CVJJLLRRTT\pp 	/2..IBIov6677bir**	/2..BI1266 h(:;;GLL9feEWXX &(gnn^&D&D[NNJ[ #mIBI.CEV$W$WXX BI3   BIL   RY3X>> "#;R@@ bi 5zBB +-OPP")-/CDD	/400	/400	/511	/511	/2..+R00RY3R88 "#;=WXX $29H   "	R    bi 4g>>I'PPRRXXZZ^xx s2ss929-CU#K#KLLMM 'bi(ErJJ  )	# A! !   bi 5w?? !	"92>> !	"96BB 29/B1C1C1E1EFF 29Z++3yryV,,--0c 0d 0 0 0 0
- - - - -"
>S 
>S 
> 
> 
> 
>&# &$ & & & &c3h    6<# <# < < < <<.# . . . .6%# %# % % % % S T#s(^    B$tCK'8"9    Dd4S>&:    $ J & & & & Od + + + + K$ ' ' ' ' L4 ( ( ( ( NT * * * * NT * * * * !D 1 1 1 1 t , , , , 
  & 0 0 0  ',/Y Z Z Z Z		=	)	)7N9-..4466:NNN
NNVy!  
 +R00")-/HIIBI13HII "#;=STT bi 57JKK +-DEEr   