From e60d75228fb161e464ca59fa2526bf0765f4d902 Mon Sep 17 00:00:00 2001
From: lyg <1543117173@qq.com>
Date: 星期四, 22 五月 2025 12:35:55 +0800
Subject: [PATCH] 修改指令json生成,加入fastapi

---
 db_struct_flow.py                       |    9 ++--
 requirements.txt                        |    0 
 knowledgebase/utils.py                  |   25 ++++++++++--
 knowledgebase/doc/entity_recognition.py |    2 
 knowledgebase/api/__init__.py           |   36 ++++++++++++++++++
 5 files changed, 63 insertions(+), 9 deletions(-)

diff --git a/db_struct_flow.py b/db_struct_flow.py
index 692b6fa..0cb5312 100644
--- a/db_struct_flow.py
+++ b/db_struct_flow.py
@@ -1339,6 +1339,7 @@
 #  绾︽潫
 - 搴旂敤杩囩▼鏍囪瘑锛氬簲鐢ㄨ繃绋嬫爣璇嗗氨鏄疉PID锛屼竴鑸細鍦ㄥ悕绉板悗鐨勬嫭鍙蜂腑鍒楀嚭鏉ワ紱
 - code锛氭寚浠や唬鍙凤紝娌℃湁灏辩┖鐫�锛�
+- name锛氭寚浠ゅ悕绉帮紝鏍规嵁琛ㄦ牸鍐呭鎻愬彇锛屾敞鎰忓悕绉伴渶瑕佹彁鍙栧畬鏁达紝濡傛灉鏈夊鍒楀垯鍚堝苟鐢�-鍒嗗壊锛�
 - 搴旂敤鏁版嵁鍖猴細鎻愬彇琛ㄦ牸涓殑搴旂敤鏁版嵁鍖哄唴瀹广��
 # 杈撳嚭渚嬪瓙锛�
 [{
@@ -1386,9 +1387,9 @@
 {"start": "璧峰瀛楁code", "end": "缁撴潫瀛楁code", "formula": "璁$畻鍏紡"}
 - start锛氳捣濮嬪瓧娈礳ode锛岄暱搴﹀寘鎷捣濮嬪瓧娈碉紝瀛楁鎻忚堪涓鏄庝簡璧峰瀛楁锛�
 - end锛氱粨鏉熷瓧娈礳ode锛岄暱搴﹀寘鎷粨鏉熷瓧娈碉紝瀛楁鎻忚堪涓鏄庝簡缁撴潫瀛楁锛�
-- formula锛氳绠楀叕寮忥紝濡傛灉娌℃湁璁$畻鐩稿叧鎻忚堪鍒欒〃绀轰笉闇�瑕佽绠楀叕寮忋��
+- formula锛氳绠楀叕寮忥紝濡傛灉娌℃湁闀垮害鐗规畩璁$畻鐩稿叧鎻忚堪鍒欎娇鐢˙YTES銆�
 璁$畻鍏紡瀹氫箟锛�
-- BYTES锛氭寜瀛楄妭璁$畻锛�
+- BYTES锛氭寜瀛楄妭璁$畻锛屽瓧鑺傛暟锛�
 - N-x锛氭�诲瓧鑺傛暟鍑弜锛屼緥濡傛�诲瓧鑺傛暟鍑�1鐨勫叕寮忎负N-1銆�
 
 # 瀛楁绫诲瀷鍒嗘瀽鏂规硶
@@ -1405,7 +1406,7 @@
 - length 鑷姩杞崲涓篵it闀垮害锛屽繀椤绘槸鏁板�笺�乶ull鎴栬寖鍥村畾涔夛紝涓嶈兘涓�0锛�
 - value 鏍规嵁瀛楁鎻忚堪鎻愬彇瀛楁鍊硷紝瀛楁鍊间竴鑸负鏁板�肩被鍨嬶紝闇�瑕佹牴鎹瓧娈电被鍨嬫潵鍒嗘瀽锛屽鏋滄槸length绫诲瀷value鐨勫�间负鑼冨洿瀹氫箟锛�
 - enums 鏋氫妇绫诲瀷鐨勫瓧娈靛繀椤昏鏈塭nums锛屾牴鎹瓧娈垫弿杩版彁鍙栵紝鏋氫妇鍏冪礌鐨勬暟鎹粨鏋勪负{"n":"","v":"","c":""}锛�
-- length绫诲瀷鐨勮寖鍥村畾涔変腑鐨剆tart鍜宔nd蹇呴』鏄敓鎴愮粨鏋滀腑鐨勫瓧娈礳ode锛�
+- length绫诲瀷瀛楁鐨勮寖鍥村畾涔変腑鐨剆tart鍜宔nd蹇呴』鏄敓鎴愮粨鏋滀腑鐨勫瓧娈礳ode锛岄暱搴﹀寘鎷瑂tart鍜宔nd锛屽繀椤讳娇鐢ㄩ暱搴︽弿杩颁腑鐨勫瓧娈碉紱
 - 杈撳嚭鏁版嵁缁撴瀯涓烘暟缁勶紝鏁扮粍鍏冪礌涓哄瓧娈典俊鎭紱
 - 杈撳嚭鍐呭蹇呴』涓轰弗鏍肩殑json锛屼笉鑳借緭鍑洪櫎json浠ュ鐨勪换浣曞唴瀹广��
 
@@ -1423,7 +1424,7 @@
         "code": "para2",
         "length": 8,
         "type": "length",
-        "value": {"start": "para1", "end": "data", "formula": "BYTES"}
+        "value": {"start": "data", "end": "data", "formula": "BYTES"}
     },
     {
         "name": "鏁版嵁",
diff --git a/knowledgebase/api/__init__.py b/knowledgebase/api/__init__.py
new file mode 100644
index 0000000..e19650d
--- /dev/null
+++ b/knowledgebase/api/__init__.py
@@ -0,0 +1,36 @@
+# -*- coding: utf-8 -*-
+# 
+# @author: 
+# @date: 
+# @version: 
+# @description:
+
+from fastapi import FastAPI, UploadFile
+import asyncio
+import os
+from knowledgebase import utils
+from knowledgebase.log import Log
+
+UPLOAD_FILE_PATH = "upload_files"
+if not utils.file_exists(UPLOAD_FILE_PATH):
+    os.mkdir(UPLOAD_FILE_PATH)
+
+app = FastAPI(swagger_ui_parameters={"syntaxHighlight": False})
+
+
+@app.get("/")
+async def read_root():
+    return {"Hello": "World"}
+
+
+# 涓婁紶鏂囦欢锛屼繚瀛樻枃浠跺埌鏈湴锛岃繑鍥瀖d5
+@app.post("/UploadFile/")
+async def upload_file(file: UploadFile):
+    data = await file.read()
+    md5 = await utils.get_md5_async(data)
+    ext = os.path.splitext(file.filename)[1]
+    save_path = f'./upload_files/{md5}{ext}'
+    Log.info(f'涓婁紶鏂囦欢锛歿file.filename}锛宮d5:  {md5}')
+
+    await utils.save_to_file_async(data, save_path)
+    return {"md5": md5}
diff --git a/knowledgebase/doc/entity_recognition.py b/knowledgebase/doc/entity_recognition.py
index f95fb8f..6366f8f 100644
--- a/knowledgebase/doc/entity_recognition.py
+++ b/knowledgebase/doc/entity_recognition.py
@@ -74,7 +74,7 @@
         淇濆瓨缂撳瓨銆�
         """
         text = json.dumps(self.cache)
-        utils.save_to_file(text, self.cache_file)
+        utils.save_text_to_file(text, self.cache_file)
 
     def run(self, in_text: str) -> list[str]:
         """
diff --git a/knowledgebase/utils.py b/knowledgebase/utils.py
index 0314db2..7ba2e2c 100644
--- a/knowledgebase/utils.py
+++ b/knowledgebase/utils.py
@@ -3,6 +3,7 @@
 import os
 import json
 import re
+import asyncio
 
 
 def get_bit_mask(start, end):
@@ -27,6 +28,7 @@
 
     return md5_digest
 
+
 def generate_bytes_md5(input_bytes):
     # 鍒涘缓涓�涓� md5 鍝堝笇瀵硅薄
     md5_hash = hashlib.md5()
@@ -39,21 +41,36 @@
 
     return md5_digest
 
+
+async def get_md5_async(file: bytes):
+    md5 = await asyncio.to_thread(generate_bytes_md5, file)
+    return md5
+
+
+async def save_to_file_async(data: bytes, file_path: str):
+    await asyncio.to_thread(save_bytes_to_file, data, file_path)
+
+
 def file_exists(cache_file: str):
     return os.path.exists(cache_file)
 
 
-def read_from_file(cache_file: str) -> str:
-    with open(cache_file, 'r', encoding='utf-8') as f:
+def read_from_file(file: str) -> str:
+    with open(file, 'r', encoding='utf-8') as f:
         text = f.read()
     return text
 
 
-def save_to_file(text, cache_file):
-    with open(cache_file, 'w', encoding='utf-8') as f:
+def save_text_to_file(text: str, file: str):
+    with open(file, 'w', encoding='utf-8') as f:
         f.write(text)
 
 
+def save_bytes_to_file(bytes_data: bytes, file: str):
+    with  open(file, 'wb') as f:
+        f.write(bytes_data)
+
+
 def replace_tpl_paras(tpl_text: str, data: dict):
     for key, val in data.items():
         if not isinstance(val, str):
diff --git a/requirements.txt b/requirements.txt
index b0609cc..0856ebb 100644
--- a/requirements.txt
+++ b/requirements.txt
Binary files differ

--
Gitblit v1.9.1