Files
param-auto-manager/services/__pycache__/process_service.cpython-310.pyc
T

115 lines
8.4 KiB
Plaintext
Raw Normal View History

2026-07-12 01:07:26 +08:00
o
·vRjˆ:ã@shdZddlZddlZddlmZddlmZddlmZddlm Z ddl
m Z Gdd „d ƒZ e ƒZ
dS)
u)
æ•°æ®å¤„ç†æœåŠ¡ - 核心处ç†é€»è¾‘
éN)Údatetime)ÚConfig)Údb)Úsearch_service)Úparamhub_clientc@sdeZdZddZddZddZddZd d
Zd d Zd
dZ ddZ
ddZ ddZ ddZ
dS)ÚDataProcessServicecCs
t|_dS)N)rÚconfig)Úself©r
úc/home/openclaw/.openclaw/workspace-hz4th_coder/works/param-auto-manager/services/process_service.pyÚ__init__
s
zDataProcessService.__init__c C|d}| d¡}| d¡}dddgdœ}zœtd|ƒtj||d d
}|d d kr;t d
|d¡d|d<|WS| ||||¡}|sLd|d<|WS| |||¡}|s\d|d<|WS| |¡} t  | ||¡\}
} |
rt
j |||d| d|idd |d<d| |d<| |d<td|dƒnd| |d<t
j |||dd| id|  |||¡} | |d<|WSt
}
z(d t|
ƒ}td!|ƒ||d<t
j |||ddt|
ƒid|WYd}
~
Sd}
~
ww)"u×
处ç†å•个产å“的完整æµç¨‹
Args:
product_info: {
'product_name': str,
'category': str (å¯é€‰),
'subcategory': str (å¯é€‰)
}
Returns:
{
'success': bool,
'message': str,
'review_id': str (如果æˆåŠŸæäº¤),
'new_products': list (å‘现的新产å“)
}
Ú product_nameÚcategoryÚ subcategoryFÚN)ÚsuccessÚmessageÚ review_idÚ new_productsu[处ç†] 开始处ç†äº§å“: T)ÚkeywordrÚinclude_internetÚtotalruæœªæ‰¾åˆ°äº§å“ 'u' 的相关数æ®u未找到相关数æ®ru无法æå–有效数æ®uå¡«å……æ•°æ®å¤±è´¥Ú submittedÚdata)r
rrÚstatusrÚdetailsruå·²æäº¤å®¡æ ¸ï¼Œreview_id: ru[处ç†] äº§å“ u
æäº¤æˆåŠŸuæäº¤å¤±è´¥: ÚfailedÚerror)r
rrrrru处ç†å¤±è´¥: u [错误] )ÚgetÚprintrÚ
search_allrÚsend_notificationÚextract_product_dataÚfill_product_fieldsÚget_category_typeÚsubmit_for_reviewrÚadd_process_historyÚdiscover_new_productsÚ ExceptionÚstr)r Ú product_infor
rrÚresultÚsearch_resultsÚextracted_dataÚ filled_dataÚ
category_typerÚreview_id_or_errorrÚeÚ error_msgr
r
r Úprocess_product

