1、后台菜单增加定时任务和银行交易
2、增加后台配置银行账户和请求网址
This commit is contained in:
@@ -43,6 +43,8 @@ from app.models.home_material import HomeMaterialAsset, HomeMaterialCategory, Ho
|
||||
from app.models.contact_request import ContactRequest
|
||||
from app.models.invoice import Invoice, InvoiceOrder
|
||||
from app.models.invoice_header import InvoiceHeader
|
||||
from app.models.bank_account import BankAccount
|
||||
from app.models.scheduled_task import ScheduledTask
|
||||
from app.models.private_portrait import PrivatePortraitProject, PrivatePortraitValidateSession, PrivatePortraitAssetGroup, PrivatePortraitAsset
|
||||
from app.models.api import ApiKey, ApiGenerationTask, ApiUsageLog, ApiKeyUpscaleConfig, ApiUpscaleLink
|
||||
|
||||
@@ -68,4 +70,5 @@ __all__ = [
|
||||
"ApiKey", "ApiGenerationTask", "ApiUsageLog", "ApiKeyUpscaleConfig", "ApiUpscaleLink",
|
||||
"ApiModelPricing",
|
||||
"Invoice", "InvoiceOrder", "InvoiceHeader",
|
||||
"BankAccount", "ScheduledTask",
|
||||
]
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
"""银行账户信息模型。"""
|
||||
|
||||
from sqlalchemy import Boolean, String
|
||||
from sqlalchemy.orm import Mapped, mapped_column
|
||||
|
||||
from app.models.base import Base, TimestampMixin
|
||||
|
||||
|
||||
class BankAccount(Base, TimestampMixin):
|
||||
__tablename__ = "bank_accounts"
|
||||
|
||||
id: Mapped[str] = mapped_column(String(32), primary_key=True)
|
||||
account_name: Mapped[str] = mapped_column(String(128), nullable=False, comment="账户名称")
|
||||
bank_name: Mapped[str] = mapped_column(String(128), nullable=False, comment="开户银行")
|
||||
account_no: Mapped[str] = mapped_column(String(64), unique=True, nullable=False, comment="银行账号")
|
||||
is_active: Mapped[bool] = mapped_column(Boolean, default=True, comment="是否启用")
|
||||
is_default: Mapped[bool] = mapped_column(Boolean, default=False, comment="是否默认账户")
|
||||
description: Mapped[str | None] = mapped_column(String(256), nullable=True, comment="备注")
|
||||
@@ -0,0 +1,23 @@
|
||||
"""定时任务配置模型。"""
|
||||
|
||||
from sqlalchemy import Boolean, String, Text
|
||||
from sqlalchemy.orm import Mapped, mapped_column
|
||||
|
||||
from app.models.base import Base, TimestampMixin
|
||||
|
||||
|
||||
class ScheduledTask(Base, TimestampMixin):
|
||||
__tablename__ = "scheduled_tasks"
|
||||
|
||||
id: Mapped[str] = mapped_column(String(32), primary_key=True)
|
||||
name: Mapped[str] = mapped_column(String(128), nullable=False, comment="任务名称")
|
||||
task_type: Mapped[str] = mapped_column(String(32), nullable=False, comment="类型: external_api / internal_method")
|
||||
schedule: Mapped[str] = mapped_column(String(128), nullable=False, comment="Cron 表达式或间隔秒数")
|
||||
config: Mapped[str | None] = mapped_column(Text, nullable=True, comment="任务配置 JSON")
|
||||
# external_api config: {url, method, headers, payload}
|
||||
# internal_method config: {module, function, args}
|
||||
is_active: Mapped[bool] = mapped_column(Boolean, default=True, comment="是否启用")
|
||||
last_run_at: Mapped[str | None] = mapped_column(String(64), nullable=True, comment="最后执行时间 ISO")
|
||||
last_status: Mapped[str | None] = mapped_column(String(16), nullable=True, comment="最后执行状态: success / error")
|
||||
last_error: Mapped[str | None] = mapped_column(Text, nullable=True, comment="最后执行错误信息")
|
||||
created_by: Mapped[str | None] = mapped_column(String(32), nullable=True, comment="创建者管理员 ID")
|
||||
Reference in New Issue
Block a user