fix: use message reaction for query acknowledgement

This commit is contained in:
ar51
2026-09-04 15:46:18 +08:00
parent c7c5c3259c
commit 24469372fb
7 changed files with 151 additions and 49 deletions

View File

@@ -14,7 +14,7 @@ Expected:
- model parses successfully;
- quantity is accepted;
- the bot immediately replies with `👀` after the valid trigger is accepted and before the API query starts;
- the bot immediately adds the Feishu `OnIt` (typing) reaction to the original message after the valid trigger is accepted and before the API query starts;
- the controlled script uses the macOS system trust store and keeps TLS verification enabled;
- no temporary TLS-bypass parameter is required for the normal happy path;
- API script runs;
@@ -72,7 +72,7 @@ is not required.
Expected:
- the bot immediately replies with `👀` after the continuation and active-context gates pass;
- the bot immediately adds the Feishu `OnIt` (typing) reaction to the original message after the continuation and active-context gates pass;
- the bot reuses the active model and quantity only for that same sender and chat;
- the bot queries candidate positions 5-8 in the unchanged rule order;
- the original model and candidate positions 1-4 are not queried or displayed again;
@@ -97,7 +97,7 @@ eRob110H160I-FHM-18ET[V6]
Expected:
- bot stays silent;
- no acknowledgement emoji is sent;
- no acknowledgement reaction is added;
- no API call is made;
- no record is appended.

View File

@@ -36,6 +36,7 @@
- [ ] If that domain-and-permission record is absent, outbound access remains blocked; a general AR51 functional-test approval is not sufficient by itself.
- [ ] Only after approval is recorded, network can reach the AR836 delivery prediction API.
- [ ] Feishu bot bridge or local entry is configured.
- [ ] The Feishu app has `im:message.reactions:write_only` so the bot can add the `OnIt` received reaction to valid query messages.
- [ ] Logs are stored outside Git or in an approved non-secret location.
## 5. Acceptance
@@ -47,6 +48,7 @@
- [ ] The initial response queries no more than four recommended candidates in addition to the original-model baseline; same-sender, same-chat continuation queries the next four without duplication.
- [ ] Candidate continuation without matching active context stays silent; a bridge restart or six-hour expiry requires the complete model and quantity again.
- [ ] Output includes the fixed internal-candidate disclaimer.
- [ ] A real valid query shows the `OnIt` typing reaction below the original message rather than creating a reply bubble or reply thread.
- [ ] Records append to `records/delivery_prediction_records.md`.
- [ ] A direct AR51 task in Mac Studio Codex can modify a test project file or perform the intended Git update without being blocked by the Feishu read-only rule.
- [ ] A Feishu request to modify a rule or other project file is refused and leaves all project files unchanged.

View File

@@ -8,7 +8,7 @@
4. Confirm a separate trusted AR51 approval record explicitly covers `api.zeroerr-agent.com`, the AM516 use case, and API-key use.
5. If that domain-and-permission record is absent, stop before any outbound request; a general functional-test approval is insufficient by itself.
6. Use model recommendation rules to generate the complete ordered internal candidate pool.
7. Immediately reply with `👀` to acknowledge the valid request.
7. Immediately add the Feishu `OnIt` (typing) reaction to the original message to acknowledge the valid request.
8. Run the controlled script for the original model baseline and only the first four candidate models.
9. Convert each numeric natural-day lead time to workdays with the approved quotient-and-remainder rule, then count those workdays from the local query date through the configured China statutory workday calendar. The query date itself is excluded.
10. Summarize the current batch, including the original natural days, converted workdays, and calculated delivery date; state how many candidates remain and invite the same sender to ask naturally for more when candidates remain.
@@ -19,7 +19,7 @@
1. Accept a clear request for more candidates only from the same sender in the same Feishu chat as the active initial query. Equivalent expressions such as `还有吗`、`有没有别的`、`再推荐几个`、`继续`、`下一批` or `more candidates` are valid; no exact phrase is required.
2. The in-memory continuation context expires after six hours and is cleared by a bridge restart. If no matching context exists, stay silent and require a new complete model-and-quantity query.
3. Immediately reply with `👀`, then query the next four unqueried rule candidates; do not re-query the original baseline or any earlier candidate.
3. Immediately add the Feishu `OnIt` (typing) reaction to the original message, then query the next four unqueried rule candidates; do not re-query the original baseline or any earlier candidate.
4. Missing or unsupported candidates still consume their rule-order positions and remain under `不可用候选`.
5. Append one record block for the models queried in this continuation batch, then state whether more candidates remain.
6. A new complete model-and-quantity request replaces the earlier continuation context for that sender and chat.

View File

@@ -45,10 +45,10 @@ Stop if:
- Enter the query workflow only when one message contains exactly one complete,
rule-valid eRob model and exactly one positive quantity.
- After a valid initial query or valid same-conversation candidate continuation
passes this gate, immediately reply with `👀` before starting the API query so
the sender knows the request was received.
passes this gate, immediately add the Feishu `OnIt` (typing) reaction to the
original message before starting the API query so the sender knows it was received.
- If the model or quantity is missing, invalid, multiple, or ambiguous, stay
silent: send no acknowledgement or other Feishu reply, make no API request,
silent: add no reaction, send no Feishu reply, make no API request,
and append no record.
- An @mention by itself does not bypass this content gate.
- After a valid message passes the gate, API or runtime failures may still return