75 lines
1.5 KiB
Python
75 lines
1.5 KiB
Python
from typing import Any
|
||
|
||
from pydantic import BaseModel, Field
|
||
|
||
|
||
class RewriteRequest(BaseModel):
|
||
source_text: str = Field(..., min_length=20)
|
||
title_hint: str = ""
|
||
writing_style: str = "科普解读"
|
||
tone: str = "专业、可信、可读性强"
|
||
audience: str = "公众号读者"
|
||
keep_points: str = ""
|
||
avoid_words: str = ""
|
||
|
||
|
||
class RewriteResponse(BaseModel):
|
||
title: str
|
||
summary: str
|
||
body_markdown: str
|
||
mode: str = "ai"
|
||
quality_notes: list[str] = []
|
||
trace: dict[str, Any] | None = Field(
|
||
default=None,
|
||
description="改写链路追踪:请求 ID、耗时、模型、质检与降级原因,便于监测与回溯",
|
||
)
|
||
|
||
|
||
class WechatPublishRequest(BaseModel):
|
||
title: str
|
||
summary: str = ""
|
||
body_markdown: str
|
||
author: str = ""
|
||
thumb_media_id: str = ""
|
||
|
||
|
||
class IMPublishRequest(BaseModel):
|
||
title: str
|
||
body_markdown: str
|
||
|
||
|
||
class PublishResponse(BaseModel):
|
||
ok: bool
|
||
detail: str
|
||
data: dict | None = None
|
||
|
||
|
||
class AuthCredentialRequest(BaseModel):
|
||
username: str
|
||
password: str
|
||
remember_me: bool = False
|
||
|
||
|
||
class ChangePasswordRequest(BaseModel):
|
||
old_password: str
|
||
new_password: str
|
||
|
||
|
||
class ForgotPasswordResetRequest(BaseModel):
|
||
username: str
|
||
reset_key: str
|
||
new_password: str
|
||
|
||
|
||
class WechatBindingRequest(BaseModel):
|
||
account_name: str = ""
|
||
appid: str
|
||
secret: str
|
||
author: str = ""
|
||
thumb_media_id: str = ""
|
||
thumb_image_path: str = ""
|
||
|
||
|
||
class WechatSwitchRequest(BaseModel):
|
||
account_id: int
|