refactor(schema): 重构数据库模型和 schema,清理废弃表

This commit is contained in:
qzl
2026-04-07 18:43:34 +08:00
parent a65d041436
commit b18a205bf3
19 changed files with 101 additions and 426 deletions
-4
View File
@@ -208,15 +208,11 @@ class HistoryAgentOutput(BaseModel):
status: Literal["success", "failed"] | None = None
sign_level: Literal["上上签", "中上签", "中下签", "下下签"] | None = None
summary: str | None = None
conclusion: list[str] = Field(default_factory=list)
focus_points: list[str] = Field(default_factory=list)
advice: list[str] = Field(default_factory=list)
keywords: list[str] = Field(default_factory=list)
answer: str | None = None
key_points: list[str] = Field(default_factory=list)
result_type: str | None = None
suggested_actions: list[str] = Field(default_factory=list)
divination_derived: DerivedDivinationData | None = None
+1 -36
View File
@@ -109,11 +109,7 @@ def _extract_worker_agent_output(
try:
agent_output = AgentOutput.model_validate(agent_output_data)
except Exception:
normalized_payload = _normalize_agent_output_payload(agent_output_data)
try:
agent_output = AgentOutput.model_validate(normalized_payload)
except Exception:
return None
return None
if not agent_output:
return None
@@ -123,37 +119,6 @@ def _extract_worker_agent_output(
return payload or None
def _normalize_agent_output_payload(agent_output_data: Any) -> dict[str, Any] | None:
if not isinstance(agent_output_data, dict):
return None
normalized = dict(agent_output_data)
derived = normalized.get("divination_derived")
if isinstance(derived, dict):
normalized["divination_derived"] = _normalize_divination_derived(derived)
return normalized
def _normalize_divination_derived(value: Any) -> Any:
if isinstance(value, dict):
result: dict[str, Any] = {}
for key, item in value.items():
normalized_key = _snake_to_camel(key)
result[normalized_key] = _normalize_divination_derived(item)
return result
if isinstance(value, list):
return [_normalize_divination_derived(item) for item in value]
return value
def _snake_to_camel(value: str) -> str:
if "_" not in value:
return value
parts = value.split("_")
if not parts:
return value
return parts[0] + "".join(part[:1].upper() + part[1:] for part in parts[1:])
def mime_to_suffix(mime_type: str) -> str:
mapping = {
"image/png": "png",
+1 -1
View File
@@ -8,7 +8,7 @@ from sqlalchemy.ext.asyncio import AsyncSession
from models.points_ledger import PointsLedger
from models.user_points import UserPoints
from schemas.shared.points import ApplyPointsChangeCommand
from schemas.domain.points import ApplyPointsChangeCommand
class PointsRepository:
+1 -1
View File
@@ -8,7 +8,7 @@ from uuid import UUID, uuid4
from core.http.errors import ApiProblemError, problem_payload
from schemas.domain.points import ConsumeLedgerMetadata, PointsChargeSnapshot
from schemas.enums import PointsBizType, PointsChangeType, PointsOperatorType
from schemas.shared.points import ApplyPointsChangeCommand
from schemas.domain.points import ApplyPointsChangeCommand
from v1.points.repository import PointsRepository
RUN_POINTS_COST = 20