让成交卡等报价文件真正发出后再出现,并收紧 PDF 顶部留白,避免抬头被裁或空一截。
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
"""
|
||||
H5 补问 / 附件上传通道。
|
||||
H5 补问 / 附件上传 / 复制工单号通道。
|
||||
|
||||
本文件职责:挂载 /inquiry-form;用 clarification token 绑定身份(URL 禁止 userid)。
|
||||
本文件职责:挂载 /inquiry-form;用 token 绑定身份或工单号(URL 禁止 userid)。
|
||||
禁止:从 URL 读 userid;禁止在本包改六态或直连 TMS;禁止同步 invoke Graph。
|
||||
"""
|
||||
|
||||
@@ -10,10 +10,13 @@ from __future__ import annotations
|
||||
import logging
|
||||
from typing import Any, Optional
|
||||
|
||||
from fastapi import APIRouter, HTTPException
|
||||
from fastapi import APIRouter, HTTPException, Query
|
||||
from fastapi.responses import HTMLResponse
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
from agent.channel.clarification import validate_token
|
||||
from agent.channel.h5.copy_page import expired_copy_page, render_copy_page
|
||||
from agent.channel.h5.copy_store import lookup_copy_token
|
||||
from agent.handlers.card_action import handle_card_action
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
@@ -34,6 +37,36 @@ def h5_ping() -> dict[str, str]:
|
||||
return {"status": "ok", "channel": "h5"}
|
||||
|
||||
|
||||
@router.get("/copy/{token}", response_class=HTMLResponse)
|
||||
def h5_copy_ticket(token: str) -> HTMLResponse:
|
||||
"""
|
||||
复制工单号页:token 换工单号,页面写入剪贴板。
|
||||
|
||||
请求线程只读 token,不进 Graph、不发企微消息。
|
||||
"""
|
||||
wo = lookup_copy_token(token)
|
||||
if not wo:
|
||||
return HTMLResponse(expired_copy_page(), status_code=410)
|
||||
return HTMLResponse(render_copy_page(wo))
|
||||
|
||||
|
||||
@router.get("/jsapi-signature")
|
||||
def h5_jsapi_signature(
|
||||
url: str = Query(default=""),
|
||||
kind: str = Query(default="corp"),
|
||||
) -> dict[str, Any]:
|
||||
"""
|
||||
给复制页 ww.register 签名。失败给空对象,页面改走浏览器剪贴板。
|
||||
"""
|
||||
from agent.channel.wecom.jsapi import build_jsapi_signature
|
||||
|
||||
try:
|
||||
return build_jsapi_signature(url=url, kind=kind)
|
||||
except Exception as exc: # noqa: BLE001
|
||||
logger.warning("jsapi 签名失败 kind=%s err=%s", kind, exc)
|
||||
raise HTTPException(status_code=503, detail="jsapi_unavailable") from exc
|
||||
|
||||
|
||||
@router.get("/{token}")
|
||||
def h5_open(token: str) -> dict[str, Any]:
|
||||
"""
|
||||
|
||||
Reference in New Issue
Block a user