"""出入库单现场免登录 token""" from __future__ import annotations import secrets from app.core.config import settings from app.models.db_models import DbInboundOutbound def ensure_site_access_token(row: DbInboundOutbound) -> str: token = (row.site_access_token or "").strip() if not token: token = secrets.token_urlsafe(32)[:64] row.site_access_token = token return token def build_site_inventory_url(token: str) -> str: origin = (settings.PUBLIC_WEB_ORIGIN or "").rstrip("/") return f"{origin}/#/public/db/inventory/{token}" def build_site_transport_url(token: str) -> str: """运输计划现场链接(pl_transport_site_link,与地磅出入库单解耦)。""" origin = (settings.PUBLIC_WEB_ORIGIN or "").rstrip("/") return f"{origin}/#/public/pl/site/{token}" def site_link_fields_for_inventory( inventory: DbInboundOutbound | None, ) -> tuple[str | None, str | None]: if not inventory: return None, None token = (inventory.site_access_token or "").strip() if not token: return None, None return token, build_site_inventory_url(token)