Compare commits
2 Commits
3c5bc987d9
...
3b025a2eca
| Author | SHA1 | Date |
|---|---|---|
|
|
3b025a2eca | |
|
|
222a424822 |
|
|
@ -8,7 +8,8 @@
|
||||||
.LSOverride
|
.LSOverride
|
||||||
|
|
||||||
# Icon must end with two \r
|
# Icon must end with two \r
|
||||||
Icon
|
Icon
|
||||||
|
|
||||||
|
|
||||||
# Thumbnails
|
# Thumbnails
|
||||||
._*
|
._*
|
||||||
|
|
@ -318,4 +319,7 @@ poetry.toml
|
||||||
# LSP config files
|
# LSP config files
|
||||||
pyrightconfig.json
|
pyrightconfig.json
|
||||||
|
|
||||||
|
# VScode setting files
|
||||||
|
.vscode/
|
||||||
|
|
||||||
# End of https://www.toptal.com/developers/gitignore/api/python,pycharm,macos
|
# End of https://www.toptal.com/developers/gitignore/api/python,pycharm,macos
|
||||||
|
|
|
||||||
|
|
@ -71,7 +71,7 @@ async def register_email_verify(req: Request, user_email: UserResetEmailRequest)
|
||||||
|
|
||||||
|
|
||||||
@users_router.put("/update", deprecated=False)
|
@users_router.put("/update", deprecated=False)
|
||||||
async def user_modification(updated_user: UpdateUserRequest, current_user: User = Depends(get_current_user)):
|
async def user_modification(updated_user: UpdateUserRequest, current_user: Tuple[User, Dict] = Depends(get_current_user)):
|
||||||
"""
|
"""
|
||||||
|
|
||||||
:param updated_user: Pydantic 模型验证修改内容(根据JSON内容修改对应字段)
|
:param updated_user: Pydantic 模型验证修改内容(根据JSON内容修改对应字段)
|
||||||
|
|
@ -169,7 +169,7 @@ async def forget_password(request: Request, user_request: UserResetPhoneRequest)
|
||||||
@users_router.post("/auth/varify_code", deprecated=True)
|
@users_router.post("/auth/varify_code", deprecated=True)
|
||||||
async def varify_code(data: VerifyPhoneCodeRequest, request: Request):
|
async def varify_code(data: VerifyPhoneCodeRequest, request: Request):
|
||||||
redis = request.app.state.redis
|
redis = request.app.state.redis
|
||||||
if not await service.varify_code(redis=redis, phone=data.phone, input_code=data.code):
|
if not await service.verify_code(redis=redis, phone=data.phone, input_code=data.code):
|
||||||
raise HTTPException(status_code=400, detail="验证码错误或已过期")
|
raise HTTPException(status_code=400, detail="验证码错误或已过期")
|
||||||
return {"message": "验证成功,可以重置密码"}
|
return {"message": "验证成功,可以重置密码"}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -30,6 +30,7 @@ class User(Model):
|
||||||
encrypted_phone = fields.CharField(max_length=11, description="用户手机号", null=True)
|
encrypted_phone = fields.CharField(max_length=11, description="用户手机号", null=True)
|
||||||
language = fields.ForeignKeyField("models.Language", related_name="users", on_delete=fields.CASCADE)
|
language = fields.ForeignKeyField("models.Language", related_name="users", on_delete=fields.CASCADE)
|
||||||
is_admin = fields.BooleanField(default=False, description="管理员权限")
|
is_admin = fields.BooleanField(default=False, description="管理员权限")
|
||||||
|
token_usage = fields.IntField(default=0, description="AI答疑使用量")
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
table = "users"
|
table = "users"
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,34 @@
|
||||||
|
from tortoise import fields
|
||||||
|
from tortoise.models import Model
|
||||||
|
|
||||||
|
class CommentFr(Model):
|
||||||
|
id = fields.IntField(pk=True)
|
||||||
|
user = fields.ForeignKeyField("models.User", related_name="comments_fr")
|
||||||
|
comment_text = fields.TextField(description="The comment text")
|
||||||
|
comment_word = fields.ForeignKeyField("models.WordlistFr", related_name="comments_fr")
|
||||||
|
created_at = fields.DatetimeField(auto_now_add=True)
|
||||||
|
updated_at = fields.DatetimeField(auto_now=True)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
table = "comments_fr"
|
||||||
|
|
||||||
|
class CommentJp(Model):
|
||||||
|
id = fields.IntField(pk=True)
|
||||||
|
user = fields.ForeignKeyField("models.User", related_name="comments_jp")
|
||||||
|
comment_text = fields.TextField(description="The comment text")
|
||||||
|
comment_word = fields.ForeignKeyField("models.WordlistJp", related_name="comments_jp")
|
||||||
|
created_at = fields.DatetimeField(auto_now_add=True)
|
||||||
|
updated_at = fields.DatetimeField(auto_now=True)
|
||||||
|
supervised = fields.BooleanField(default=False)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
table = "comments_jp"
|
||||||
|
|
||||||
|
class ImprovingComment(Model):
|
||||||
|
id = fields.IntField(pk=True)
|
||||||
|
user = fields.ForeignKeyField("models.User", related_name="comments_improving")
|
||||||
|
comment_text = fields.TextField(description="The comment text")
|
||||||
|
created_at = fields.DatetimeField(auto_now_add=True)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
table = "comments_improving"
|
||||||
|
|
@ -0,0 +1,28 @@
|
||||||
|
from typing import List, Tuple
|
||||||
|
from typing import Literal
|
||||||
|
|
||||||
|
from pydantic import BaseModel
|
||||||
|
|
||||||
|
from app.api.user.user_schemas import UserSchema
|
||||||
|
|
||||||
|
|
||||||
|
class CommentPiece(BaseModel):
|
||||||
|
user_id: UserSchema
|
||||||
|
comment_content: str
|
||||||
|
|
||||||
|
class Config:
|
||||||
|
from_attributes = True
|
||||||
|
|
||||||
|
class CommentSet(BaseModel):
|
||||||
|
comments: List[Tuple[int, str, str]]
|
||||||
|
|
||||||
|
class Config:
|
||||||
|
from_attributes = True
|
||||||
|
|
||||||
|
class CommentUpload(BaseModel):
|
||||||
|
comment_word: str
|
||||||
|
comment_content: str
|
||||||
|
lang: Literal["fr", "jp"]
|
||||||
|
|
||||||
|
class Config:
|
||||||
|
from_attributes = True
|
||||||
3
main.py
3
main.py
|
|
@ -7,6 +7,7 @@ from tortoise.contrib.fastapi import register_tortoise
|
||||||
|
|
||||||
import app.models.signals
|
import app.models.signals
|
||||||
from app.api.admin.router import admin_router
|
from app.api.admin.router import admin_router
|
||||||
|
from app.api.ai_assist.routes import ai_router
|
||||||
from app.api.redis_test import redis_test_router
|
from app.api.redis_test import redis_test_router
|
||||||
from app.api.search import dict_search
|
from app.api.search import dict_search
|
||||||
from app.api.translator import translator_router
|
from app.api.translator import translator_router
|
||||||
|
|
@ -52,5 +53,7 @@ app.include_router(redis_test_router, tags=["Redis Test-Only API"])
|
||||||
|
|
||||||
app.include_router(translator_router, tags=["Translation API"])
|
app.include_router(translator_router, tags=["Translation API"])
|
||||||
|
|
||||||
|
app.include_router(ai_router, tags=["AI Assist API"], prefix="/ai_assist")
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
uvicorn.run("main:app", host="127.0.0.1", port=8000, reload=True)
|
uvicorn.run("main:app", host="127.0.0.1", port=8000, reload=True)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue