Files
LWLT-AIBOT/.project-docs/30-worklog/tasks/20260831-check-list-import-attachments-c4a91f2b.md
T

3.3 KiB

Task: Check list import unrelated attachment behavior

Identity

  • Task ID: 20260831-check-list-import-attachments-c4a91f2b
  • Mode: Feature
  • Branch: codex/20260831-check-list-import-attachments-c4a91f2b-check-list-import-attachments-c4a91f2b
  • Worktree: /Users/inmanx/Documents/lwltAPI-worktrees/20260831-check-list-import-attachments-c4a91f2b
  • Base commit: 416d7e8869
  • Owner: codex
  • Status: Ready for integration

Scope

  • Read the active passenger-list import registry, Skill contracts, attachment normalizer, task-state transitions, AgentBus reply flow, platform attachment UI, and focused tests.
  • Determine whether an unrelated attachment produces a user-visible prompt in the manual platform and AgentBus/WeChat paths.
  • Do not change product behavior, access a live runtime, deploy, restart, or read secrets.

Intent And Constraints

  • This is a read-only behavior inspection against current committed main source at base commit 416d7e8869bb5ea789f7a0c265d87e4c63a294e5.
  • Treat “unrelated attachment” as both an unsupported file type/count/metadata case and a nominal .xls/.xlsx whose workbook content does not match the roster template.
  • Report channel differences explicitly; do not infer live deployment state from repository source.

Outcome

  • The manual platform visibly rejects a non-.xls/.xlsx selection and displays the task service's rejection message when an Excel workbook fails roster normalization. The task remains awaiting_attachment so a corrected workbook can be sent.
  • AgentBus/WeChat immediately returns a failed result for multiple attachments, unsupported extensions, missing attachment metadata, and other pre-ingestion InputAttachmentError cases; the original roster task is not advanced.
  • A valid-extension Excel workbook with unrelated/invalid roster content is normalized and rejected correctly, and the task message/event is updated to 名单附件校验未通过【<code>】,请按模板修正后重新发送。 while remaining awaiting_attachment.
  • Current AgentBus delivery logic does not immediately return that workbook-rejection message: processInboundTask ignores result.input_attachment, and durable finalization excludes awaiting_attachment. In the non-durable path, awaiting_attachment is also non-final, so the specific rejection is not emitted as the immediate result. This is a channel reply gap, not a validation gap.

Verification

  • Static inspection: agent设计规范/business-adaptation-registry.md, agent设计规范/skills/lwlt-lifecycle/, control-plane/src/input-attachment.ts, control-plane/src/passenger-roster-workbook.ts, control-plane/src/task-service.ts, control-plane/src/agentbus.ts, and LianSyn-platform/app.js.
  • Passed: bundled Node.js --test LianSyn-platform/app-roster-attachment.test.mjs (4/4).
  • Attempted focused TypeScript tests, but the isolated worktree has no node_modules and neither the bundled runtime nor workspace provides tsx; test loading failed before any test executed. No business test failed.

Follow-ups

  • If requested, add an AgentBus/WeChat immediate result for rejected roster workbooks while preserving the original task in awaiting_attachment, plus durable and legacy listener coverage.

Promotion Candidates

  • None recorded.