What the documents look like
Refund-only dispute handling turns on proof of shipment and receipt plus the value of the goods. In many cases no returned parcel reaches a warehouse, so the usual return-inspection record does not exist. For cross-border work, after-sales supervisors, platform appeal specialists and warehouse quality staff search across four document families: refund-only applications, shipment evidence, proof of receipt, and appeal materials. The brief gives an update frequency of per order and daily; this page does not derive batch synchronization, full synchronization, real-time processing or transaction-triggered mechanisms from that frequency.
The multilingual requirement shapes the model layer. The system needs at least one language model and one index model to operate, and only one speech-recognition model takes effect. AI Proxy is a required dependency from V4.17.0. Both the App and any Admin service that reuses App/Service configuration must set AIPROXY_API_ENDPOINT and a non-empty AIPROXY_API_TOKEN; a missing value in either one fails startup validation. Older OpenAI environment variables and per-model custom request addresses do not replace these two settings.
Retrieval association with the same vector model stays inside the library. A relevance score is not a category, entity or permission filter, and retrieval is not authorization. Forms collect values; business verification, approval, database writes and external synchronization need their own downstream implementation.
Constraints at the model connections step
The model layer must be reachable before any multilingual search runs, and the document set must be searchable in the languages it actually contains. The official documents state that AI Proxy provides load balancing, model logs and dashboards, and that model channels are configured under the administrator model provider pages. A channel carries a channel name, a protocol type, the models available on that channel, model mapping, a BaseUrl and an API key. Model ID is the value of the model field in the request body and is globally unique; model name is the display name. Model mapping lets a FastGPT model ID resolve to a different upstream model, as in the documented example where gpt-4o-test maps to gpt-4o.
Model status probing applies to enabled system models only. Disabled models are not probed and produce no history. A probe retries up to three times after the first failure, so a single round makes at most four attempts; one success marks the model valid, and only four failed attempts produce an abnormal result. Three health states exist: normal when the test succeeds with latency at or below 30s, high latency when it succeeds above 30s, and abnormal when four consecutive requests error. The probe interval accepts whole minutes from 5 to 60. Alert webhooks fire on edge changes only, one message per model, with model_status_error on the transition into red and model_status_recovered on the transition back.
A hypothetical paper exercise sample, clearly labelled as not a real record and not actually tested: the material text reads, "On 12 March 2026, Store A handed order 8801, a black coat, to the carrier for dispatch; the receipt record shows delivery to the recipient on 15 March; on 20 March the buyer applied for a refund only, on the ground that the goods were not received." The draft sentence under review reads, "The receipt record has proved that the buyer received the goods, and this refund-only application should be rejected." The draft sentence merges a receipt fact with a rejection decision. Proof of receipt is not a platform appeal conclusion. The material text supplies a subject, an object, a status and a date range; the draft sentence goes beyond them.
Configuration and implementation checks
The table below ties each row to the document families and the model connection step. Values marked as hypothetical starting points are chosen for this paper exercise only; they are not official defaults and were not tested.
| Configuration item | Hypothetical starting point for this exercise | Reason and comparison method |
|---|---|---|
AIPROXY_API_ENDPOINT | Hypothetically set to http://aiproxy:3000 | The document requires the root address without /v1; compare against a form that appends /v1. |
AIPROXY_API_TOKEN | Hypothetically set to a non-empty administrator token | The document requires a non-empty value consistent with the server; compare against an empty value. |
| Language model | Hypothetically enable one language model | The document requires at least one language model for the system to work. |
| Index model | Hypothetically enable one index model | The document requires at least one index model for the system to work. |
| Model probe interval | Hypothetically set to 10 minutes | The document accepts whole minutes from 5 to 60; compare against a value below 5. |
| Model mapping | Hypothetically map a FastGPT model ID to an upstream model | The document shows a mapping entry where the FastGPT model ID resolves to a different upstream model; compare against an entry that leaves the upstream model identical. |
Channel priority is a value from 1 to 100, and a larger value is selected more readily. Disabling a channel stops it from serving models. These are documented settings; this page does not assign a priority value for the exercise.
Three common errors
- Writing
AIPROXY_API_ENDPOINTas a full request address that includes/v1. The input is an address with a path suffix; the comparison is against the documented requirement for a root address; the observable result is whether startup validation and the subsequent call behave as the document describes. The document does not name a specific error code for this case, so the exact failure output remains unknown until observed. - Using an application API key as
AIPROXY_API_TOKEN. The input is an application credential; the comparison is against the documented requirement for a non-empty administrator token consistent with the server; the observable result is the authentication outcome. The document does not state a deterministic message for this substitution. - Treating a receipt record as the basis for rejecting a refund-only application. The input is the draft sentence above; the comparison is against the material text; the observable result is whether the draft sentence stays within the facts the material text supplies. The receipt fact and the rejection decision are different facts, and the draft sentence is not supported by the material text.
How to verify the setup
- Take the hypothetical material text and the draft sentence above. Compare whether the draft sentence exceeds the scope of the material text. The condition is met when the receipt fact and the rejection decision are distinguished and the draft sentence is marked as pending verification. No claim is made that any platform action followed.
- Take the hypothetical root-address form of
AIPROXY_API_ENDPOINTand compare it with a form that appends/v1. Observe whether startup validation passes. The condition is met when the root-address form passes. The document does not name a specific error code for the other form, so that outcome stays unknown until observed. - Take the hypothetical probe interval of 10 minutes and compare it with the documented 5 to 60 whole-minute range. Observe whether the configuration is accepted. The condition is met when the value falls inside the range and is accepted. For an empty-result branch, a paper input of
[]can be used to check downstream design; no claim is made that a search over hypothetical rules necessarily returns an empty list.
Two further checks belong to the same step. First, confirm that at least one language model and one index model are enabled, since the document states the system needs both to operate. Second, confirm that any library association stays within the same vector model; cross-model libraries cannot be associated together, so verify the identifier and exclude non-matching entries rather than running a cross-model search to compare recall. Record what is observed and leave missing evidence as missing. A pending request is not approval, an offered option is not execution, and an unsigned termination is not a completed termination.