f7a3ef2e0b
- 新增内部端点 POST /internal/launch-confirm-sample(X-Internal-Secret 鉴权): pricebot 对没见过文案的启动确认窗用 LLM 兜底放行后,把样本(host 包 / 弹窗树 / LLM plan / 设备 locale 机型)回写落 launch_confirm_sample 表,供研发人工沉淀回 pricebot 规则 yaml - 配套: model LaunchConfirmSample + schema + repo(都上报不去重) + alembic 迁移 launch_confirm_sample_table(down_revision=cps_wx_user) + main 注册 router + models/__init__ 登记 - docs: 后端技术实现.md 加 §6.5 pricebot 回写内部端点说明 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
36 lines
1.2 KiB
Python
36 lines
1.2 KiB
Python
"""启动确认窗兜底样本落库:单条 insert(都上报、不去重,by design)。"""
|
|
from __future__ import annotations
|
|
|
|
import logging
|
|
from typing import Optional
|
|
|
|
from sqlalchemy.orm import Session
|
|
|
|
from app.models.launch_confirm_sample import LaunchConfirmSample
|
|
from app.schemas.launch_confirm_sample import LaunchConfirmSampleIn
|
|
|
|
logger = logging.getLogger("shagua.launch_confirm")
|
|
|
|
|
|
def _trunc(s: Optional[str], n: int) -> Optional[str]:
|
|
"""截断到列长上限(PG varchar 超长会报错;繁体长标题等需要)。空 → None。"""
|
|
return s[:n] if s else None
|
|
|
|
|
|
def insert_sample(db: Session, payload: LaunchConfirmSampleIn) -> int:
|
|
"""写入一条样本,返回新行 id。"""
|
|
row = LaunchConfirmSample(
|
|
trace_id=_trunc(payload.trace_id, 64),
|
|
device_id=_trunc(payload.device_id, 64),
|
|
host_package=_trunc(payload.host_package, 128),
|
|
target_app=_trunc(payload.target_app, 128),
|
|
system_locale=_trunc(payload.system_locale, 32),
|
|
exec_success=bool(payload.exec_success),
|
|
dialog_title=_trunc(payload.dialog_title, 256),
|
|
payload=payload.payload,
|
|
)
|
|
db.add(row)
|
|
db.commit()
|
|
db.refresh(row)
|
|
return row.id
|