What the documents look like
Near-expiry markdown work follows the shelf-stock lifecycle rather than piece-by-piece weighing and sorting. The materials a store keeps are near-expiry lists, markdown approvals, damage reports and promotional price tags. Data comes from POS stock age, store inspection, ERP inventory and quality-check records, refreshed by day or by shift. When these materials feed product-information and selection questions, the model reads batch, date range, approval status and tag content, then answers questions about selection and record checking. Status fields set the boundary of any answer: an unapproved markdown, an unsigned termination and an unconfirmed quotation are not executed facts.
For this page the relevant industry facts are the lifecycle framing, the status-driven boundary and the mixed document set. Each one shapes how a model connection is prepared and how a draft sentence is judged.
Constraints at the model connections step
Model access depends on AI Proxy. Both the App service and an Admin service that reuses App/Service configuration must set AIPROXY_API_ENDPOINT and a non-empty AIPROXY_API_TOKEN; missing either causes startup validation to fail. AIPROXY_API_ENDPOINT holds the AI Proxy service root address and does not append /v1. AIPROXY_API_TOKEN holds a non-empty administrator token consistent with the server side; an application API key does not replace it. The system needs at least one language model and one index model to work normally. Model capabilities are checked against the input the application actually needs, with multimodal, tool-calling and thinking settings verified separately. Application parameters are set in the application or node configuration; a same-named field on a compatible chat interface is not assumed to override orchestration. A thinking budget is a reasoning budget and does not serve as a reference token ceiling.
Hypothetical paper sample: a store's near-expiry list dated 10 March 2026 records "Fresh milk batch A, shelf life to 12 March, quantity 12 cartons, status is pending markdown approval." A markdown approval form of the same date records "Batch A markdown application submitted, approver has not signed." A draft sentence to be judged is "Batch A markdown is approved and can be sold at the new price tag." The source materials carry subject, object, status and validity range, while the approval signature fact is absent, so the draft sentence does not hold.
Configuration and implementation checks
The table below centres on the sample and lists documented settings or implementation checks. The hypothetical starting values are for this paper review only and are not official defaults.
| Configuration item | Hypothetical starting value for this review | Reason and comparison method |
|---|---|---|
| AIPROXYAPIENDPOINT | Assume http://aiproxy:3000 | Documented root address without /v1; compare against the documented format |
| AIPROXYAPITOKEN | Assume a non-empty administrator token | Documented as consistent with the server side and non-empty; compare against an empty value |
| Language model | Assume one tested language model is enabled | Documented minimum of one language model; compare against a disabled state |
| Index model | Assume one tested index model is enabled | Documented minimum of one index model; compare against a disabled state |
| Model capability check | Assume each field the sample needs is checked item by item | Documented as checked against required input; compare against a missing capability |
| Application parameter location | Assume parameters are set in the application or node configuration | Documented location; compare against a same-named chat-interface field |
Three common errors
- Treating a pending markdown approval as approved. In the sample the approver has not signed, while the draft sentence says "approved." The input is the approval-form status field, the comparison object is the signature fact, and the observable result is that the missing signature is recorded as unsupported.
- Leaving
AIPROXY_API_TOKENempty or substituting an application API key. The input is the environment variable value, the comparison object is the documented non-empty administrator token, and the observable result is startup validation failure or a rejected call. - Treating a thinking budget as a reference token ceiling. The input is the model thinking configuration field, the comparison object is the documented distinction between reasoning budget and reference ceiling, and the observable result is a configuration item mapped to the wrong limit.
How to verify the setup
- Check the sample draft sentence: the input is the near-expiry list and markdown approval form text, the comparison is the approval signature field against the draft wording "approved," and the sentence is supported only when the signature fact exists and the status field agrees. With the signature absent, record it as unsupported.
- Check model access: the input is the configured values of
AIPROXY_API_ENDPOINTandAIPROXY_API_TOKEN, the comparison is the documented root-address format and non-empty token, and the access condition holds only when both are satisfied and model testing passes. Without testing, record it as pending verification. - Check application parameters: the input is the parameter settings in the application or node, the comparison is the documented parameter location, and the condition holds only when parameters are set in the application or node configuration and distinguished from a same-named chat-interface field. When unset, record it as a gap.
Retrieval and similarity scores do not perform authorization or entity isolation, and a shared vector model requirement for one knowledge base does not extend to unrelated external systems. Any system error or automatic business action not stated in the source is not asserted here.