From 3a1d9ed676eb35d5958b903b0a9af601c4cc8d8e Mon Sep 17 00:00:00 2001 From: "DESKTOP-72TV0V4\\caoxiaozhu" Date: Sun, 8 Mar 2026 20:34:41 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E7=AE=97=E6=B3=95?= =?UTF-8?q?=E7=9B=AE=E5=BD=95=E5=92=8C=E7=9F=A5=E8=AF=86=E5=BA=93=20API=20?= =?UTF-8?q?=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 algorithm/ 目录 - 添加知识库 API 需求文档 - 添加相关截图 Co-Authored-By: Claude Opus 4.6 --- algorithm/README.md | 112 +++++++++++++ algorithm/main.py | 175 ++++++++++++++++++++ algorithm/requirements.txt | 17 ++ algorithm/start.bat | 30 ++++ algorithm/start.sh | 26 +++ screenshots/创建文件夹.png | Bin 0 -> 15783 bytes screenshots/文件解析失败.png | Bin 0 -> 13759 bytes screenshots/窗口bug.png | Bin 0 -> 89356 bytes team-require/api/knowledge-api.md | 259 ++++++++++++++++++++++++++++++ 9 files changed, 619 insertions(+) create mode 100644 algorithm/README.md create mode 100644 algorithm/main.py create mode 100644 algorithm/requirements.txt create mode 100644 algorithm/start.bat create mode 100644 algorithm/start.sh create mode 100644 screenshots/创建文件夹.png create mode 100644 screenshots/文件解析失败.png create mode 100644 screenshots/窗口bug.png create mode 100644 team-require/api/knowledge-api.md diff --git a/algorithm/README.md b/algorithm/README.md new file mode 100644 index 0000000..eee8baa --- /dev/null +++ b/algorithm/README.md @@ -0,0 +1,112 @@ +# Algorithm Service + +Python 算法服务,提供文档解析、Embedding、LLM 调用等功能。 + +## 环境要求 + +- Python 3.9+ +- FastAPI +- Uvicorn + +## 安装依赖 + +```bash +pip install -r requirements.txt +``` + +## 运行服务 + +```bash +# 开发模式 +uvicorn main:app --reload --port 8081 + +# 生产模式 +uvicorn main:app --host 0.0.0.0 --port 8081 +``` + +## 接口列表 + +### 1. 文档解析 + +**请求** + +``` +POST /parse +Content-Type: application/json +``` + +| 参数 | 类型 | 必填 | 说明 | +|------|------|------|------| +| file_url | String | 是 | 文件 URL | +| engine | String | 是 | 解析引擎:markitdown / docling | +| docling_url | String | 否 | Docling 服务 URL | + +**响应** + +```json +{ + "success": true, + "content": "解析后的文本内容...", + "chunks": ["chunk1", "chunk2"], + "total_pages": 10, + "metadata": { + "filename": "document.pdf", + "file_size": 1234567 + } +} +``` + +### 2. 生成 Embedding + +**请求** + +``` +POST /embedding +Content-Type: application/json +``` + +| 参数 | 类型 | 必填 | 说明 | +|------|------|------|------| +| input | String/Array | 是 | 要 embedding 的文本 | +| model | String | 是 | 模型名称 | + +**响应** + +```json +{ + "success": true, + "embeddings": [[0.1, 0.2, ...], [0.3, 0.4, ...]], + "model": "text-embedding-3-small" +} +``` + +### 3. LLM 对话 + +**请求** + +``` +POST /chat +Content-Type: application/json +``` + +| 参数 | 类型 | 必填 | 说明 | +|------|------|------|------| +| messages | Array | 是 | 消息列表 | +| model | String | 是 | 模型名称 | +| temperature | Float | 否 | 温度参数 | + +**响应** + +```json +{ + "success": true, + "message": { + "role": "assistant", + "content": "回复内容..." + }, + "usage": { + "prompt_tokens": 100, + "completion_tokens": 50 + } +} +``` diff --git a/algorithm/main.py b/algorithm/main.py new file mode 100644 index 0000000..af59362 --- /dev/null +++ b/algorithm/main.py @@ -0,0 +1,175 @@ +""" +Algorithm Service - 文档解析、Embedding、LLM 调用服务 +""" +from fastapi import FastAPI, HTTPException +from pydantic import BaseModel +from typing import Optional, List, Dict, Any +import requests +import os +import json + +app = FastAPI(title="Algorithm Service") + + +# ========== Models ========== + +class ParseRequest(BaseModel): + file_url: str + engine: str # markitdown / docling + docling_url: Optional[str] = None + + +class EmbeddingRequest(BaseModel): + input: str | List[str] + model: str + + +class ChatMessage(BaseModel): + role: str + content: str + + +class ChatRequest(BaseModel): + messages: List[ChatMessage] + model: str + temperature: Optional[float] = 0.7 + api_key: Optional[str] = None + base_url: Optional[str] = None + + +# ========== 文档解析 ========== + +@app.post("/parse") +async def parse_document(req: ParseRequest): + """解析文档,支持 markitdown 和 docling""" + try: + if req.engine == "markitdown": + return await parse_with_markitdown(req.file_url) + elif req.engine == "docling": + return await parse_with_docling(req.file_url, req.docling_url) + else: + raise HTTPException(status_code=400, detail=f"Unsupported engine: {req.engine}") + except Exception as e: + return {"success": False, "error": str(e)} + + +async def parse_with_markitdown(file_url: str) -> Dict[str, Any]: + """使用 markitdown 解析文档""" + try: + from markitdown import MarkItDown + + md = MarkItDown() + result = md.convert(file_url) + + # 简单分块(按段落分割) + content = result.text_content if hasattr(result, 'text_content') else str(result) + chunks = [c.strip() for c in content.split('\n\n') if c.strip()] + + return { + "success": True, + "content": content, + "chunks": chunks[:100], # 限制 chunk 数量 + "total_pages": 1, + "metadata": { + "filename": file_url.split('/')[-1] + } + } + except ImportError: + raise HTTPException(status_code=500, detail="markitdown not installed. Run: pip install markitdown") + except Exception as e: + raise HTTPException(status_code=500, detail=f"Failed to parse with markitdown: {str(e)}") + + +async def parse_with_docling(file_url: str, docling_url: Optional[str] = None) -> Dict[str, Any]: + """使用 docling 解析文档""" + if not docling_url: + raise HTTPException(status_code=400, detail="docling_url is required for docling engine") + + try: + # 调用 docling 服务 + response = requests.post( + f"{docling_url}/convert", + json={"url": file_url}, + timeout=60 + ) + + if response.status_code != 200: + raise HTTPException(status_code=500, detail=f"Docling service error: {response.text}") + + result = response.json() + + content = result.get("text", "") + chunks = [c.strip() for c in content.split('\n\n') if c.strip()] + + return { + "success": True, + "content": content, + "chunks": chunks[:100], + "total_pages": result.get("num_pages", 1), + "metadata": { + "filename": file_url.split('/')[-1] + } + } + except requests.exceptions.RequestException as e: + raise HTTPException(status_code=500, detail=f"Failed to connect docling service: {str(e)}") + + +# ========== Embedding ========== + +@app.post("/embedding") +async def generate_embedding(req: EmbeddingRequest): + """生成 Embedding""" + try: + # TODO: 根据不同 provider 调用不同的 embedding 服务 + # 目前返回模拟数据 + + texts = [req.input] if isinstance(req.input, str) else req.input + + # 模拟 embedding 返回 + embeddings = [[0.1] * 1536 for _ in texts] # 1536 维向量 + + return { + "success": True, + "embeddings": embeddings, + "model": req.model + } + except Exception as e: + return {"success": False, "error": str(e)} + + +# ========== Chat ========== + +@app.post("/chat") +async def chat(req: ChatRequest): + """LLM 对话""" + try: + # TODO: 根据 model 和 base_url 调用实际的 LLM 服务 + # 目前返回模拟数据 + + last_message = req.messages[-1].content if req.messages else "" + + return { + "success": True, + "message": { + "role": "assistant", + "content": f"Echo: {last_message}" + }, + "usage": { + "prompt_tokens": len(last_message), + "completion_tokens": 10 + } + } + except Exception as e: + return {"success": False, "error": str(e)} + + +# ========== Health Check ========== + +@app.get("/health") +async def health(): + return {"status": "ok"} + + +if __name__ == "__main__": + import uvicorn + uvicorn.run(app, host="0.0.0.0", port=8081) diff --git a/algorithm/requirements.txt b/algorithm/requirements.txt new file mode 100644 index 0000000..e32d43d --- /dev/null +++ b/algorithm/requirements.txt @@ -0,0 +1,17 @@ +# FastAPI +fastapi>=0.100.0 +uvicorn[standard]>=0.23.0 + +# HTTP 请求 +requests>=2.31.0 + +# 文档解析 +markitdown>=0.0.1 + +# Pydantic +pydantic>=2.0.0 + +# 可选:其他解析库 +# docling>=0.1.0 +# pypdf>=3.0.0 +# python-docx>=0.8.11 diff --git a/algorithm/start.bat b/algorithm/start.bat new file mode 100644 index 0000000..0a374e2 --- /dev/null +++ b/algorithm/start.bat @@ -0,0 +1,30 @@ +@echo off +chcp 65001 >nul +title Algorithm Service + +echo ======================================== +echo 启动 Algorithm 服务 +echo ======================================== + +cd /d %~dp0 + +echo. +echo 检查虚拟环境... +if not exist venv ( + echo [INFO] 创建虚拟环境... + python -m venv venv +) + +echo. +echo 安装/更新依赖... +call venv\Scripts\pip install -r requirements.txt -q + +echo. +echo 启动服务... +echo 访问 http://localhost:8081/docs 查看 API 文档 +echo 按 Ctrl+C 停止服务 +echo. + +call venv\Scripts\uvicorn main:app --reload --port 8081 --host 0.0.0.0 + +pause diff --git a/algorithm/start.sh b/algorithm/start.sh new file mode 100644 index 0000000..f60d9ad --- /dev/null +++ b/algorithm/start.sh @@ -0,0 +1,26 @@ +#!/bin/bash + +echo "========================================" +echo " 启动 Algorithm 服务" +echo "========================================" + +cd "$(dirname "$0")" + +# 检查虚拟环境 +if [ ! -d "venv" ]; then + echo "[INFO] 创建虚拟环境..." + python3 -m venv venv +fi + +echo "" +echo "安装/更新依赖..." +source venv/bin/activate +pip install -r requirements.txt -q + +echo "" +echo "启动服务..." +echo "访问 http://localhost:8081/docs 查看 API 文档" +echo "按 Ctrl+C 停止服务" +echo "" + +uvicorn main:app --reload --port 8081 --host 0.0.0.0 diff --git a/screenshots/创建文件夹.png b/screenshots/创建文件夹.png new file mode 100644 index 0000000000000000000000000000000000000000..37c5f5151af95314e2d187d94bbba7587d13817c GIT binary patch literal 15783 zcmbWe1ymf*yDi%I5P~}dcY?dSdvKTF?yeyuKp;SZySoJl?oM!b3GVJN40nF#ym#LJ z-gD18cipw7*Uakb?y0W&s%qEX`-@alkwtw&^acO`RCzfmbpU{Qh8{Q|Sm>GjXV5hC z3)w|Z&m8~==l?li2&RTlp(imtq;)+soUJ^(&D<;j4JTU{Gj|V5BmD6-Xd(VTg<9^G zZsd~Aj*ga29)O0qo28|byN$EQy(g+H0FVRnQsSCE8K-OhhBLPiq>Fn*;+2k*fkgy@ zp15>!JMu`MKUC{IZ-*;lvf{OOSd~>RQ};FZJ#QwAmSe^y1|;z*GCwFA#or> zov3hPqAtvh7KR}~^%k3qBCHL8Rzw2ii=q?|hH-_L@&KaPVP?C;lo&EF-J%MMYwYTi z1yML}9%ng)PR~~>7VZYr?C!t0_W(`4qqd2D!(FQ<-0-|m0#D=SS2u1%Cjp{h-7MNJj`7TNKAsCW)@yG zN)U=1p#Opw-dw%{Ljw=;2V=9hz7gk+oN7Oo7$Vsdy*ooPaSZlIDjxiV;g*%Y_W%Gn zFSj!bo1c{Ln;eToa{?P#PTSc#Yap45`w34m62ax7*in#PF?!U^>3S|zbT|qwkdtwF zKJ+FMQA6U#)DGn!^FWD^iz#`HQ|l)XMOat6dq8ARkU0k@}BcmAdktffVI}GVIM|%JQT&5pKi2To~xpX=QCMuTK`|mdC8_kLmt1mh(v& z46&y#SL^`&O6Sd=wR!Vokv2wQ_LML=~ADTGtDBup1z$yOO{#JT8FhJT7M>8e>EsC&QCT){}EEQTE>Cp}fe0X+9*KisssZ;R;}d9BG| zhbj7YGu#U|e7GL6T0t`Kc)CtcqPqa1mA@U^VFSt-EF{To;4cS@=sX>6nn-HZO~zOHdf>tNGtC0mg~0e{QB=&A~^@gGthu zlL@c=^ZWjz5v>>TR<#MT-VP9ON>AGCc9N)v^ScS%K#Sw+m2urx%fc7O>*Z1nZ3xZn zkf?ix;|zP2MbOzek_o>>=B&ZB5f}H1*U$EngNY0DRE1PolXHbN9U`o;W=>-04&Bxi~DI>BS~n zZn_yo@&6-fkS#FFKEs<3_&l3VC+MGCC8xRr2B4%JY5BNsqxD6-S`mbC1^1wGgUMnA2b8ugY9UavTAv@MJk}<$ zD&xV>qw`1j1Al8ZpR*x3oM$jrl_^yDpRXS1GC!aJEmY^E?>S&GGX+Ktc{1TzezxDn zResgDd4!DU12S?-g92K)qA;cebM}KdVzT)&LO{7Y%2q=-N2N1pR!hG*92qTVuXnTc2& z)~BuR+Kh@SuT9qbkoP2;d@4i5a5h|8a5uRhywcT>uJr(nfMa}<^<`P}4tiYj!Bid+ zRyoh+-a3<|r@Np-_ruyq!U>0oNzJ{?#pgfcCh0AWQ>7%3g$TS$K*>(alk7R606FB$ z=j+AV9?6gN1r-z(|DEr@wQi-Y?}Be1a|5O~DL}cHJCHuIKTVB(p3BUSWl!**ehqpZ z4~EpW#|`pScf>VWEM1Kfa(vKS{;WEopHa76>L@D*Fo+`o`L;PHlz*JcKY|2Ex+*jh z-YW-k&C|=%t?*U)+{c&47BU-oKDY55HZe4cLd2KzPIR)?w!y-K5D~7B4#X{{wI95s z{MjiT;Pw8xo-gd~IwIL=L02Xd4#MB=CCRxMoA@vJImrk%n~(s^_(a;%=DSzu;vvPf z75f7laYjSqELPAhcvW0!bnzkC68YzBqH4lB-%E_0+45|FG@K4@h)l|P*N%CJFAa>J zwKnDKA~<8kHgrT~(&o2=@^@_1&ur}7VOVs1d9c5Szlr-@2M#w^w-1X6#@oqb47AL> z(PGjNTJP6})t8lsrb1Pr+JIV@`Le-pF&$4E-5r==lWZ>5B-xzT&?T-f#$|Pd{#M|) z-vIF0pKhkoszMKG%Xk6b)e!-dOe_e%UtL>ffQr#_DW^<^|4ThBVAh9)B+EZDfSYFG zE%ajkCnWKnRK=u%5=JVX6WjmH47xyMpcU0dg=d^bwbkDDtE!X(5pj_!!f?nGTqmnZ z52HBfgMsrkuR&UFyXE#eM&F*BR?d~`O{C@EF}VP>g?%_c^IS;#BfS1-=0tVoJnmRu zpJla3-Ku!8KRQmFSkxaM0sFkb9Cz!=pvTl_#Hj)P(#8!!>)>|H;q57;Du}nYOK=sI zSi;i~=k;k2aYYy|@p;-1tnzwr=b3S~8Ah&Gv6Ajj_7O-PJEjsFAhz~$g(xv(zN$GF z`LbPvdlv2Q_5Is=h5HqS&3scM#KEZ1JhpIJUa^b1A6uz^r?%fpPTfrj%e9Xd9EI;X_B(&W-5?m)a0OPJ!_@ea=eh~Z@4v}dTe~%c0VYX& z&GR_|AIXwe-%-6uiUdY!m3Nn3vS0uHGJpm?594_Nz5OMQ?f!>?GVsl%v*@Frnq!75 z&8uCl9Bo3(J}f}sIb0s@CpvCs+TWUOXjBVk9hs&@^!Bi{QO|fjT{&%S_10?Nep%b{ zOpT=I=0JXcEul01ko%aaw2KK?e`Zg zeY*5(i9G)0tzj#=^aU>U@^FkLaTq)(e4k8_WV2=8gn?y=m&je@aRa|le+n!6(^=B? zV>aFJ*jFx+_4%5L*a>aY7;?888@zzNnC5%kOML!qpDSzSX?gru<@WVjZb{g)+}&mG#0y2gEEU zKUIYFcJq7c<-5sb6TVHu)%!Str6jKPMDK`XUrY&egfFlZ5acAD+tR{D3 zkgx51x5Hh+913M$P|gr51yTjE$mDW zw@B(A7lAP%=}H*zqWXu66Vb8lM^fgO??a%Nv;clGeRnB4>!qTnC9>u$^2@aZ*4ac{_Cy2f1f7Q)fuZ0t#Ocut z73iWCRaSqa$|Dcrzio&gQ$fLnD^XNLhXW?(*An0L@+@SEJjFVv9aj|pdkfJrr~bV3 zH}+Z}C#>PEne8NdCU3o*?n+jMjwkf7bp|dnoo{naj4sL0AUl;yCFPrH zw5-f#u5rRP=9m=*i4oez1%)2(wSX@05&c>Z^yD$?H9d$_~12W zOn8ECG0R(|z}s^&daci~TpXIKo*19e3$q=Mp-8UDL){oj3?0>Ie(q}%O$O>@N^lrF zkU}IX+=oQ;t-*Uh7?^#@@^0&S8^&jA*C>9K?)G}gJs>Q>%M?}EPLe@C(b$-7q+f8@ zp_t~C+qoC{rS{?r@q7yf6pv27E(g5vuDvCDh=d90!4MR^Jg=%zvPJw$QyD#mal1}T zN(?JDzxVFEqd9~cCS*{)W<^^^*JrUqS=sjoRtQ6C+Hy0E2qh(uQ|6|F3W)iIrT`_a z`iqrZ@M;Sm0diQ0lg89TT;DDLuYPeJK1yZ%g7`E8xFgn^m$x+XH&Xdyx&3Bo%xIH0fY3~Z)NmcNB`0SI)m z0=BQX@Dv`~wzSI2N!o~OjT`j>z$Dso(!5pXd&R4@z==xcn^dO=|AWo~^U{Z(J*_(r zi+IAj$JibKpLd7pU(Q3~*UOK0Z3cN9`vY=tp~V}R8C>Nq3oAOcw}6rW380^jt591_ z#qD+NWNu$g>-qYgRT)<%>?_OXC*iIv(t)qqkB@L9{>WwMA*q`49KuA*E{(_x*95XjyoaJ~uE`Byi*9bk~)6 zlb4LIO(zp3UsTjXy8WO_N)R>T?Rl19FAwAu(p#_Hvv_>RXqn=&@wgI5V@laSUXh(^ zuNvjqzc;VqEE9Rg{|{ zD5sB3yI@L%WGca{0}qJ<1WejZzyWbfkGJxTp!hQt!#l4tQUjw*`PEJ#agWQJwa9?h zLhOk2p&y$Lkvt%YY^-?BLYwEvuzY8cxG*x?f2^_S$I%0F8enP=C6D^d>A9Lcmdw+@ zYjl%&+u5Bx$!ay8VcAGD>q%6L+LeqEx#U64nt9UH;m7cNvKjGsEzzqZM4YyyR_%1^ zAW6dt1tS1(yT9`_#U>IbhoyK&s?q2>8Cdsec@1+~4@ERIXfX>;Q|$rB20#^RP*Dj+s*hT$qM8TZ*%iFZHGoVCnl6n9cxv2v4!fQoT@U$?!-(`D`5=CaavU z^9ME~jjN@o$E7TiHxf1%13oyg@Cdr^&QH&;yY|4`8_6A3(aqJc+l6g?$XNCBE;sjY z6#Xa8c|p1C-z8u$voR2UfoR7T!k4WY;{4)kKNM@mOFni!N6?5E5RFXXY1?KxjH5*E z*+jih&vY=Jk*g$?us}l49WdN_f0UNr3+n?3qWIX*HovrSj4}6eezW#UoT@>w(+;9# zrWF$FvQ($XS&@n9%%+Z0<9@_Xhw__)1s3)f(^4!#&@ z-Qxeg-_X%;-J^*u_~vIE)p=EVc%!I)*_$Cj%FLBnq-YX0CGx89cDv#aFE2h26TzZCkMck9l2j2ZJKhQS>ba@`Gsbv~ab(_v7wk$OEMj+!2 zdzbUf$|>=dpcp}QAXq!80uJ%#iuY44stm3VZL z{)EK2yk>wHpww6N_qpOaRp&qF^R7}KXIpOQ8DhnYVN>M#6TuU2o=8K>dL2<`DYEls(?F zFue26Yein&Qc3gI=tu`RhIRCSsn+e*p8q(EqN6vp=UIW zDj!>q`0;|W+k(&nv6G zml8dB8bkKDSNhVQe+=wio-RMAX4Rj~tF;svQ!K>&l?+qSyLIvL8>moL%#$jT`O?-9 z1MepWMS6u*C`ST}3{qs#Hqg%dJIAw0WE@M&w1$r7Dn+E!GzXUTj(ak|{p4X^ z`?96)uZevq$8(;a>JC_LL~HFm9XMYOR%+*aWA0Tv`u!eGZqe89gnu`ozxlPwqqYSn zskEtr_)xoDm>t%Wxw`Iw3}i4LvPtqXf8U)M^(>BsY^U$FbP!`=UM5{-!@cGcQZ!w6XG51kD@ZI=&MTzE{vBAX0r-DZa8Xo0=cXq3A zAqB6s(Us9~L4nH2FMZ!<8MyJR)Uh%|H&o}^;Mj!|P$x5jo8~t&7Aoi~8-oLzihT7f z06h)Q#UT6qPw?a=^AkoN)iGcu4gJdY(`K(1i2kJezPylZ4(mJmu<3M}V=1NOw~)rR zf7F&!@(}})=_qYHM9F}^NQeNJSAA*a`nowoqH&dtTnuPyxCk}_E^P7_2f@nn=xGNW zf_r*%dwu=b7l^P2QWEn`?+lL+nwY2LsvyhZgVOTJU)?gFPjYRh&u@W{f}PfPS>dOu z08q-}CG<{G(Y$fN6OR)J$$yWaa<>|Yx$x<(Vyx^g_Pzk;4L9Nc)oV3O@}#R2+!0mr5%myCFb5p@A)!(ECLT+pWdey2`C z>Ll-KK;*1bS=lfVOKf2wYe=N^*gO8VTz=p)%K3RBbnTqrs820FGT?&*MMJ7Lh@u^} zZkdZ3KD3c`I`1Miwv`#Cz!sw!5w%LKhr~_4zf;R0 zC((m)tS<6Bq-Nwo6Uh6NLP!g7L-+X7NlZG8*lEJh_NKS_4T8u_;ki23$^3;dkpLx& zxsYvHP_y`F8M^BHKcT)I9f5|{j`np!$G=gD@E3CYpT1I!efjM4?K#)5;pMR6x^8VC zj|dxJ>YDaVwfj&=f?;ZmIuk)pC3n}Uzm2tM?+W5X^rt05lW!Ms z$cTm!Cug(0uLp@GN}Nwm)wJh4>XizQJ@r(Id5xGg61BLS!8RnSbRFq$Y0m74N$T`bG-Bw8YASvfyx zhlc_RUAl&otmK8k*mi#N%cxGJlb1hoL5FqpVl+Gqvmse%Gs;``vb&;5*Qcp^50q=B zJ~Me`pS6`-mx!=HT%}cpQpF2)Yq(kvl2(=+QEMT&o){l(-!qtzBe~dP*w9-e1*|%L z*R&r}0%}e1lGctQ&iHe1M$HKHO;-@t^&$gmcE#!7l>84iZ~rPr^f|P2-2AjZ&(&Ca z9e?GeC6}blXy>7l*Q<6yAcvm@%JOoEwmv@_l$-DVeLAh$*ggD#*%!utE^JUuJ;s%# zHp)Y9_jWobi;UVri&-h9emBud8gA*bsKhj3KR8Laz_J=dv5>Mns-<8}Mt>O1p8Wt^ zY%N4rAjk|l(n@(2)MR%qPM8=P?&eqCA^`E76QlBKMwJy+rQVC;y!&Y&37+-FkOR>(Ash>b)px_>h`r2sqZ-#4ctHSM;L$#kf;A`QE$5 ztha~2HbjjG7}#6JHpyxZnrVCf?B|)wuzJzCtW0=`nd<-mf$oQ2>du49yXhFoJJ7wh>7j;dYKPrM0PQRfr{7+N?>9IXegLE zU?bhRzTi=WIfV&8a=;JUHSYT;4zcPbrBx;`7w+71pXs+^t?Vi(o^>OOWuaTS!Zw!6 za{Gii?qP^AW!NO@=rI=AE%UR*UYrgQ6ae#AZ2x~+_`f3DFGy9ZGP2=#_#?8Awk(ND z^Cu8h2(wf1GaQ2GM@$K-@L{gS&c1qq-Vq&wc~YU&GKSkyjSH%903bpA#|zLZW;-V# z2oYxpn;g1K^za{srG>Cv;eP!@pT;68&wle<{0B-J_L=@LYf=NJoOZ|Ca__T2*_nL! z@yqb2ShmnIhW;j5(05Y4K{6hP8dXk+t8UmNeQ2bp;qoCQVLta2!6XdBjaUh6CYif6 z{4Q*=B=ld{(0+R3a_oeLAR|WR{U~Npou+a{d7FcWCZEvW!nAk)RfVKs{c6KQ8D#V?Mg@A43Bdjyc1n zrEPf~-WPUp6R*EfB%S|nd1_zse`sVO{!ZP}&`k{|4;I-rDMi>zpA2> zdfD$W{YHp%LdIt#+Cn8V1@r=K{}+W%tplH-rVLvgx}dQi_gVZ~>n!%WZW&orVQusD zRY&B|ZhZegn>50eTM_6Vj-^50DGB6zzkGDCz3&wbkHR35X1femcF#;D**X-5Ztd`u zz?&bdSh=q$mkEVb(cvk=1WdQklkc>J3!m~BY#5;pXOlqC?``@$(D4?x0~nap6G>Cg z-eXiK$6IF3BE^vy@;BQ;uWopH^G#bGQ%1Lsw|?fu^%e^4sq5KM?^pvRd#Rlc7Y4(J zH)}E-PO9Q#NEjze#r6+BkcYLsZOpWP#VXGD-y2K*buj&xPL#jyo&!vsUCQV(ih*wt z!rep}Z*EMX6d%m^zZq5jzUz#N`FjB7|K#}w301eii#mKq&c63}g-A#k6c*c-}EWX|c^PG>9zTnU(X+%n#h+<(# z3>hu2d{W7m`QqY79V7)Z=ra4Ax>Aa>Ab4NYcfY?#d-cgvYrd_aUpQ*^YmzYnkVr3; zQ}L#vy!PzWp&Em}91tUA7ngM*>YGM%9cr5XgeA(e_5BN$Rp8-M;MjZTs8lA4$r7M) ztlt`CL(mykbZ>aYe49pz7PsqTNxSi7Z;+PwLig+vXRmcXq5{YS0HUO;tAst9z|Z;y zaCc90$Wx<58s|7C4NfT}uj|T&fwmBhPTdxj1*?*F_21X{wHx|S(fe`j2OhuCfaMcx zh;+3Ueg-{b6-X-Qm54YBBZleU`7wv;JV`wjRsBIVM8+ZW#R*_HiI!x6~yP3RRGi(X5H zDIyzBy-m~QyqN+PFZ_4YsgkMX9`LfH>}H0CTE!|#H1iw8n5Y(x?L;XK$l)ZyoM!DE z@aouksfb$bEq{_JFxY55u)lX62|g;`i^;cA)%C*0XF}96szU}q4N@3Fyzx#?6%TZS zmkRhI?%7h)GV}B0pT-j|2!G1QFFY9e?1glk-vyoA1}j9|A^jrI^z_44(-Z2Rz4^0j z9NbAG!r-?%Dn=U;No}ts0|@BI$>n|2MqF@%82RByl2Lf8m7%^BHQ|ZJquI@3J!;Y( zq_Fu3BrQ!Fuappz^|&^>J1YdJujHfUA2IE%dK|HN%pX@8EHh{dk8JoQFrQVz9+xpv z@d*SM2Oq-LR5U!~zjEpBpF=0)bIRU>dYt2HKEyxS}nb(ycGq+LvQZ=x?^Ryww zCYWt5`E1=_g%RzB##wvA1gCD9zS3}gFI<2b?H6i&7gq-~pne`nOxUzKdj-CrAb<5 zx#o!|#4nntb80kR_EadpG$b=%rVamc{!nl^qS6135lXZa@w7LT#tbK1Awgm*>7Gj$ z?rGA-T+T3fk`X4Y)NZw!Y^Mof2#l{iF>}p|X_T*8@SNa9HBTm>^16KkH)Fe@{KqYH zl|hd5V;#K$9@^J?#G2U_JkDQL-{kF1b#{^FwX|fEN}^M8s1{)@6SMy6mWu%x@xcS# z-}RlyLB>29qqbC06S%>_3LCCPOPA;TKOR0)T0R0HDx!b2bjqq(#nSy%V=#_%Ex7_4C%ZA7CmTNYI!DGD(MFgPj{#^gaa^2E* z-YzqfcK#yFIjFx%wn=wH?_mYRMaTC^R(k$W4NzCA?IST60zVL+Ws~QZ#X!mrp0z`I z(xwl8`o!=t=jZ0Qi_<-@*WtTFYwt0mss^-!nye+M2VYoB$93He}) zKA|%hIMHe`lX#o5mztKnUwe%2-IWC8cGnqoYT2R|YMniH63{|Q3efD zMZv?#XnImew0ZO>jaHQd!FGM5O#g;5()l{KN%amxLZzg{{?W!{f_p=jRgkjxEU*i!pSu;w#)XltHSsNy5}XG69o0{ug%@>fH}{{53%1-D0YH$ z2k-rYq&)1VuX%|z8QYP8l&~;KBp}f7GK)$#K=R;gXyo}RS{A*ja%=?N6LQ~M08mUf zE@vEPeuaE|ukC@+(rvosFPNBTJD7!%MT!8$Zl)yvh5t8T7q=d+(G50Pk&F9>)8QMa zt-|1UdTVZttnY@#v8Rwk%TUGU z8`}C-6{soMd^zHO*=Kw=4Epn}Ld2UpT)Kpo=IhJvWTOuPH`u;-?2fyfj}QZ_j}Pt#QkzX4oYyLOyYTZfzEVFUE&U{t1;LsgUeK+_pvCzQa(lGH>VJ4G=D z_ibq)ErXXV;C;3G%C_Rh?M@uD&OfZHR_%gcZf;+3>^?CV+;n~IHzOsKbdKp{@llJ8 zK*@RE9>?pV5r%P;Jve`46a3;ah`u0%_2eEJ)(}kPyPnH|z6wRf`}sh~N?=6J(v-}_{5yyZN%)hROh z%4WVDYTD_msuT=zJUTL)8}UyLi{EcpYb2@Vsgy(6pALk&S}i+I{Cxdm5COpI#qrr( zLk~)-D1b+j{a;~$-RC5c))}u8QTLPZgxiPOr74LXq%MbP&0Wi2AD&HTdu;xHza)`2 z5~C&8hvTvvJ9i>~=3Scy7Q6RpI(p%^1HhtvOTZQuKopfCKhY&qpss$|U;d3jl;Sx& z%s36t)gZ_Ct>yNzvgSv%$fK`(V+X+>=Zb>p)=FFkfVp9jL7aB**#5NTTcFnXgJN39IJ&CwqhZtZLC>=!Xe~u3*&wPdZ=>6neR;BPKG?>U*8+VqOq(~3Y%cddKy$i5x|z$o$?ChiUY$6Fnw zvzQ^DygdpW62y+(Th2JxMPg zEyhdDCNm)e7BIJjZhUz3X2{%N15$a;3J;>F-g*4D{jNUF0DR!mC)Tg#p`vth zi&VSZGBY)4Uxl>d2W)CLRN&#IHUcNaUi!ykc3@}sgBm-}JC6jJ4dG3hL|R)H&hktY z696e)!*4J1%U6MG`g`=6fEcl6Jp%=M7@%e>oUmdpdx`tS3*&`6%*lbY>S$@6lg>U3f+s6oXEZKRu!By8ZH%q+n3M_j0pX7K)J*zbo&of823P2v0bgS5CB&D;P|X(&b8Dj z)aIBDPR@tB9lW*%2$Wye9uy`Is$%D~0zwf@?Fhen$3j^i%vhR#Huum6XbYF|zSw>c z#7>3!G=WSy(uMo8nR+|m?`6;PB5#Z|5F%cDXuc7bQ04(}bwteBqfcOyiGgxI40A?K zq&{{P`G1t9J%i~A3RGzlHR~MdDBu*~Uy2-eyLzt-^n?{^Jgo;;NWqB3su(NWtYXKL zvcgUpj{G@4Zpt01`~Vx`am8VKf7#fhERuox9JO*V6E2&pE*NlnE$Vb&fhmeW3m|36u9nR$k-%w!7$;t@??H-t=NNo=I?ZVI%mm9H3|9< z5l4Ql0tX!2b+mDAomSv1f%iqzb1T%n)<5;by3ZWO8n5Z`m)!5a`q-6aI&upk)I=cc)1@%~z2z&}r12C2ET(NevOKk`4WsOg-)FS3j>blw$5bQE*+eWv_-KIX zEJHQv%Kh!xtFhN%B$|raiSH&W_xo&pb}AVhrfnF4bR26hXMaWa1?v~hY-n4A|4iZQ zWhQZLmeSDJct0x~LxZL4YtdeoBNlXGbCA)@?iF?BsZhwhE4dHOeMo=h;^Q17Q{*sy zvD1s*9UjN6KD)kAgHk)HjERe#H((7snGluIQQx!k`Rv`nm}R=4sjOFB9SeaP7WWg1 zvrNi-xP-*mdC}WY45ANNo%>#4hY4$0f`2tPgWk%mJ=~4xakdI`MDTJR&qdP<99+e| zvMF>1K;t(_XY|saukG$tw*?f1utXo zve#n-1bo%qx1I^TF}=wc9Z-@E3g~e1pVWP~;Rx5Z*S`|VsR3LIN6e0R_yT0P{~N33 zA=m$6)g(to#Z{Cv;=^FQrVJB`hE@8}NtV5v6KMiOFmMJUK2yz+WS^UML zjF;SOi+V%+WaJvW)7yxagbES*IXMY~a{od|M)tZEql)On%k278Cij){K3S(qk2fN_ zSx`kmI{@O|OhbEC6$u-Ij+>)w;C{N2kyba)YVspqL==1@1ElH>6Z8wL@eT%D41*FJ%N-GCKKl{?C8;=Y#q^jRRRs@OALhd8HwBVf` z+hFAz>pMO;<%a|CA{!#EAJ}_4>?QEBfIz>lt*Ara9v(4R{pk1Y_6d=cN&q>3McwO@ z9kYuRrZ-E33i0rYG^m;EyZp7~B%;IKNX}FW9PjbA7=DavrehIVpuxP~;^lf|l`eXA zJ0y1{4_bf7yYUB~1?*rO8WKtitf9_j|I@Hrjbw@-E7yz!PA8{0usUjpIwVcqDf6&# z9;egFdzXig!|4xSlDro9@JCtOIB%_$>s7%}m=Zt8NIu#Un!lV&Z~v9aLOj ztag9}NCz($p;K|i+KGc>$J*8~rLt|~o{N;^QiS%K>{0<>i&Ty4lTB3Jz;o5~~5CeNB zYHiQR>!irrPx{}qqxr&Nci&AJv~=hC!a)6izNN(vw^V|i_#|zB$l^->707n!y!$T2vIfTnb^XayJA1R;imlZAt=;|CkQO_;!WFDAz%yyoS_=_CF9 ztRVf`y&iGi{+CGwf#h%@_=S?RqcK1T(q<+oNgt04_(?W4nPByiHDFVQeJvpIsMq&2 zGfJ=8ryi3cn)~9}(qffNR>`@SU0}uCC!I>=SzfsW3k1Q(Be#qbwjcSVisLb4iOL#z zR1_`FPlw+Q&ivFoUuTbzUh^AS ztbF0KZuFk^_w{;(n0BbxTJPo?r7f87a~!07fm^n0kxOl}6?Lt}h&`j`>Sa%u@n zD}hTI=lNk8lvq~U|F(-<;*p7QmdtICzr0#YtM9TGzDAV=Z=~LlEA;)QT6v-}gi;or z1ghu2o+f!o<_j*&e1Ggi3i)@P$oo{+Z77NZsaNw_8tuAcM-AEJ0DYjG#9OpJ0DN64 z9dG`M(TyJw1`9+j`-=`QJR>F)0ChHvx!&h`BR z=Uf-LpS4%b%suzaS`#EMEB*@QJqiE-uOuZz6afIX8vNTG2^Rc$Q@{Kf{Do{Qp#cQ| zys4LOn0KT7hv3844x;J~N;bw0PWtvnfReSDtv=MjNC$Ul5&RJM$$(N)T!3RbUNkUz|VkJw@(Pt7zg#M=o z328>WFFXU>%e%LV9a!?xfQ}W=l$|XSLY+vF{1A@zq~Y4DEmtrUu_DcZtr=1`LcJ= z|21)>fPX{pJ;N{f-<(h9Ac~0l1poC13$$WIvJ&0@Z-M@h!~bR`^k6p+L9=H3ugO}Q z#|~CK#(%HA)*E5}uM-N)s{cJX{r_JP`ahj`jr?z%PU8QoCKTJ-EET_V&SE#m{wk^_ z5A|LOz5@VScjt_WdEv*TE?p!9DR;^bz^RlXfHjjW9*|w5KW!Rfkw>g|crnVU10f9}$T6N#79r zjc76B5la%!`@&y|c`NqkVHy3Jw(B;w-njVK6Z+q{Z-;_BGI}+0TP|FL-;n^FixLaz z{(oCulfWa{h5V!pl0ZZPm_9dRU^Zi}H6wM7|5BI5gk9AzkQ8F5RrQbhQ?x3EKPvJf zvF0`ZW&X(SH=-pT8oXZu*Dy|`?rI{iq0F8(OP*B0Tq{OMk*!MXvOicQ5bsZ2;+%^Ucqm4=cwQBxGLR+eA?Ug7k3yKht(RlO*U!gxtQp zff6IHqrTWnB%XNUA)HE^nAw816ii;E4iKw2d?bJ%bvwzo`Ft*QMi%Ru2qVt^G=XXVE9t??pM18sp6+0 zKY@itkL~9EJ&(9a8>=NvR;Q&OidaICrS$sfeDXMp-K7t=eX2jX005=^JrR(;ECflrzYq@4!r#KpW1XS!dD@=LHn@+bCqS}qRG`iIQkjv5SmqLe)o;%<79O=Nq^-m&SB!ttC3tIKPt}opGuLEoS17xd z5HJOzu4OPKA1W$qF|cBk$jCmT2WFRNHs|CA>Hk`I@U6N)6YfoMIk#z9PiA^J;_$4! zxV|Lfca~omo1bTRC{ir6X*f@Av>Tb6J)NzQQ;*ki+eB>QXC2b}YcbxW(nEXea(&fs zw6$$q*;fVa$?c)VVA5%}A069N%&)R+Yj-!*K7&m|e-HJ1FtS>r9xo>$MflF@gla~GL6V$`FVqX_dl)rO) zh+WOOFPnx|Z~|`|yKid4<9-tIXFNA#``<6MX2H^k*Z~~;lBSaSy+l2;RJmwHMMHZo zU?R2X_Q{Do)e8ZH1m|`$Vu^3kjfFQWj_7%qVgMPjUmil^_=O1gubS|}Crmk8zisN1 zP6Fp-Ukl2;WrhwBob*SY%vg4gPftg)Cg?}YJ+*lgd%FDB4KACg6j(vdx?EK3@o{Cq z$k@U~C9weS*FZHLHxFx17y#VMr@MUW8?K_7t(a_(`%{k83SpSNKB@HJ8KE7uFW{RdF_?@5E8Iq|Z zQ(~K&m(-r0YSnZ-gP!lETAr&7CUXSbH_ChSXu?!^8XSfY$}!*}lG4!eTQ6>3lAnT{ z>)0APi2r_aL$G-jBr<_^^ReN(xYn8oe)kK=GIl5&z?>{I*;7b>4go|=8<*U2q`H_7 zeiOzICFjc1(Bz0m5WJ--lM|TL^eTuy{_S9m2Y{GlUq=8~s#;hLBClReu`$TzVgom# z=JNlHl^iF_sfpb#P^0E}DWThx6qM(z>F!mcGbEg4Hp960SBg^PACoH15R_C%I?LsX zu9Ug#cQW({P7dZyHQco5011ld-rinYJ|xifQDMnG!$j@7v%>$;*cN;vC)g9BcOrsv za|bs>wk0?swV@Na`-lBWPnoC$$?|t>^2*zgF4iT=IL*|gBy>Qvuo_gN8^wTh93RoS@UX-q zC-4-5ybSRrk+?z5efGxuPBqDe$Rs^3QkdBHImqJxKCg~{l3v70tt_y|v;S@4{k(ERMvPWsITx5#IYMUQZ z{W~cF^Z~(4`G2})JAJx*wWfWnLR;Yt9DKL`pg+1O8_)fWW{Xl%AjGaBx#NLnNFY5x z73O?|kaiLL{06t+i;x?C3wGTG#YIL zLey*F6j>9UFOlmRH$TX8CM?-gOG>>qb8vqg2IcL%%TYuCWOF+VE;Y;}@WNu(0YS2; z6PDZK=EpzU`Hh=bJY?BfN6$~6uf3j0zuITCJa-B3Kkrg&JQaWz-!NEn+vFsS%r8$9 zr>oUq{m=Bla6i6=jRD%fl@P}iE0tr1*a7z0eO+eSS5f%1&;7)~`jPXm)AbP82o;wp zRfk)=u>l@-m1A7h#tzQeZuirG$IrKyA8QU}LTsy>kA9D@u6P-%Q?c<-le2{wX~b!I z3|?}i@G9_4+TKCDE_(Oqrr6NfczG|5v}`8QI9YNn`O}eI9>ee_%`cV4=O&-VkG+zU z(uQzPB!_!thI=>W8ydJTqZCkn7`#XE=e)|y%v?!0=jabpg--g>!GFVp?eTS3JMPXT5hibVq}IVs(?1* zbO~X4uoqLhXNBWtP68zbm8giw#ulzJQGV}G-)0Qw)xiSk(!|VJ+kGLU?x2kc$nv!P z{c9PMogDf7_6WRtq+!-wKeV?JI@#2p#?LzoK;@jKp)KxnHqBm#aV__Y_Tbu%>$jJX z!o-O2>YQiKKFmVE88#Tsq6FxNW@j_;J}-bi6cuoDIzBM9c${(~`uTH&{%ef^Xt?7N zt8B?K7y>um@;FhLti~UYmMaSz8t(sS*+77XL3R}cVFI@=j&ZsRf+=k$>*;)-oIJTm zf9L%L_aqN=-!;Wr){UDryodC~vK+ZZmd8h_2tP#eG&BHaR$h0#W9!wcxg_ismn~eB zA7oyt`ik~a`gY~AxlHtoE)V%8UmrToK@8aHEN!>0{4_Bgq-Aa)3#u2mP32gUhRVu9 z`mbAp^vVmMIJ0&EXa>{42q)3PTU zHIr`P_^!hpNHY0L%Fa$QLGl-G1U);0(OY^r%iA#pOs&ke7LnTpL8v1HoaLJ3=hX|x zJ**DvB@f}G^2b*%EUIRU070ZE2?}8yiI7=d<`Drq8!*R!i=)q%ZdUJzZmmJ;X4^#n z$(U?i(A%hYjQ47~wm=z$iXH@S;;aRTf||+j;`P!nK7=u0|6Hzi(dn8n^BsiO^Ynp_ zZ_zjg4*BQW&l7)TA4SZ-ZEc^Nnn7r{0uU*cGs?m;PN;-g0ky{q zu;WfONlF4%4sa4V6NK~(4LMI<2VxKr;1MBuS6zgHsB3?2(zl5c*rDJ;AyJ?2J!?4k zbSkbIf&gGeN9Q`xVi8-dIB-KCknT{ilW!3i-mpGrmf-SeVp-RAwK&5R9^!n5b(gpy26$1yBq_9#9;vU! zjUOkcwcQ?HvDPhES2kT=B}Y7+v?0s#AyIJ8@%f$ofGMDjI8lLYpoq2=%^LKjG`hzd zafPo(2&`x`dN#IO^F>G%PnkOct#$-0uQA`UYrE;F$}$3>;h_Y4_MG%6H(?&IEI)*i zn?+xvAIx|3d^dHhpQX&Xtu%&d74%wu;>)~~M)HxA6OERjutOxKv)Vn2bM>GAW)5q@ zufDG*MlFlT)4cJ_L=-N0!NV@e#9^m2u~a_|Ny{p#i=6r%KA{X=t+N9wsp|I1xpdD| zxYAIyQ)U;8DIJ$;vBI3#quEQBk#lrs#j!CEhIgl(K~T6==4cpHg+6dDtE;$l?mDod zRqCBax6dA7b%FShoU8@_9iKnnUmqZP2iz$=aC4H=?a%Gooa|Mu?!{I)0A(7*?LtyY zWaMlXrxlxP@pVS$Eq3R{?xUO8;$P3`}ch%G1K=+3I=A(If)Dv_1Qb z5<;*!R7 znBfygwhipo$Ur6NE45MKzrhHZ6&wCDKKl_8t)v9wz0R5X^*JV8;E)>R zQUdPJO-XwNoPMj2h=-fi9?$O&Got}YjtZlrKPp3R2^|1abKb`*{O6wKipvfRRc%)d zDRWI>gSBsiFqO!f`tSr;}EGPuC~sfvrn5ofv^aW-?*u_8+%O`?G?= z@OTFGzYozWQaMIEtsV(AQ;Xq|wr7(yxSIK^ zpc#%zui-SX>rQHlt&L6T9L12?gM?_?o?7UlU8oemOkabG_Q7et@O2KS%XE@4*$gH4U+I*s!pe9%M}IP^+1# zHNib@ooR8B^VHAOF6r$bx}7}tS~%UUVaYy?9stt?gUJ^v;BFppyfue#o;vit?X@$FI`5{L|&qCoq9< zJiX@-)Ys>#j89-u<@JYwMmqjV+;c zpTnyyE4uC+w0{|H#sGcA@iC?Gv92(yVw0zf2OIcwksTC&{_ihncUy^aZh{j`Yz6MP z^R<9y;D-riwNI)1gz1sJx!PBkSE>XL?KUKusn&gGIMVT@i5az7(b4|DK?aV6g`J>V zA!SLd{%;Em?&@w4mg|o_%je>70{xR-l{P;px*AiZZ~sb6aX&wN?x;<-&P$Lq%HQQb z#uSP)iz$?M=V0_q)9kvFrDY+JjOpXpxqKUbKYTK>e0MLVQ-Yea@sI4^C3ddTww}}# z!6nCYBUSr=am*mcEy)EpgsAx8Lcr$Y>H>`F5?l15WJ|ZF2hkgvN=uK&<@oQmmvzrj zHJq;xIe2(@jvC#RRISs5GgmmRO>On=d$fMM_vM9L9hyBDKRz!sne|m{Mk$PqhX;Sno_uU9gdQiJ zHs*6cN$V5+cbEx-aPOC2ttb`uo_}eqUin530NM()E<3b!QvA2Bi-y@P?$csEPdo2_ z%&Da*ayrc2uF$=WiNikdZVlq6C>9Y&UjFqdU$s~5Rm=IWvVKxuZNUk&a}mX}Go-JcB{?HVIX}mJN$Zx8kZ({UODeIV1AWkalKDR7OdOLH39+f~BTOLjq)4V+pDBrWLFp5!bz&wyk=3=z52+^RP`y(Vq87 zSE??FG9eOjPN;URylOn9oj_;pkkByFr`gu$pv*}wk~Ga=PnTCpUJ#IT^t!D5$=gxU zJp5=Ki*+Wb{XqYN^?>$AxD3^_SU0RUtuTjI7k9N7E=>nML@_@U6AKTUn8sEX`TjP{ zXTWB(4te7GqklfrMCIDA7WaYYMq;9vF#bp4fxtk*r7wO#2I!4ZnEtW^Y(6i<*uk)G z6F)mEx2b!w{NT^uzsJ?pU-Nz=CQptnF2(-Rl|oV|_+&INedqETejNY^(A}gxE?uUW z8!s`a3ZR(3Sz(anl3M@H$z%?}kopdPBX|T41R_HMEkOPsgTs=X$R(v>)(TU(9doxH zn6wvuimI&QUt)Qy*%q>5LZD3i;9gdH&RdB4_1@bzSCJIQ2;=Ygn}yl z3i9ob%*{g1MI@gQ@XDWFcBd;)h*swhGS>HzV+T;;m0p&i=T$Q_*TX(fwSkC)Fympq z`s_PoOb3c(PdAy}bJ?C$!ZPj^>2@RIqxMgZJU!bScN1JI!!{eKNN;$lDbrB@Xl}Pc zJ;_UpwVt8B@ma^gbkB-PAycY0x=k zqXQntRMTr^DQ@1xyFt8XrHraX#*QxpOb^}1X#vt=)d2`S!^Q$~yAAGFUwRxHRQ_*}UOuD;#ZUOUz5(iFERwP5mYd57Xd zSNNn!-MMc%2}1FaNnLqQO*gGkSkYbvF(CU))MySO`9)* zBca;@cK>{AslG-2g_jfYRmbu`dSTDh2R8$pe#&(TMP z9p_D{TWI%iSoT8awYDjm5Gdz6tVv!l>;Na-j!FQDc7kws$ZeM7fvg#PF5> zs27PV0gg6eEQ-L*N@4O0l*HlXz);(vYQ{=v-YU&ogn!F>+4RQDq~~fhDuc@R*Lpo) zeCLmLrnu9SqhcStSGXeOC&vwc<*YXnmSbTt`L%?27g2I~T*nc8S&VbE=m>2NDmkuf zg>7O|id)?f8@G8HoVdYcFE2wD0ZMu(Vy*Ry?utrf4|XGHtymKgz3m}D<4#?+vf(qT zeky3-5ijXQ`>FYEU7HVgg8zgK{l>fV>4+WE=;J@#@)CpT_)`?-be?tsFCb=$3-kC0 zHRM4LEqpY+#mHliQ2HANWQnn{999^jp9duw>)&@3B!>azoVD@0i}eltu3n8I4pW@< z1w6&sYH*j-Bz+Fq*Y^~}6-(y(O}2fgKBAHS-kkw^C~YAb$`;*pt?sg5wodRT7ZNB6 zrwU4u6Bc;C?6T~+@}_=LM(18NRoeumlj5(K@!Sw!wQou5;vifOp&p{U6;IZGBx^6_ zlgpfmPNlPEk;q}nHGx0$hnwMJ-)j`q>Qns1YjX8~98B^_Sq)RzANF5e*QWTjl|cIY zw3s`H&_02DdCRiWFTKVX^rG*Y<9k`L@g~wlEed$0CO~T!c=URmU^T@cPH{!Sy{e?co!}mUT5@B`KClm3V8z^o2(Y4|eDJhVBpK#nf!IkvoO zaTcDu_2dBvL{OqA+%(o2FW#q0eXFf7_AO7|28lJ3jQ+7!?#zWrj8G5Kp|2*{bbwn# z+i=6msS6SYHT>g$#=wF@HJ;l&dddBGVeKS;x82;VkU-a{`6GN_m$$;i!cur|$M$)q zcf{G?vIpbxdrB0YiWrqGH2~mHzT5?Hmv6tND7x}73DiXrJ*he;e&dbQ2Gf~52%c=F z;UxGCx?}`SDc77~BuJ?lNqUlev{v*>wac(Fx~4%@EtGnBZ3!7by@USmfv1 zu$T$1leh9I7Y}031@Om2Rq03HU&A6R@SAfuLBCVSm60Ue^vdN7`RFoqW!#a!fWYf) z#%Ve3`T2vZ4~tzemLQHw>oS$VP*WA%qJqkNvW5Rs38VX-P@&~>bjeqe!ElogKT3p# zrg2E>Av8eV=0;z#N>BQ<&3%3iZ{VxUA)mkYut-w>bg$@23H`~yo0=oj=>7^@G z>xOwya5qO3ij}DJ6!tD`hT#OZs3lQgJVDlZ?3thUlK5_o$>q9 z%a4F5`WiM(m49euXyA?F+oXCOH#u%zmA74i41d>=ABJ?_F>R6fw}M%15L^Oa(Ku60 z2~u9I7JC8A3aN0g499-4(L^XQu=if-1MEyxe|YSw!PA5 zdhLy5W$3vp>`^5|8>1vO*d0~Bu6yx4<=4tv9Yf2u6w!K9IPlQ=eKFs6J%iic8UNdX zX;yl-gI1G8t1s(8gGmh^8FFn6%Z^8eFjCQZfDIg`UV0iFc+PNqyq$bLS3Sc#n>{#$ ze3>-0#@5Ib(il3LoNwfQx#7fn`{paG3aL(B7O_L+|Zjqr%iK-^r-RV`n?jc3mVklHaszId& zcn_Le7v)=86c7$e{|*UGZL#-&>Zq*uNu50As1JS%qo$irmdgx87K&tIDH6_6_|X@X zLEnr4P~}5cO4u>w9Z5(o1@peH+@26!?c@jSG*hBEqIX76`#T$IUoxd^@&pBc2@R4v zGPl?>E#Zg=+sQJBVLh{YJHB%wD1W;V+E^#8R!KjvsLMAppBWY^*_ZOkhZmrkO!{3# z5D+IpF;-IZC&T5Jc`<*Bp^pezwZ=a}hD(BNSnqeAEBL9b%W9zxd0v(dKi9SEcmDcU z9b`6J7rIzVb;L^i25DwD#c#CB?=>G&nDNB346vhF&pMOX(6lOSRm{Jyo(RfGfBuw- znI4Ttm@qNE^si1E$dE6ZznAK47nWl(bHGa@w&Q&lV|JvvBwW?Y^1KuDQj;P8Qa91;ll3{{6mKfa|CFyiRaA zMi5tS-*6f_uW-#m9><4_4&$(3X?iWYAKIDbR=l(0OGT67)J7X$Y?(k+P4F(;VuDXA zCMn2~_&|BYDYWd^c+E5%(fkDL?W>+t$qRd|5x_N}dTIty!nt8vQ0{nLIn;7E*1An! zSbcHaq?^v!#<_N=;)ESyQnR=O-D39V$3Q2qPF<_~(zFIc$L|WWdb+hPmRTKqU%Fp= z$TX@F^Rd1&yd+Lf`4HDni2h7VmNGCY4>imy4S7zA){s}P`AAu)m)GKEzD{A7QCn%h z%-%q4mseaqW%Juk(#%eB_lslCP4Jq@p4`UU1e2|VKgPIc77ipMqhlk=P7|9BXM7GH z)01i~zZiS=$$N2ZasrWbv7$zFoI}-K_dM9j6gXmoWzpemmjE;G2y|uq+F!ajS1!I( zJ3S?8dQ{QoJ>gY@LZ)I5WzMS$heWYJ4b^BZWkdoe(`)gE1}htWm1cVnDPvC)>5iEl z3U1Kg|H-#&3q<{VfH{h*Tj3;ma9!TlIa$Cen<8E&CXtmr@ya?`ty777W7sJ7#_?mC z>NZ)&s38Fn-d;lA29{)Gj9B)1w4wdxuK;Y{-4%Oot-XkWjbPKyW1W1-Jz_8<9~d}J zqLr!SBnIE(?O~U;`;9Fx8rN!4jIGpVW3M>O;1|#xWEC02*f~3wsbwnDO}+<6&|*@e zOezy!I52B*u0_!n%V$OIXOY6$3EQl8N^T2B!?Iyc*56Y*w_jiYiT++CQB#Wu!o&&A z6>+|WWx|QewX*rUhIvY?d>NwOte}%mk}0vY;YR=z>$LNy62FM8o;W^zjgOPy(i4lVgoBsxrIv0_CMI?0+a`hp>jDX^I*R6&c6a8OmoWN*lF(*3(WI z*ezp2>%b4i%BSb&0+mc47AlqXN)p5|n(QmTIEm;nsCXdcCTSZzdC-7Wib65|l6(FQ z?WZ0)#@y#{#1{(*IJv{fb9yAS1uu_i#D=(|tyMR3ZVA4j1AM;vtnde%rg3Wg6UvD2 zImsdF2-VJ17T*yIgcMDYP&;xTum{A^sPI!KRbqY6Pn4X#h+Uscmh0OHzS)pjo~M-D zt)p5$*^zG%&VPUWU0A{}G}HEIY&6sJ6w7O_3@b>C*s4~8!I&IGDos!le|L!S@uDSu zqr^Rv9`S;!E*{m85eo#9Q*ATG`K{3c;Q!)vWfCX=3Ci%N~=7IWZcJ3=`p-w6#jG(AE>pBu_2lFIHpx%&ckW0mTY?K1)qzlpUzk~8p$s%SG;w_q#B+EK z3Opn8s}9^__Q7}cnzsyyp6n=la2WP(ay>IUw!-GB`@8S;1AWsEWz%`r$`Fu`O(@5H z6tW}fx^ZjDDj%Srg(e~*f6%DUo2eP6wtCA3^cva+7}e=z8>_3bhd+~iYLL$iHZ9`Y zvgd*k%ny!~$oba2I#HxCD{5r_BYOR>Pg;0PoZIao4ooq>CNcK1wi=EDy?GeF)0Ml2 zjQeF-oYH}0HrAPW4W05r!_@*6wZ;D0s!vnw%EW2y`(S4Imzn=0KXaP? zn^EiuF5pC2;f>r@8UZ|zv9$Ih4I5kJ5tRk9^mc9O8|OSX zzx`(IssKZX95Df#(DLZ|sEpxBmic6Sz8v1A}cEEnUw2XGEb6R5Kmt(T|C|7VsRMxXAe8%{PG|( z5U|w_=EyoBfS{r#o!3Ii}@?^|beySo3u=sS6VypMmIHC$<1 z@MB$|{I>U<1K~p_q)il4eOu5W0&@j$*l||>Dy^oK-Nz~X?j;G75Ly2aY?D&J?fhp| zM1B>F=LTj>r;6(Ag3MyaKyh}*h)dz>yj`ojs~?)7&jF>!N5~MnUUj!)`q|zD+B9jY zhe;AgKql_XXBsjN-sS;&;Vfl_MI@d zmd{N(?e6xsmAk8e&FWC}%X9omtFUVKSKbd}qN*YJxlLU1iHdVm%F|QI)K#YB-_(OX zGDDbXR4emq*JbRD)A;9@C#Jh{*?yWd1mWT1ne%zD);c#c(oW5>7~Kn!#o;8BhJKN- zDiQF!>wJCMXu%RumlB@Aj*^q2^hPd2Ui6=adz~1r2Gr0->zh@EyOUPTjLOKo3)MGE z3SoTEZ{NVn+Fkj)3+bC#(uM$sgN~oXy@yMx=IOsw_c;4xe86Bi?L)~asIgCf*f)dDvPdj(_E=)@>%6Sa0?2Yg2d|MVOnf7dUT? z$h@z8skPeZ80!!2JG~nbYs<=mu85J=2Ub@(r$J{KyMCcyN4kWS8D>bS$RE%DhI?oN z%BW_p>Z6GBIw6+*tM9V2I>Vn+f+uY9xW4UD_1p+{<%7AkS{eutIJjrerSiUbS?6`V zMBt(^OIJ@$1P)dV@&2xU9`r)sR`U z+RuVlZLtBEA2)s0IRlI~QPMFLf|UCcqR=&qvB2p`3xXGa-8%M%n)`o&0VH|HE5c39 zWzPHBO!<6h@Kz<(F;EB%SP?Sm;Z#0u zUgjK$4kR5zDdXlY!xVF5_%KFVD*l|}eCx&vQQ5$zh9=44(OknptoKTlsGBG%T1tdA zZ6ZCC<`<)1997o1r420KLUq9;f`O*8cGifgM8CY~jw^Rksw@P4fFA&Yl;hdln*TY4 z%k|Ml_QiSV94Vr>_kUKi$X+fyI0d(ZC2u%9*(T^Ra>dyu$)n3FETe{^U&2^a!1B zJj2y@!GV{MGXAQ0RdjT<1rl<8df5_Xj!D9G+n8e*qPB{l0MOq zQVx{H9M$|OsSyKAO9Y5wA{A@gt#nQH^}N)yg*B^4&73m=mqU?~JX*2w)1#xb7Uo@y zGipEQPjylo<$dI~vljt17LziLUJL4>>(l_o1=2D~W)AN6u}fGW(Lp17xbm?m>u!7& z+RWP43jp0-ZE0I^-2M#4Zg1aigsy)Vuc}TtPwijc59Cagg{_Qc0ynpUHrvj% zU>FA?cEE23sok00m2$XrSzC&A=f5dK;qk6@!n?Jh=>C{uc?<6G+Z?do{Byw577S*< z>LFa>S^tM`>GSOY?Ui4@s}lrLijyu^@i4NV*lO5 z$|O(P*KgUL=dU;7y-D= z9TOG5@(dMcB}4K(@#lIHY#ptitU7e%f9umjz12#{ymAX1FSU^DVkfL1zdH%x@|HJ1 z@0>-o7WM5R_D&2+$ba|Z}t zus9o_i$urVz1vY|n|>%QgQoz;1o^5T)SCFDETAj;#z;n)1v^S?!^F1? z`Q%oUj#dV|8LbtNeAD^ZPq4`J47J*Rny$Upp5S^ZMTo>3bgB4X^~f)wl){_;m7Ewe zni9VxH;~pa=3b6_kbH0auKufqA$iL1_^*!Tr@;T4CTM^yt|rJr!MQLJan^bWGF82- z3`~4~w0-jqu+4x2F&6w710DVU)Wf)+&OsO#3|?lB3EwKpcLf8e>)@*5{jU!c=a^Ot zV$RVY|EspKN|~4ju_b2R*Uax_MZI0#dT7pvaMTFd=k2EddxX%lb74(&Ga*;iF!Eo0 zMr0|O81;;3+s~)VxI@Nw<=^OGUuNX4VypPB{QeyTAij!i?NqOu|-!g{{{ EADAFyuK)l5 literal 0 HcmV?d00001 diff --git a/screenshots/窗口bug.png b/screenshots/窗口bug.png new file mode 100644 index 0000000000000000000000000000000000000000..c21170a207ed49daf6be913b6fa75ff15dcb3708 GIT binary patch literal 89356 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 DNZA-v literal 0 HcmV?d00001 diff --git a/team-require/api/knowledge-api.md b/team-require/api/knowledge-api.md new file mode 100644 index 0000000..962a23f --- /dev/null +++ b/team-require/api/knowledge-api.md @@ -0,0 +1,259 @@ +# 知识库 API + +## 基础信息 + +| 项目 | 说明 | +|------|------| +| 基础URL | `http://localhost:8082` | + +## 接口列表 + +### 1. 创建知识库 + +**请求** + +``` +POST /api/knowledge/create +Content-Type: application/json +``` + +| 参数 | 类型 | 必填 | 说明 | +|------|------|------|------| +| name | String | 是 | 知识库名称 | +| description | String | 否 | 知识库描述 | +| llm_model_id | String | 是 | LLM 模型 ID | +| embedding_model_id | String | 是 | Embedding 模型 ID | +| parsing_config | Object | 是 | 解析配置 | +| - engine | String | 是 | 解析引擎:markitdown / docling | +| - docling_url | String | 条件 | Docling URL(engine=docling 时必填) | +| - enable_pdf | Boolean | 否 | 是否启用 PDF 解析 | +| - pandoc | Boolean | 否 | 是否启用 Pandoc | + +**响应** + +```json +{ + "success": true, + "id": "kb_xxx", + "message": "Knowledge base created successfully" +} +``` + +--- + +### 2. 获取知识库列表 + +**请求** + +``` +GET /api/knowledge/list +``` + +**响应** + +```json +{ + "success": true, + "data": [ + { + "id": "kb_001", + "name": "产品文档知识库", + "description": "用于存储产品手册", + "llm_model_id": "model_001", + "embedding_model_id": "model_002", + "status": "active", + "document_count": 15, + "chunk_count": 156, + "created_at": "2024-01-15T10:30:00Z", + "updated_at": "2024-01-15T10:30:00Z" + } + ] +} +``` + +--- + +### 3. 获取知识库详情 + +**请求** + +``` +GET /api/knowledge/:id +``` + +**响应** + +```json +{ + "success": true, + "data": { + "id": "kb_001", + "name": "产品文档知识库", + "description": "用于存储产品手册", + "llm_model_id": "model_001", + "embedding_model_id": "model_002", + "parsing_config": { + "engine": "markitdown", + "enable_pdf": true, + "pandoc": true + }, + "status": "active", + "document_count": 15, + "chunk_count": 156, + "created_at": "2024-01-15T10:30:00Z", + "updated_at": "2024-01-15T10:30:00Z" + } +} +``` + +--- + +### 4. 删除知识库 + +**请求** + +``` +DELETE /api/knowledge/:id +``` + +**响应** + +```json +{ + "success": true, + "message": "Knowledge base deleted" +} +``` + +--- + +### 5. 获取知识库下的文档列表 + +**请求** + +``` +GET /api/knowledge/:id/documents +``` + +| 参数 | 类型 | 必填 | 说明 | +|------|------|------|------| +| status | String | 否 | 过滤状态:all / parsed / parsing / failed | + +**响应** + +```json +{ + "success": true, + "data": [ + { + "id": "doc_001", + "knowledge_base_id": "kb_001", + "name": "产品手册_v2.0.pdf", + "file_size": 2516582, + "status": "parsed", + "chunk_count": 156, + "uploaded_at": "2024-01-15T10:30:00Z" + } + ] +} +``` + +--- + +### 6. 上传文档到知识库 + +**请求** + +``` +POST /api/knowledge/:id/documents +Content-Type: multipart/form-data +``` + +| 参数 | 类型 | 必填 | 说明 | +|------|------|------|------| +| file | File | 是 | 要上传的文件 | + +**响应** + +```json +{ + "success": true, + "id": "doc_001", + "url": "http://localhost:8082/files/abc123.pdf", + "document": { + "id": "doc_001", + "knowledge_base_id": "kb_001", + "name": "产品手册_v2.0.pdf", + "file_size": 2516582, + "status": "parsing", + "chunk_count": 0, + "uploaded_at": "2024-01-15T10:30:00Z" + }, + "message": "Document uploaded" +} +``` + +--- + +### 7. 删除知识库文档 + +**请求** + +``` +DELETE /api/knowledge/:id/documents/:doc_id +``` + +**响应** + +```json +{ + "success": true, + "message": "Document deleted" +} +``` + +--- + +### 8. 重新解析文档 + +**请求** + +``` +POST /api/knowledge/:id/documents/:doc_id/reparse +``` + +**响应** + +```json +{ + "success": true, + "message": "Document reparse started" +} +``` + +--- + +### 9. 获取文档预览内容 + +**请求** + +``` +GET /api/knowledge/:id/documents/:doc_id/preview +``` + +| 参数 | 类型 | 必填 | 说明 | +|------|------|------|------| +| page | Number | 否 | 页码(默认 1) | + +**响应** + +```json +{ + "success": true, + "data": { + "total_pages": 3, + "current_page": 1, + "content": "第一章 产品介绍..." + } +} +```