fix: CORS/API 500 issues, switch to native tabbar, restore quick-actions

- Backend: guest UUID format fix, /auth/me guest branch, UUID validation in deps.py, CORS config fix
- Frontend: switch to native tabbar (custom: false), cleanup App.vue, redesign quick-actions with colored icons, conditional wechat login, proxy API requests via Vite
This commit is contained in:
TradeMate Dev
2026-05-13 17:54:13 +08:00
parent 7b62c2f8b4
commit 04f7ff0317
8 changed files with 101 additions and 66 deletions
+24 -2
View File
@@ -82,7 +82,7 @@ async def login(
@router.post("/login/guest")
async def guest_login():
guest_id = f"guest_{uuid.uuid4().hex[:12]}"
guest_id = str(uuid.uuid4())
access_token = create_access_token(
{"sub": guest_id, "tier": "guest", "role": "guest", "is_guest": True},
expires_delta=timedelta(hours=24)
@@ -109,8 +109,18 @@ async def refresh(data: RefreshRequest):
if not payload or payload.get("type") != "refresh":
raise HTTPException(status_code=401, detail="Invalid refresh token")
# 保留游客/角色等信息
extra = {}
if payload.get("is_guest"):
extra = {"is_guest": True, "tier": "guest", "role": "guest"}
else:
extra = {
"tier": payload.get("tier", "free"),
"role": payload.get("role", "user"),
}
return {
"access_token": create_access_token({"sub": payload["sub"]}),
"access_token": create_access_token({"sub": payload["sub"], **extra}),
"token_type": "bearer",
}
@@ -127,6 +137,18 @@ async def get_me(
if not payload:
raise HTTPException(status_code=401, detail="Invalid token")
if payload.get("is_guest"):
return {
"id": payload["sub"],
"phone": None,
"username": "游客用户",
"tier": "guest",
"role": "guest",
"is_guest": True,
"settings": {},
"created_at": None,
}
result = await db.execute(select(User).where(User.id == payload["sub"]))
user = result.scalar_one_or_none()
if not user: