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", "aiosqlite>=0.19.0",
"psycopg[binary]>=3.1.18", "psycopg[binary]>=3.1.18",
"websockets>=16.0", "websockets>=16.0",
"path>=17.1.1",
] ]
[project.optional-dependencies] [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 ( from .http_client import (
OpenAIHTTPClient, OpenAIHTTPClient,
HTTPClient, 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 curl_cffi import requests as cffi_requests
from ..config.constants import ( from ...config.constants import (
OAUTH_CLIENT_ID, OAUTH_CLIENT_ID,
OAUTH_AUTH_URL, OAUTH_AUTH_URL,
OAUTH_TOKEN_URL, OAUTH_TOKEN_URL,

View File

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

View File

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

View File

@@ -15,7 +15,7 @@ from datetime import datetime
from curl_cffi import requests as cffi_requests 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 .http_client import OpenAIHTTPClient, HTTPClientError
from ..services import EmailServiceFactory, BaseEmailService, EmailServiceType from ..services import EmailServiceFactory, BaseEmailService, EmailServiceType
from ..database import crud 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 requests as cffi_requests
from curl_cffi import CurlMime from curl_cffi import CurlMime
from ..database.session import get_db from ...database.session import get_db
from ..database.models import Account from ...database.models import Account
from ..config.settings import get_settings from ...config.settings import get_settings
logger = logging.getLogger(__name__) 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 curl_cffi import requests as cffi_requests
from ..database.session import get_db from ...database.session import get_db
from ..database.models import Account from ...database.models import Account
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)

View File

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

View File

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

View File

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

View File

@@ -7,11 +7,11 @@ from fastapi import APIRouter
from .accounts import router as accounts_router from .accounts import router as accounts_router
from .registration import router as registration_router from .registration import router as registration_router
from .settings import router as settings_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 .payment import router as payment_router
from .cpa_services import router as cpa_services_router from .upload.cpa_services import router as cpa_services_router
from .sub2api_services import router as sub2api_services_router from .upload.sub2api_services import router as sub2api_services_router
from .tm_services import router as tm_services_router from .upload.tm_services import router as tm_services_router
api_router = APIRouter() api_router = APIRouter()

View File

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

View File

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

View File

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

View File

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

11
uv.lock generated
View File

@@ -164,6 +164,7 @@ dependencies = [
{ name = "curl-cffi" }, { name = "curl-cffi" },
{ name = "fastapi" }, { name = "fastapi" },
{ name = "jinja2" }, { name = "jinja2" },
{ name = "path" },
{ name = "psycopg", extra = ["binary"] }, { name = "psycopg", extra = ["binary"] },
{ name = "pydantic" }, { name = "pydantic" },
{ name = "pydantic-settings" }, { name = "pydantic-settings" },
@@ -194,6 +195,7 @@ requires-dist = [
{ name = "fastapi", specifier = ">=0.100.0" }, { name = "fastapi", specifier = ">=0.100.0" },
{ name = "httpx", marker = "extra == 'dev'", specifier = ">=0.24.0" }, { name = "httpx", marker = "extra == 'dev'", specifier = ">=0.24.0" },
{ name = "jinja2", specifier = ">=3.1.0" }, { name = "jinja2", specifier = ">=3.1.0" },
{ name = "path", specifier = ">=17.1.1" },
{ name = "playwright", marker = "extra == 'payment'", specifier = ">=1.40.0" }, { name = "playwright", marker = "extra == 'payment'", specifier = ">=1.40.0" },
{ name = "psycopg", extras = ["binary"], specifier = ">=3.1.18" }, { name = "psycopg", extras = ["binary"], specifier = ">=3.1.18" },
{ name = "pydantic", specifier = ">=2.0.0" }, { 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" }, { 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]] [[package]]
name = "pefile" name = "pefile"
version = "2024.8.26" version = "2024.8.26"