fix(T+): 补齐指导成本与读取服务保护
补充业务详情指导成本入口、来源版本和历史封存保护,接入月份锁并完善权限复核。 同步接入读取服务运行状态到页面,补充前端控制、回归测试和服务端只读连接授权校验。 定向隔离测试:89 项通过,1 条既有 Starlette 弃用警告。
This commit is contained in:
1 parent
68e70fd6e2
commit
b8920c0d28
17 files changed
+375
-47
No files matched your search
@@ -89,6 +89,7 @@ class Settings(BaseSettings):
|
||||
t_plus_user: str = ""
|
||||
t_plus_password: str = Field(default="", repr=False)
|
||||
t_plus_allow_dev_sa: bool = False
|
||||
t_plus_allow_admin_account: bool = False
|
||||
t_plus_connection_file: str = ""
|
||||
# 部署前必须指定已在 SQL Server 2008 R2 实测的驱动,不自动选择最新版。
|
||||
t_plus_odbc_driver: str = ""
|
||||
@@ -102,6 +103,7 @@ class Settings(BaseSettings):
|
||||
t_plus_schedule_weekday: int = Field(default=0, ge=0, le=6)
|
||||
t_plus_schedule_time: str = Field(default="02:00", pattern=r"^([01][0-9]|2[0-3]):[0-5][0-9]$")
|
||||
t_plus_stop_file: str = ""
|
||||
t_plus_supervisor_health_url: str = "http://127.0.0.1:8000/api/health"
|
||||
|
||||
@field_validator("app_secret_key")
|
||||
@classmethod
|
||||
|
||||
@@ -56,8 +56,10 @@ def resolve_tplus_settings(settings: Settings) -> Settings:
|
||||
)
|
||||
resolved = settings.model_copy(update=values)
|
||||
allow_dev_sa = settings.app_env.strip().casefold() == "dev" and settings.t_plus_allow_dev_sa
|
||||
if resolved.t_plus_user.strip().casefold() == "sa" and not allow_dev_sa:
|
||||
raise RuntimeError("应用必须使用 T+ 专用只读账号,不能使用 sa")
|
||||
if resolved.t_plus_user.strip().casefold() == "sa" and not (
|
||||
allow_dev_sa or settings.t_plus_allow_admin_account
|
||||
):
|
||||
raise RuntimeError("T+ 管理员账号未获授权,请检查连接配置")
|
||||
if not resolved.t_plus_database or not resolved.t_plus_user or not resolved.t_plus_odbc_driver:
|
||||
raise RuntimeError("T+ 只读连接缺少数据库、账号或已验证的 ODBC 驱动")
|
||||
return resolved
|
||||
|
||||
Reference in new issue
Block a user