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

View File

@ -17,7 +17,7 @@ sys.path.append(parent_dir)
from cryptoai.agents.crypto_agent import CryptoAgent
from cryptoai.agents.gold_agent import GoldAgent
from cryptoai.utils.config_loader import ConfigLoader
from cryptoai.tasks.user import task_run
logger = logging.getLogger(__name__)
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("20:00").do(CryptoAgent().start_agent)
schedule.every().day.at("00:00").do(task_run)
while True:
schedule.run_pending()
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:
build: .
container_name: cryptoai-task
image: cryptoai:0.0.16
image: cryptoai:0.0.17
restart: always
volumes:
- ./cryptoai/data:/app/cryptoai/data
@ -29,7 +29,7 @@ services:
cryptoai-api:
build: .
container_name: cryptoai-api
image: cryptoai-api:0.1.38
image: cryptoai-api:0.1.39
restart: always
ports:
- "8000:8000"

18
test.py
View File

@ -4,19 +4,7 @@ import json
from time import sleep
from cryptoai.models.token import TokenManager
from cryptoai.utils.db_manager import get_db_context
from cryptoai.tasks.user import task_run
if __name__ == "__main__":
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)
task_run()