Files
shanxia2.0/backend/app/services/db_inventory_site_token.py
T
2026-06-23 23:30:57 +08:00

38 lines
1.1 KiB
Python

"""出入库单现场免登录 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)