Selaa lähdekoodia

Update 月度中标报告添加设备及厂家信息

YueYunyun 6 kuukautta sitten
vanhempi
commit
aa2507afbf

+ 1 - 1
SourceCode/TenderCrawler/app/config.yml

@@ -39,7 +39,7 @@ ai:
   max_tokens: 1024
   system_prompt: 分析文本,提取出关键信息,并以json格式字符串返回,如果部分信息为空,则该字段返回为空,返回的一定是可以解析的json对象。
   prompt_template_1: 在以上内容中提取信息:编号(no) 、标题(title)、在哪个城市招标(area)、开标的时间(date)、开标的地点(address)、发布时间(release_date)、150字左右的招标条件要求及联系方式等内容摘要(summary),设备(devices)。提取出相关设备的名称信息,多个设备以逗号分割。返回包含no,title,area,date,address,release_date,summary,devices字段的json格式字符串,没有找到或未提供的信息json字段为空,返回的一定是可以解析的json字符串。
-  prompt_template_2: 在以上内容中提取信息:编号(no) 、标题(title)、公告时间(date)、标中的总价格,返回带单位的字符串(price)、标中的公司,多个以逗号分割(bidder)、150-300字的标的物说明,标的物价格,公司的明细等内容摘要(summary),设备(devices)提取出相关设备的名称信息,多个设备以逗号分割。返回包含no,title,date,price,bidder,summary,devices字段的json格式字符串,没有找到或未提供的信息json字段为空,返回的一定是可以解析的json字符串
+  prompt_template_2: 在以上内容中提取信息:编号(no) 、标题(title)、公告时间,格式为yyyy-MM-dd(date)、标中的总价格(price)、标中的公司,多个以逗号分割(bidder)、150-300字的标的物说明,标的物价格,公司的明细等内容摘要(summary),标中的涉及光谱仪的设备(devices)提取出相关设备的名称信息以及对应的品牌厂商,品牌厂商写在设备后面用括号括起来,多个设备以逗号分割,例:XX设备(xx品牌),XX设备(xx品牌)。返回包含no,title,date,devices,price,bidde,summary字段的json格式字符串,没有找到或未提供的信息json字段为空。
 email:
 #  smtp_server: smtp.exmail.qq.com
 #  smtp_port: 465

+ 3 - 2
SourceCode/TenderCrawler/app/jobs/data_process.py

@@ -16,8 +16,8 @@ class DataProcess:
             返回包含no, title, area, date, address, release_date, summary, devices字段的json格式字符串,没有找到或未提供的信息json字段为空。
             """
     DEFAULT_AI_PROMPT_TEMPLATE_2 = """在以上内容中提取信息:
-            编号(no) 、标题(title)、公告时间(date)、标中的总价格(price)、标中的公司,多个以逗号分割(bidder)、150-300字的标的物说明,标的物价格,公司的明细等内容摘要(summary),设备(devices)。
-            提取出相关设备的名称信息,多个设备以逗号分割。返回包含no,title,date,price,bidder,summary字段的json格式字符串,没有找到或未提供的信息json字段为空  """
+            编号(no) 、标题(title)、公告时间(date)、标中的总价格(price)、标中的涉及光谱仪的设备及厂商(devices)、标中的公司,多个以逗号分割(bidder)、150-300字的标的物说明,标的物价格,公司的明细等内容摘要(summary),设备(devices)。
+            提取出相关设备的名称信息,多个设备以逗号分割。返回包含no,title,date,devices,price,bidder,summary字段的json格式字符串,没有找到或未提供的信息json字段为空  """
 
     def __init__(self, store: IDataStore):
         self._store = store
@@ -146,6 +146,7 @@ class DataProcess:
                 no=data.get("no"),
                 title=data.get("title"),
                 date=data.get("date"),
+                devices=data.get("devices"),
                 price=data.get("price"),
                 bidder=data.get("bidder"),
                 summary=data.get("summary"),

+ 4 - 3
SourceCode/TenderCrawler/app/jobs/data_send.py