üý üý
ýú û ý
ûõz"DataProcessService.process_productc
C|||gdœ}g}| dg¡D]/}t | dd¡¡}| ||¡r>| | d¡| d¡| d¡| d¡t | d d¡¡d
œ¡q| d g¡D]} | ||  d d
¡g¡ra| d |  d¡|  d¡dœ¡qE|sfdS||d<|S)u`
从æœç´¢ç»“果中æå–目标产å“的具体内容
排除无关产å“
)ÚnamerrÚraw_dataÚarticlesÚ
product_namesú[]ÚsourceÚurlÚsummaryÚcontentÚkeywords)r9r:r;r<r=ÚinternetÚtitler)r9r:r<Nr5)rÚjsonÚloadsÚis_product_matchÚappend)
r Útarget_productr,rrÚ extractedÚ all_contentÚarticler7Úitemr
r
r r"s:ü û ýz'DataProcessService.extract_product_datac C|sdS|r t |¡nd}|ddddœ}| |¡}|dkr)| | |d¡¡n9|dkr8| | |d¡¡n*|d krG| | |d¡¡n|rbd
|vrb|d
D]}| ||d¡}|ra|||<qQd |d <t  ¡ 
¡|d
<|S)ur
æ ¹æ®åˆ†ç±»å­—段é…ç½®ï¼Œå¡«å……äº§å“æ•°æ®
ä¸¥æ ¼æŒ‰ç…§æ¥æºæ•°æ®ï¼Œä¸åˆ›é€ å†…容
Nr4TF)r4ÚvisibleÚ is_pinnedÚmodelr5ÚgpuÚcpuÚfieldsÚ auto_managerÚ_sourceÚ
_extracted_at) rÚget_category_fieldsr$ÚupdateÚextract_model_fieldsÚextract_gpu_fieldsÚextract_cpu_fieldsÚextract_field_from_datarÚnowÚ isoformat) r r-rrÚ
category_infor.r/ÚfieldÚvaluer
r
r r#¹s.ý
  z&DataProcessService.fill_product_fieldsc Ci}|D]t}| dd¡p
d}| dd¡pd}|d|}d|vr3t d|¡}|r3| d¡d|d<d |vrJt d
|tj¡}|rJt| d¡ƒ|d <d |vrat d |tj¡} | ra|  d¡ ¡|d <d
|vrxt d|¡}
|
rx|
 d¡ dd¡|d
<q|S)uæå–AI模型字段r<rr;Ú
Ú
parametersz(\d+(?:\.\d+)?)\s*[Bb]éÚcontext_lengthzcontext[:\s]+(\d+)Ú organizationz:(?:by\s+|from\s+|developed\s+by\s+)([\w\s]+?)(?:\s|,|\.|$)Ú publish_datez(\d{4}[-/]\d{1,2}[-/]\d{1,2})ú-)rÚreÚsearchÚgroupÚintÚstripÚreplace) r r5rNrr<r;ÚtextÚ params_matchÚ ctx_matchÚ org_matchÚ
date_matchr
r
r rTâs.  z'DataProcessService.extract_model_fieldsc
Ci}|D]^}| dd¡p
d}| dd¡pd}|d|}d|vr2t d|¡}|r2t| d¡ƒ|d<d|vrIt d |tj¡}|rIt| d¡ƒ|d<d
|vrbt d |¡} | rbt|  d¡ d d¡ƒ|d
<q|S)
uæåGPU字段r<rr;r]Ú memory_gbz
(\d+)\s*GBr_Ú
cuda_coresz&(\d+)\s*(?:CUDA|cuda)\s*(?:cores|core)Ú price_usdz\$(\d+(?:,\d+)*)ú,)rrfrgrjrhrirl)
r r5rNrr<r;rmÚ mem_matchÚ
cuda_matchÚ price_matchr
r
r rUs&  z%DataProcessService.extract_gpu_fieldsc
Ci}|D]\}| dd¡p
d}| dd¡pd}|d|}d|vr4t d|tj¡}|r4t| d¡ƒ|d<d|vrKt d |tj¡}|rKt| d¡ƒ|d<d
|vr`t d |¡} | r`t|  d¡ƒ|d
<q|S) uæåCPU字段r<rr;r]Úcoresz(\d+)\s*(?:cores?|Cores?)r_Úthreadsz(\d+)\s*(?:threads?|Threads?)Ú
base_clockz(\d+(?:\.\d+)?)\s*GHz)rrfrgrirjrhÚfloat)
r r5rNrr<r;rmÚ cores_matchÚ
threads_matchÚ clock_matchr
r
r rV"s& z%DataProcessService.extract_cpu_fieldsc Csl|D]1}| dd¡p d}| dd¡pd}|d|}|d}t ||tj¡}|r3| d¡ ¡SqdS)u从数æ®ä¸­æå–指定字段r<rr;r]z[:\s]+([^\n]+)r_N)rrfrgrirhrk) r Ú
field_namer5rr<r;rmÚpatternÚmatchr