fix(main): 优化项目结构

This commit is contained in:
cnlimiter
2026-03-18 19:57:49 +08:00
parent baeb3061fe
commit fef0978a0e
23 changed files with 59 additions and 37 deletions

View File

@@ -15,6 +15,7 @@ dependencies = [
"aiosqlite>=0.19.0",
"psycopg[binary]>=3.1.18",
"websockets>=16.0",
"path>=17.1.1",
]
[project.optional-dependencies]

View File

@@ -2,7 +2,7 @@
核心功能模块
"""
from .oauth import OAuthManager, OAuthStart, generate_oauth_url, submit_callback_url
from .openai.oauth import OAuthManager, OAuthStart, generate_oauth_url, submit_callback_url
from .http_client import (
OpenAIHTTPClient,
HTTPClient,

View File

@@ -0,0 +1,3 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# @Time : 2026/3/18 19:55

View File

@@ -14,7 +14,7 @@ from typing import Any, Dict, Optional
from curl_cffi import requests as cffi_requests
from ..config.constants import (
from ...config.constants import (
OAUTH_CLIENT_ID,
OAUTH_AUTH_URL,
OAUTH_TOKEN_URL,

View File

@@ -9,7 +9,7 @@ from typing import Optional
from curl_cffi import requests as cffi_requests
from ..database.models import Account
from ...database.models import Account
logger = logging.getLogger(__name__)

View File

@@ -12,10 +12,10 @@ from datetime import datetime, timedelta
from curl_cffi import requests as cffi_requests
from ..config.settings import get_settings
from ..database.session import get_db
from ..database import crud
from ..database.models import Account
from ...config.settings import get_settings
from ...database.session import get_db
from ...database import crud
from ...database.models import Account
logger = logging.getLogger(__name__)

View File

@@ -15,7 +15,7 @@ from datetime import datetime
from curl_cffi import requests as cffi_requests
from .oauth import OAuthManager, OAuthStart
from .openai.oauth import OAuthManager, OAuthStart
from .http_client import OpenAIHTTPClient, HTTPClientError
from ..services import EmailServiceFactory, BaseEmailService, EmailServiceType
from ..database import crud

View File

@@ -0,0 +1,3 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# @Time : 2026/3/18 19:54

View File

@@ -10,9 +10,9 @@ from datetime import datetime
from curl_cffi import requests as cffi_requests
from curl_cffi import CurlMime
from ..database.session import get_db
from ..database.models import Account
from ..config.settings import get_settings
from ...database.session import get_db
from ...database.models import Account
from ...config.settings import get_settings
logger = logging.getLogger(__name__)

View File

@@ -10,8 +10,8 @@ from typing import List, Tuple, Optional
from curl_cffi import requests as cffi_requests
from ..database.session import get_db
from ..database.models import Account
from ...database.session import get_db
from ...database.models import Account
logger = logging.getLogger(__name__)

View File

@@ -9,9 +9,9 @@ from datetime import datetime
from curl_cffi import requests as cffi_requests
from ..database.session import get_db
from ..database.models import Account
from ..config.settings import get_settings
from ...database.session import get_db
from ...database.models import Account
from ...config.settings import get_settings
logger = logging.getLogger(__name__)

View File

@@ -12,13 +12,13 @@ from .base import (
)
from .tempmail import TempmailService
from .outlook import OutlookService
from .custom_domain import CustomDomainEmailService
from .moe_mail import MeoMailEmailService
from .temp_mail import TempMailService
# 注册服务
EmailServiceFactory.register(EmailServiceType.TEMPMAIL, TempmailService)
EmailServiceFactory.register(EmailServiceType.OUTLOOK, OutlookService)
EmailServiceFactory.register(EmailServiceType.CUSTOM_DOMAIN, CustomDomainEmailService)
EmailServiceFactory.register(EmailServiceType.CUSTOM_DOMAIN, MeoMailEmailService)
EmailServiceFactory.register(EmailServiceType.TEMP_MAIL, TempMailService)
# 导出 Outlook 模块的额外内容
@@ -48,7 +48,7 @@ __all__ = [
# 服务类
'TempmailService',
'OutlookService',
'CustomDomainEmailService',
'MeoMailEmailService',
'TempMailService',
# Outlook 模块
'ProviderType',

View File

@@ -18,7 +18,7 @@ from ..config.constants import OTP_CODE_PATTERN
logger = logging.getLogger(__name__)
class CustomDomainEmailService(BaseEmailService):
class MeoMailEmailService(BaseEmailService):
"""
自定义域名邮箱服务
基于 REST API 接口

View File

