This commit is contained in:
aaron 2025-06-04 10:31:44 +08:00
parent 6610457f8b
commit e2e68ccd8b
5 changed files with 41 additions and 18 deletions

View File

@ -12,6 +12,8 @@ from cryptoai.models.user_question import UserQuestionManager
from cryptoai.models.token import TokenManager from cryptoai.models.token import TokenManager
from sqlalchemy.orm import Session from sqlalchemy.orm import Session
from cryptoai.utils.db_manager import get_db from cryptoai.utils.db_manager import get_db
from cryptoai.models.user import UserManager
class AnalysisHistoryRequest(BaseModel): class AnalysisHistoryRequest(BaseModel):
symbol: str symbol: str
content: str content: str
@ -200,6 +202,11 @@ async def get_conversation_messages(conversation_id: str,
async def chat(request: ChatRequest, async def chat(request: ChatRequest,
current_user: dict = Depends(get_current_user), current_user: dict = Depends(get_current_user),
session: Session = Depends(get_db)): session: Session = Depends(get_db)):
# 检查用户积分
if current_user["points"] < 20:
raise HTTPException(status_code=400, detail="您的积分不足,请先充值。")
payload = { payload = {
"inputs" : {}, "inputs" : {},
"query": request.message, "query": request.message,
@ -227,6 +234,10 @@ async def chat(request: ChatRequest,
status_code=response.status_code, status_code=response.status_code,
detail=f"Failed to get response from Dify API: {response.text}" detail=f"Failed to get response from Dify API: {response.text}"
) )
# 扣除用户积分
manager = UserManager(session)
manager.consume_user_points(current_user["id"], 20)
# 获取response的stream # 获取response的stream
def stream_response(): def stream_response():

View File

@ -17,7 +17,7 @@ sys.path.append(parent_dir)
from cryptoai.agents.crypto_agent import CryptoAgent from cryptoai.agents.crypto_agent import CryptoAgent
from cryptoai.agents.gold_agent import GoldAgent from cryptoai.agents.gold_agent import GoldAgent
from cryptoai.utils.config_loader import ConfigLoader from cryptoai.utils.config_loader import ConfigLoader
from cryptoai.tasks.user import task_run
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG) logger.setLevel(logging.DEBUG)
@ -35,6 +35,8 @@ def task_start():
schedule.every().day.at("16:00").do(CryptoAgent().start_agent) schedule.every().day.at("16:00").do(CryptoAgent().start_agent)
schedule.every().day.at("20:00").do(CryptoAgent().start_agent) schedule.every().day.at("20:00").do(CryptoAgent().start_agent)
schedule.every().day.at("00:00").do(task_run)
while True: while True:
schedule.run_pending() schedule.run_pending()
time.sleep(1) time.sleep(1)

22
cryptoai/tasks/user.py Normal file
View File

@ -0,0 +1,22 @@
from cryptoai.models.user import User
from cryptoai.utils.db_manager import get_db_context, SessionLocal
from sqlalchemy.orm import Session
import logging
logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)
def task_run():
try:
session = SessionLocal()
users = session.query(User).filter(User.points < 100).all()
for user in users:
user.points = 100
session.commit()
logger.info(f"用户 {user.mail} 积分复位成功")
except Exception as e:
logger.error(f"用户积分复位失败: {e}")
finally:
if session:
session.close()

View File

@ -4,7 +4,7 @@ services:
cryptoai-task: cryptoai-task:
build: . build: .
container_name: cryptoai-task container_name: cryptoai-task
image: cryptoai:0.0.16 image: cryptoai:0.0.17
restart: always restart: always
volumes: volumes:
- ./cryptoai/data:/app/cryptoai/data - ./cryptoai/data:/app/cryptoai/data
@ -29,7 +29,7 @@ services:
cryptoai-api: cryptoai-api:
build: . build: .
container_name: cryptoai-api container_name: cryptoai-api
image: cryptoai-api:0.1.38 image: cryptoai-api:0.1.39
restart: always restart: always
ports: ports:
- "8000:8000" - "8000:8000"

18
test.py
View File

@ -4,19 +4,7 @@ import json
from time import sleep from time import sleep
from cryptoai.models.token import TokenManager from cryptoai.models.token import TokenManager
from cryptoai.utils.db_manager import get_db_context from cryptoai.utils.db_manager import get_db_context
from cryptoai.tasks.user import task_run
if __name__ == "__main__": if __name__ == "__main__":
task_run()
symbols = get_binance_api().get_all_symbols()
# for symbol in symbols:
# # 移除 symbol 中的 USDT
# symbol = symbol.replace('USDT', '')
# print(symbol)
session = get_db_context()
manager = TokenManager(session)
for symbol in symbols:
base_asset = symbol.split('USDT')[0]
quote_asset = 'USDT'
manager.create_token(symbol,base_asset, quote_asset)