diff --git a/app/api/ai_assist/service.py b/app/api/ai_assist/service.py index afecc53..68f739b 100644 --- a/app/api/ai_assist/service.py +++ b/app/api/ai_assist/service.py @@ -11,7 +11,7 @@ async def get_and_set_last_key(redis: Redis, word: str, user_id: str): print(last_word) # 如果上一次查的词和这次不同,就清空旧词的记录 - if last_word and last_word != word: + if last_word and last_word.decode() != word: await clear_chat_history(redis, user_id, last_word.decode()) # 更新当前词 diff --git a/app/api/search_dict/routes.py b/app/api/search_dict/routes.py index 7dd94d7..f8ff0c3 100644 --- a/app/api/search_dict/routes.py +++ b/app/api/search_dict/routes.py @@ -67,7 +67,10 @@ async def search(request: Request, body: SearchRequest, user=Depends(get_current :param user: :return: """ + redis = request.app.state.redis + query = body.query + if body.language == 'fr': query = normalize_text(query) word_contents = await ( @@ -100,6 +103,9 @@ async def search(request: Request, body: SearchRequest, user=Depends(get_current eng_explanation=wc.eng_explanation, ) ) + + await service.search_time_updates(redis) + return WordSearchResponse( query=query, pos=pos_contents, @@ -130,6 +136,9 @@ async def search(request: Request, body: SearchRequest, user=Depends(get_current example=wc.example, ) ) + + await service.search_time_updates(redis) + return WordSearchResponse( query=query, pos=pos_contents, diff --git a/app/api/search_dict/service.py b/app/api/search_dict/service.py index df625cf..c76056d 100644 --- a/app/api/search_dict/service.py +++ b/app/api/search_dict/service.py @@ -2,6 +2,7 @@ import re from typing import List, Tuple, Dict, Literal, Type from fastapi import HTTPException +from redis.asyncio import Redis from tortoise import Tortoise, Model from tortoise.expressions import Q @@ -12,6 +13,12 @@ from app.utils.textnorm import normalize_text from settings import TORTOISE_ORM +async def search_time_updates(redis: Redis) -> None: + key = "search_times" + + await redis.incr(key, 1) + + async def detect_language(text: str) -> Tuple[str, str, bool]: """ 自动检测输入语言: diff --git a/app/api/util_api/__init__.py b/app/api/util_api/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/app/api/util_api/routes.py b/app/api/util_api/routes.py new file mode 100644 index 0000000..58c748b --- /dev/null +++ b/app/api/util_api/routes.py @@ -0,0 +1,20 @@ +#TODO 更新接口文档 +from fastapi import APIRouter +from starlette.requests import Request + +ulit_router = APIRouter() + +@ulit_router.get("/search_time", tags=["search times"]) +async def get_search_time(request: Request): + redis = request.app.state.redis + + key = f"search_time" + + count = int(await redis.get(key)) + if not count: + await redis.set(key, value=0) + count = 0 + + return { + "count": count, + } diff --git a/main.py b/main.py index 8b6d2f6..8aca619 100644 --- a/main.py +++ b/main.py @@ -15,6 +15,7 @@ from app.api.redis_test import redis_test_router from app.api.search_dict.routes import dict_search from app.api.translator import translator_router from app.api.user.routes import users_router +from app.api.util_api.routes import ulit_router from app.api.word_comment.routes import word_comment_router from app.core.redis import init_redis, close_redis from app.utils.phone_encrypt import PhoneEncrypt @@ -67,5 +68,7 @@ app.include_router(pron_test_router, tags=["Pron Test API"], prefix="/test/pron" app.include_router(article_router, tags=["Article API"]) +app.include_router(ulit_router, tags=["Util Functions API"]) + if __name__ == "__main__": uvicorn.run("main:app", host="127.0.0.1", port=8000, reload=True)