Files
inquiry_robot/inquiry-agent/agent/redis_coord/keys.py

72 lines
2.6 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""
Redis 键名拼装。
本文件职责:所有 Redis key 必须带 REDIS_KEY_PREFIX,避免与现网 ytd:prod: 冲突。
说明:Redis 的「db1」是连接 URL 里的数字库号(/1),不是库名;
可读业务名靠前缀 inquiry_robot:(见 prompt/14、13)。
禁止:写入 checkpoint / 六态 / Worker 全局单例锁键。
"""
from __future__ import annotations
def normalize_prefix(prefix: str) -> str:
"""
规范化前缀:去掉首尾空白,确保以冒号结尾便于拼接。
例:inquiry_robot → inquiry_robot:
"""
p = (prefix or "").strip()
if not p:
return "inquiry_robot:"
return p if p.endswith(":") else f"{p}:"
def join_key(prefix: str, *parts: str) -> str:
"""
拼完整 key:{prefix}{part1}:{part2}:…
参数 parts 不得包含前缀本身;空段丢弃。
"""
base = normalize_prefix(prefix)
segs = [str(p).strip(":") for p in parts if p is not None and str(p).strip() != ""]
if not segs:
return base.rstrip(":")
return base + ":".join(segs)
# 约定后缀(骨架);正式业务可扩展,勿改成无前缀的裸键
STREAM_LLM = "stream:llm"
STREAM_RECOGNITION = "stream:recognition"
STREAM_PDF = "stream:pdf"
STREAM_ARCHIVE = "stream:archive"
STREAM_WAKE = "stream:wake"
IDEMPOTENCY = "idem"
RATE_LIMIT = "ratelimit"
TOKEN_WECOM = "token:wecom"
TOKEN_WSHOTO = "token:wshoto"
TOKEN_COPY_TICKET = "token:copy_ticket"
TOKEN_JSAPI = "token:jsapi"
# 微盛查询游标(本前缀下的 last_seq,不是现网官方 SDK 消费游标)
WSHOTO_LAST_SEQ = "wshoto:last_seq"
WSHOTO_ROOMS = "wshoto:rooms"
WSHOTO_ROOM_TICKET = "wshoto:room_ticket"
# Worker 出完报价文件后写给 HTTP:短协调,不当六态
QUOTE_FILE_READY = "quote_file_ready"
# 产品刚报价、等选「在TMS上改 / 不用TMS」:短协调,不当六态
PENDING_PRODUCT_QUOTE = "pending_product_quote"
# 陆运核对卡已出、等确定查价:短协调,不当六态、不当工单号
PENDING_LAND_CONFIRM = "pending_land_confirm"
# 空运/海运/陆运当前书签:HTTP 与 Worker 共用,不当六态
FLOW_BOOKMARK = "flow_bookmark"
# 私聊图片波次:HTTP 与 Worker 必须共用,不当六态
IMAGE_WAVE = "image_wave"
IMAGE_WAVE_TEXT = "image_wave_text"
# 私聊附件等材料波次:HTTP 发卡/H5 与 Worker 识别共用,不当六态
ATTACH_WAVE = "attach_wave"
# 附件字节短交接:HTTP 收文件、Worker 识别读,TTL 与等待票一致,不当六态
ATTACH_BLOB = "attach_blob"
# 空运群同一句:BOT 与存档补听去重,不当六态
AIR_INBOUND_MSG = "air_inbound_msg"
AIR_INBOUND_TEXT = "air_inbound_text"