@@ -7,11 +7,11 @@ from fastapi import APIRouter
from .accounts import router as accounts_router
from .registration import router as registration_router
from .settings import router as settings_router
from .email_services import router as email_services_router
from .email import router as email_services_router
from .payment import router as payment_router
from .cpa_services import router as cpa_services_router
from .sub2api_services import router as sub2api_services_router
from .tm_services import router as tm_services_router
from .upload.cpa_services import router as cpa_services_router
from .upload.sub2api_services import router as sub2api_services_router
from .upload.tm_services import router as tm_services_router
api_router = APIRouter()

View File

@@ -14,13 +14,13 @@ from ...database.models import Account
from ...database import crud
from ...config.settings import get_settings
from .accounts import resolve_account_ids
from ...core.payment import (
from ...core.openai.payment import (
generate_plus_link,
generate_team_link,
open_url_incognito,
check_subscription_status,
)
from ...core.team_manager import (
from ...core.upload.team_manager_upload import (
upload_to_team_manager,
batch_upload_to_team_manager,
)

View File

@@ -3,14 +3,15 @@
"""
import logging
from typing import Optional, Dict, Any, List
import os
from typing import Optional
from fastapi import APIRouter, HTTPException
from pydantic import BaseModel
from ...config.settings import get_settings, update_settings
from ...database import crud
from ...database.session import get_db
from ...config.settings import get_settings, update_settings
logger = logging.getLogger(__name__)
router = APIRouter()
@@ -289,6 +290,7 @@ async def backup_database():
raise HTTPException(status_code=404, detail="数据库文件不存在")
# 创建备份目录
from fastapi import Path
backup_dir = Path(db_path).parent / "backups"
backup_dir.mkdir(exist_ok=True)

View File

@@ -0,0 +1,2 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

View File

@@ -6,9 +6,9 @@ from typing import List, Optional
from fastapi import APIRouter, HTTPException
from pydantic import BaseModel
from ...database import crud
from ...database.session import get_db
from ...core.cpa_upload import test_cpa_connection
from ....database import crud
from ....database.session import get_db
from ....core.upload.cpa_upload import test_cpa_connection
router = APIRouter()

View File

@@ -6,9 +6,9 @@ from typing import List, Optional
from fastapi import APIRouter, HTTPException
from pydantic import BaseModel
from ...database import crud
from ...database.session import get_db
from ...core.sub2api_upload import test_sub2api_connection, batch_upload_to_sub2api
from ....database import crud
from ....database.session import get_db
from ....core.upload.sub2api_upload import test_sub2api_connection, batch_upload_to_sub2api
router = APIRouter()

View File

@@ -6,9 +6,9 @@ from typing import List, Optional
from fastapi import APIRouter, HTTPException
from pydantic import BaseModel
from ...database import crud
from ...database.session import get_db
from ...core.team_manager import test_team_manager_connection
from ....database import crud
from ....database.session import get_db
from ....core.upload.team_manager_upload import test_team_manager_connection
router = APIRouter()

11
uv.lock generated
View File

@@ -164,6 +164,7 @@ dependencies = [
{ name = "curl-cffi" },
{ name = "fastapi" },
{ name = "jinja2" },
{ name = "path" },
{ name = "psycopg", extra = ["binary"] },
{ name = "pydantic" },
{ name = "pydantic-settings" },
@@ -194,6 +195,7 @@ requires-dist = [
{ name = "fastapi", specifier = ">=0.100.0" },
{ name = "httpx", marker = "extra == 'dev'", specifier = ">=0.24.0" },
{ name = "jinja2", specifier = ">=3.1.0" },
{ name = "path", specifier = ">=17.1.1" },
{ name = "playwright", marker = "extra == 'payment'", specifier = ">=1.40.0" },
{ name = "psycopg", extras = ["binary"], specifier = ">=3.1.18" },
{ name = "pydantic", specifier = ">=2.0.0" },
@@ -502,6 +504,15 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/b7/b9/c538f279a4e237a006a2c98387d081e9eb060d203d8ed34467cc0f0b9b53/packaging-26.0-py3-none-any.whl", hash = "sha256:b36f1fef9334a5588b4166f8bcd26a14e521f2b55e6b9de3aaa80d3ff7a37529", size = 74366, upload-time = "2026-01-21T20:50:37.788Z" },
]
[[package]]
name = "path"
version = "17.1.1"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/dd/52/a7bdd5ef8488977d354b7915d1e75009bebbd04f73eff14e52372d5e9435/path-17.1.1.tar.gz", hash = "sha256:2dfcbfec8b4d960f3469c52acf133113c2a8bf12ac7b98d629fa91af87248d42", size = 50528, upload-time = "2025-07-27T20:40:23.79Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/7c/50/11c9ee1ede64b45d687fd36eb8768dafc57afc78b4d83396920cfd69ed30/path-17.1.1-py3-none-any.whl", hash = "sha256:ec7e136df29172e5030dd07e037d55f676bdb29d15bfa09b80da29d07d3b9303", size = 23936, upload-time = "2025-07-27T20:40:22.453Z" },
]
[[package]]
name = "pefile"
version = "2024.8.26"