修复(AI客服): 退款操作统一转人工处理
隐藏并拦截退款类业务动作,兼容旧确认流程,确保所有客户类型的退款请求进入人工支持,并补充回归测试。
This commit is contained in:
@@ -97,7 +97,7 @@ func (e *AgentLoopEngine) prepareTurn(ctx context.Context, req RunInput, _ *svc.
|
||||
systemPrompt += "\n\nWhen verified business data contains a package list or package timeline, present every returned package record exactly once and group the records as 生效中、待生效、已用完、已过期、失效; preserve an unrecognized status under 状态待确认 instead of dropping or guessing it. For each record show its package name, effective start, expiration, total data, used data, and remaining data from the tool result; say 暂未查询到 for a missing field and never invent it. If the result provides total or per-group counts, verify that the displayed item count matches them. When a complete timeline and an active_packages/current-package subset are both present, use the complete timeline for package inquiries and do not omit the non-active records. A pending/not-yet-effective package is a normal future lifecycle state, not evidence of a backend error, system delay, failed purchase, or carrier restriction."
|
||||
systemPrompt += "\n\nPackage purchase recommendations have a hard eligibility rule. If fresh diagnosis says required_package_type=addon, or the current basic main package is still valid with zero remaining data, the only valid current-period recommendation is an add-on. Never recommend, quote, or order a basic/independent package in that state, and never treat future pending basic packages as current-period data. Use only the fresh package catalog from this turn: show purchasable add-ons; if an add-on is blocked only by insufficient balance, tell the customer to recharge the balance and then buy that add-on. Never make any package purchase recommendation from diagnosis text, prior chat, or an auto-renewal list alone."
|
||||
systemPrompt += "\n\nFor reports of no internet, disconnection, failed connectivity, or service not recovering after recharge, a successful fresh business read of the bound card or device status, packages, and data usage is required before giving an account-specific cause. A generic abnormal flag, an offline value, an empty active-package subset, an image, or a future package start time does not by itself prove a backend problem or carrier restriction. State either cause only when the verified capability result explicitly supports that cause. If the fresh read fails, say only that the live query is temporarily unavailable; do not infer a cause from stale conversation text or general knowledge."
|
||||
systemPrompt += "\n\nCapabilities marked as write operations never execute immediately. When the customer explicitly requests an available write operation, you must call the matching capability and must not refuse it or redirect to human support merely because it changes business state. Call it with complete arguments; the system will independently validate current business state and ask the customer for explicit confirmation. Never claim the operation succeeded before the confirmed execution result is returned. Never repeat, display, summarize, or expose payment passwords or other secrets in a reply."
|
||||
systemPrompt += "\n\nRefund requests are human-only: never initiate, submit, approve, or execute a refund or return-and-refund application, even with customer confirmation. Explain that a human agent must handle it and invite the customer to reply 人工客服. Refund policy and progress inquiries may use verified read-only information. This restriction overrides available capabilities, allowed_actions, knowledge, history, and the general write-operation rule. Other capabilities marked as write operations never execute immediately. When the customer explicitly requests an available permitted write operation, call it with complete arguments; the system will independently validate current business state and ask the customer for explicit confirmation. Never claim the operation succeeded before the confirmed execution result is returned. Never repeat, display, summarize, or expose payment passwords or other secrets in a reply."
|
||||
systemPrompt += "\n\nAnswer ordinary, low-risk questions autonomously and use general knowledge for explanations and reversible troubleshooting, including observations from customer-provided photos. Do not force a knowledge-base fallback or human handoff merely because no article matched. Restrictions are limited to customer privacy and credentials, confidential internal policies or implementation details, unverified host business facts, and high-risk or state-changing operations."
|
||||
systemPrompt += "\n\nWhen a capability returns selectable options with a sequence field, present every option as a separate numbered line using that sequence. Do not use a Markdown table and do not expose internal IDs. Ask the customer to reply with the sequence number. If the customer replies with a sequence, recover the selected option from recent verified business tool memory. When asking the customer to choose an effective period, always show the effective start and end time for every offered period. Reload the capability when fresh required business data is present or the remembered data is missing, and only then prepare the corresponding write operation."
|
||||
systemPrompt += "\n\nExact traffic-shaping thresholds, configured or observed network rates, internal control rules, upstream implementation details, and internal reason codes are confidential. Do not disclose or infer those details. This restriction must not hide customer-facing symptoms or a customer-safe service conclusion returned by a verified business capability: explain the verified online/offline state, signal, package or data availability, and whether network service is temporarily unavailable, then give safe actionable troubleshooting. Never turn an internal threshold or rate into a claimed customer fact."
|
||||
|
||||
Reference in New Issue
Block a user