@@ -264,19 +264,19 @@ class DataSend:
         <div class="table-container">
             <table class="table">
                 <tr>
-                    <th style="width:200px">项目名称</th>
+                    <th style="width:250px">项目名称</th>
+                    <th>设备</th>
                     <th style="width:150px">公告日期</th>
                     <th style="width:120px">价格</th>
-                    <th>中标人</th>
                 </tr>
         """
         for item in items:
             body += f"""
             <tr>
                 <td><a  title="点击查看详情" href="{item.url}">{item.title}</a></td>
+                <td>{item.devices}</td>
                 <td>{item.date}</td>
                 <td>{item.price}</td>
-                <td>{item.bidder}</td>
             </tr>
             """
         body += "</table></div>"
@@ -291,6 +291,7 @@ class DataSend:
             "项目编号": [item.no for item in items],
             "项目名称": [item.title for item in items],
             "公告日期": [item.date for item in items],
+            "相关设备": [item.devices for item in items],
             "价格": [item.price for item in items],
             "中标人": [item.bidder for item in items],
             "公告摘要": [item.summary for item in items],

+ 1 - 0
SourceCode/TenderCrawler/app/jobs/job_runner.py

@@ -88,6 +88,7 @@ class JobRunner:
                 # self._clean_job()
                 # self._process_job()
                 # self._send_job()
+                # self._send_current_month_report_job()
 
         except Exception as e:
             utils.get_logger().error(f"应用程序停止: {e}")

+ 2 - 2
SourceCode/TenderCrawler/app/main.py

@@ -71,9 +71,9 @@ class Application:
             while self.running:
                 try:
                     now = datetime.datetime.now()
-                    schedule.run_pending()
-                    time.sleep(self.interval)
                     self._check_reload(now)
+                    time.sleep(self.interval)
+                    schedule.run_pending()
                 except Exception as e:
                     self.logger.error(f"主循环执行异常: {e}")
                     time.sleep(self.interval)

+ 7 - 3
SourceCode/TenderCrawler/app/models/process_result_data.py

@@ -13,6 +13,7 @@ class ProcessResultData:
         url=None,
         keyword=None,
         date=None,
+        devices=None,
         price=None,
         bidder=None,
         summary=None,
@@ -31,6 +32,7 @@ class ProcessResultData:
         self.url = url
         self.keyword = keyword
         self.date = date
+        self.devices = devices
         self.price = price
         self.bidder = bidder
         self.summary = summary
@@ -53,8 +55,8 @@ class ProcessResultData:
         )
 
     _insert_query = """
-              INSERT IGNORE INTO t_data_result (no, title, url, keyword, date, price,  bidder, summary, attach_path, status, create_time, prompt_tokens, completion_tokens, total_tokens)
-              VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s);
+              INSERT IGNORE INTO t_data_result (no, title, url, keyword, date, devices, price,  bidder, summary, attach_path, status, create_time, prompt_tokens, completion_tokens, total_tokens)
+              VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s);
           """
     # _update_query = """
     #             UPDATE t_collect_data SET status = 1 WHERE url = %s;
@@ -70,6 +72,7 @@ class ProcessResultData:
             process_result_data.url,
             process_result_data.keyword,
             process_result_data.date,
+            process_result_data.devices,
             process_result_data.price,
             process_result_data.bidder,
             process_result_data.summary,
@@ -104,6 +107,7 @@ class ProcessResultData:
                 process_result_data.url,
                 process_result_data.keyword,
                 process_result_data.date,
+                process_result_data.devices,
                 process_result_data.price,
                 process_result_data.bidder,
                 process_result_data.summary,
@@ -162,7 +166,7 @@ class ProcessResultData:
             )
             return data
 
-    _not_send_query = "SELECT no, title, url, keyword, date, price, bidder, summary, attach_path, status, create_time, send_time FROM t_data_result WHERE status = 0"
+    _not_send_query = "SELECT no, title, url, keyword, date, devices, price, bidder, summary, attach_path, status, create_time, send_time FROM t_data_result WHERE status = 0"
 
     def fetch_not_send(self):
         with MySQLHelper() as db_helper: