What the documents look like
Copy drafting for checkout promotions draws on four document families: promotional price tags, membership points rules, the checkout daily report, and exception refund slips. The underlying data arrives from the POS system, the membership CRM, the payment platform, and the price tag system. Price and membership benefit statements are the factual core of any draft sentence. Short-shelf-life inventory does not enter this document set, which distinguishes this category from convenience-store fresh-food ordering. The materials update daily or per shift, so a draft should be checked against the written material for the current shift or the current day. Errors in this category produce price complaints, cash shortfalls or overages, and membership benefit disputes, so model connection and configuration must keep every draft sentence traceable to the wording of a source document.
Constraints at the model connections step
From V4.17.0, AI Proxy is a required dependency. Both the App service and any Admin service that reuses App/Service configuration must set AIPROXY_API_ENDPOINT and a non-empty AIPROXY_API_TOKEN; a missing item causes startup validation to fail. Older OpenAI environment variables and single-model custom request addresses do not replace these two settings. A model ID is the value of the model field in the request body and is globally unique; a model name is a display label and can be customized. Model mapping translates the model FastGPT requests into the upstream model actually called. Model probing covers only currently enabled system models, retries at most three times after a first failure, and declares an exception only when all four attempts fail.
Hypothetical paper exercise: on 10 March 2026, the day-shift promotional price tag for one store states in writing, "Brand A pure milk, 1-liter pack, promotional price 9.9 yuan, promotion period 10 March to 12 March." The membership points rules for the same day state, "Members purchasing promotional goods earn 1 point per 1 yuan actually paid." The checkout daily report for the same day states, "Day shift, Brand A pure milk 1-liter pack, 12 units sold." One draft sentence under review reads, "Brand A pure milk 1-liter pack, promotional price 9.9 yuan, members earn 1 point per 1 yuan actually paid, promotion period 10 March to 12 March." The subject, object, state, and validity range all come from the written materials; no real customer or legal identity number is involved.
Configuration and implementation checks
The table below concerns only this exercise's copy checking. Where a number appears, it is a starting value for this hypothetical exercise, with the reason for choosing it and the value it is compared against.
| Configuration item | Hypothetical starting value | Reason and comparison method |
|---|---|---|
AIPROXY_API_ENDPOINT | Assume http://aiproxy:3000 | Official example format, no /v1 appended; compare against the startup validation requirement that the value is non-empty |
AIPROXY_API_TOKEN | Assume a non-empty administrator token | Official requirement that it match the server configuration and is not empty; compare with the App-side configured value |
| Model ID and model mapping | Assume model ID gpt-4o-test mapped to gpt-4o | Official mapping example; compare the request body model field with the upstream actual model |
| Model type and capability | Assume one language model and one index model are enabled | Official requirement that the system has at least one of each; compare the input the application needs against the capability fields |
| Model probe interval | Assume 30 minutes | Official support for integers from 5 to 60 minutes; compare against the saved probe configuration value |
| Alert Webhook address | Assume one HTTP address | Official support for HTTP/HTTPS with a test action; compare against receiver connectivity |
Three common errors
- Writing
AIPROXY_API_ENDPOINTas a full request address ending in/v1. Check input: the environment variable value. Comparison object: the official examplehttp://aiproxy:3000. Observable result: if the value ends in/v1, it does not meet the stated format. - Using an application API key in place of
AIPROXY_API_TOKEN. Check input: the token field value. Comparison object: the administrator token configured on the server side. Observable result: if the two values differ or the field is empty, it does not meet the stated requirement. - Writing a promotion period into the draft sentence that the source material does not state. Check input: the draft sentence and the promotional price tag text. Comparison object: the date range for the same subject, same object, same field. Observable result: if the draft date range falls outside 10 March to 12 March, the wording is unsupported.
How to verify the setup
- Input the hypothetical promotional price tag text and the draft sentence "Brand A pure milk 1-liter pack, promotional price 9.9 yuan, promotion period 10 March to 12 March." The comparison object is the price and date range for the same subject, same object, same field. If both price and dates match the source text, the condition is met; if the dates fall outside the source range, record the wording as unsupported and keep the evidence gap open.
- Input the hypothetical membership points rules text and the draft sentence "Members earn 1 point per 1 yuan actually paid." The comparison object is the points calculation field. If the draft sentence matches the source wording on that field, the condition is met; if the draft is rewritten as "points are earned on the original price of the goods," the wording does not match the source.
- Input the hypothetical checkout daily report text and a handover request "please generate a sales copy from the daily report quantity." The comparison object is the sold-unit count recorded in the daily report. If the request cites 12 units and this matches the source, the condition is met; if the request cites another quantity, record it as pending verification and do not supply a substitute number.
These checks are paper reasoning only; no test, deployment, or approval was actually carried out. The 48-hour probe chart, stability percentage, and Webhook alert are documented features and are not claimed here as triggered. Retrieval and relevance scores do not carry permission or entity-isolation duties, and missing evidence stays missing.