42 lines
2.2 KiB
Python
42 lines
2.2 KiB
Python
"""Synthetic search QA: one published entry, unpublished entries and an empty account."""
|
|
from pathlib import Path
|
|
import os,sys,json
|
|
sys.path.insert(0,str(Path(__file__).resolve().parents[3]/'wechat_rpa'))
|
|
for key in ('KNOWLEDGE_QDRANT_URL','KNOWLEDGE_EMBEDDING_URL','KNOWLEDGE_EMBEDDING_MODEL'):
|
|
os.environ[key]=''
|
|
import admin_backend,admin_api
|
|
from archive_store import ArchiveStore
|
|
from knowledge_store import KnowledgeStore
|
|
from test_knowledge_review import FullReviewTest
|
|
|
|
folder=Path(__file__).resolve().parent
|
|
db=admin_backend.Database(folder/'backend.db')
|
|
if not db.path.exists():
|
|
db.initialize('InitialAdmin123')
|
|
actor=db.authenticate('admin','InitialAdmin123')['id']
|
|
db.change_password(actor,'InitialAdmin123','KnowledgeQA@2026','')
|
|
store=KnowledgeStore(db);store.initialize()
|
|
fixture=FullReviewTest();fixture.db=db;fixture.store=store;fixture.actor=actor;fixture.archive=ArchiveStore(db)
|
|
accounts=[]
|
|
for index in range(2):
|
|
_,account=db.create_desktop_session({'user_id':f'search-qa-{index}','sn':f'SQ00{index+1}',
|
|
'nickname':['检索验收客服','空知识验收客服'][index]},f'search-qa-device-{index}','QA','1.0','127.0.0.1')
|
|
if index==0:
|
|
ids=fixture.seed(3,account['tenant_id'])
|
|
for item_id in ids[:2]:
|
|
item=store.detail(account['tenant_id'],item_id)
|
|
store.transition(account['tenant_id'],item_id,item['revision'],'approve',actor,'',True)
|
|
store.publish(account['tenant_id'],ids[0],item['revision'],actor,'')
|
|
accounts.append({'id':account['id'],'tenant_id':account['tenant_id']})
|
|
(folder/'fixture.json').write_text(json.dumps(accounts),encoding='utf-8')
|
|
app=admin_api.create_app(db.path)
|
|
@app.middleware('http')
|
|
async def api_prefix(request,call_next):
|
|
if request.scope['path'].startswith('/api/') and not request.scope['path'].startswith('/api/v2/'):
|
|
request.scope['path']=request.scope['path'].replace('/api/','/api/v2/',1)
|
|
request.scope['raw_path']=request.scope['path'].encode()
|
|
return await call_next(request)
|
|
if __name__=='__main__':
|
|
import uvicorn
|
|
uvicorn.run(app,host='127.0.0.1',port=18870,log_level='warning')
|