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