From ede1d47c4710b4d8d6976bdb37baaf5c316ccd07 Mon Sep 17 00:00:00 2001 From: andy Date: Tue, 15 Sep 2026 11:34:59 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=BC=E5=85=A5=E9=97=AE=E9=A2=98=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../20260915-dispatch-readiness-01a0858b.md | 27 +++ ...20260915-roster-header-aliases-01a0858b.md | 26 +++ .../app-dispatch-recovery.test.mjs | 143 +++++++++++++ LianSyn-platform/app.js | 32 ++- agent设计规范/business-adaptation-registry.md | 4 + .../test-fixtures/lwlt-lifecycle/release-gate.md | 4 +- .../dispatch-readiness-01a0858b/README.md | 12 ++ .../dispatch-readiness-01a0858b/summary.json | 35 ++++ .../roster-header-aliases-01a0858b/README.md | 13 ++ archive/releases/2026-09-15/README.md | 5 + .../dispatch-readiness-01a0858b/README.md | 3 + .../ltjt-order-assistant-0.5.183.zip | Bin 0 -> 237079 bytes .../release-manifest-0.5.183.json | 69 +++++++ .../ltjt-order-assistant/README.md | 8 +- .../ltjt-order-assistant/background.js | 6 + .../ltjt-order-assistant/inpage.js | 87 ++++++-- .../ltjt-order-assistant/manifest.json | 2 +- .../ltjt-order-assistant/team-batch-inpage.js | 2 +- .../src/passenger-roster-workbook.ts | 4 +- control-plane/src/task-service.ts | 85 +++++++- .../test/dispatch-result-recovery.test.ts | 189 ++++++++++++++++++ .../test/passenger-roster-workbook.test.ts | 33 +++ dist/release-manifest.json | 10 +- mappings/lifecycle.mapping.json | 2 +- tools/lifecycle-contract.test.mjs | 14 +- tools/native-list-readiness.test.mjs | 164 +++++++++++++++ 26 files changed, 934 insertions(+), 45 deletions(-) create mode 100644 .project-docs/30-worklog/tasks/20260915-dispatch-readiness-01a0858b.md create mode 100644 .project-docs/30-worklog/tasks/20260915-roster-header-aliases-01a0858b.md create mode 100644 LianSyn-platform/app-dispatch-recovery.test.mjs create mode 100644 archive/evidence/2026-09-15/dispatch-readiness-01a0858b/README.md create mode 100644 archive/evidence/2026-09-15/dispatch-readiness-01a0858b/summary.json create mode 100644 archive/evidence/2026-09-15/roster-header-aliases-01a0858b/README.md create mode 100644 archive/releases/2026-09-15/README.md create mode 100644 archive/releases/2026-09-15/dispatch-readiness-01a0858b/README.md create mode 100644 archive/releases/2026-09-15/dispatch-readiness-01a0858b/ltjt-order-assistant-0.5.183.zip create mode 100644 archive/releases/2026-09-15/dispatch-readiness-01a0858b/release-manifest-0.5.183.json create mode 100644 control-plane/test/dispatch-result-recovery.test.ts create mode 100644 tools/native-list-readiness.test.mjs diff --git a/.project-docs/30-worklog/tasks/20260915-dispatch-readiness-01a0858b.md b/.project-docs/30-worklog/tasks/20260915-dispatch-readiness-01a0858b.md new file mode 100644 index 0000000..3eb2d01 --- /dev/null +++ b/.project-docs/30-worklog/tasks/20260915-dispatch-readiness-01a0858b.md @@ -0,0 +1,27 @@ +# ERP list readiness and late dispatch results + +## Scope and gate +- Feature task; main thread only, no subagents. Branch `main`, sole worktree `/Users/andy/IdeaProjects/LWLT-AIBOT`, base `0282c30a2aa66435a193b96b17c0022420d881b3`. +- Existing `.idea/` is unrelated and preserved. Untracked release ZIP 0.5.183 is the known previous delivery and will be preserved byte-for-byte if archived. Overlap: Clear. No other worktree or overlapping source changes. +- User asks to fix the diagnosed list-readiness and dispatch-result discrepancy. Local source/tests/release work only; no ERP access/write, task replay, deployment, restart, extension reload or external sending. + +## Evidence and plan +- User-supplied records prove the same execution was accepted near the platform's four-second acknowledgement timeout, then stopped at `erp_resolution` with `native_list_search_not_ready`. Platform retained dispatch uncertainty until maintenance expiry. Exact missing page condition and cause of acknowledgement delay were not recorded. +- Reacquire the current main-frame document while waiting for the expected list page; preserve complete-page/native-loader/search-button prerequisites and native search request verification. Add value-free readiness diagnostics. Do not retry business writes. +- Allow authenticated same-task/execution/connection late results to resolve only dispatch-origin uncertainty when explicit read-only resolution failure proves no write. Preserve completed/cancelled/post-write uncertainty guards, including old timed-out dispatch tasks. Prevent provisional dispatch timeouts from replacing already-observed plugin progress. +- Read stored plugin results while dispatch-origin uncertainty is pending; do not invoke ERP reconciliation or execute/re-dispatch tasks. Validate delay, missing/stale/wrong pages, outcome ordering, evidence conflicts and owner/execution boundaries. +- Synchronize extension version, platform minimum, mapping, release ZIP/manifest and local verification evidence. Run required repository/type/control-plane/legacy/build checks. Production acceptance remains separate. + +## Results +- Native list readiness now reacquires the current main-frame document at each sample, waits for the same expected path plus complete document/native loader/enabled attached search button, and reports value-free missing conditions, elapsed time, sample count and document replacements. Search consumers use the returned current document; replacement during native Ajax search stops before using stale results. Existing exact-request/HTTP completion verification remains. Worker output distinguishes readiness from not-found/login suggestions. +- Platform acceptance timeout is 10 seconds (previously four). Existing pending dispatch tasks read only stored plugin results; late progress does not reset them to executable/running. Expired dispatch tasks offer manual “读取插件已保存结果” instead of invoking the plugin's incompatible post-write reconciliation operation. Genuine post-write uncertainty retains its manual boundary. API rejection preserves platform uncertainty instead of replacing it with an unaccepted local result. +- Service ingestion may close only dispatch-origin uncertainty (including maintenance-expired dispatch records) using the same task/execution/original connection and complete `erp_readonly_resolution` page proof with no root/page/preflight write or save evidence. Other terminal states, bare flags, contradictory receipts/requests, changed connection/execution/actor and real post-write uncertainty remain blocked. A provisional timeout cannot overwrite already-observed plugin progress. Accepted late failure carries reconciled/no-write facts; an exact duplicate is idempotent and changed terminal results remain immutable. No execution/replay path is added. +- Regression evidence: both same-path Document replacement scenarios fail against the pre-change committed adapter with `native_list_search_not_ready` and pass against the current adapter. 32 new tests cover native readiness/result handling, five-second acceptance, true timeout without redispatch, local-only result sync, original-context constraints, transaction commit/rollback, outcome ordering and duplicate ingestion. +- Full checks: control plane 239/239, legacy 402/402 (641 tests total), TypeScript check and build PASS. Legacy HTTP boundary tests required local loopback-listening permission; the first sandboxed run was blocked by EPERM for those two tests, then the full rerun passed. Clean isolated-source repository checks 10/10 PASS. Original worktree remains 8/10 only because of preserved pre-existing `.idea/`, `.DS_Store` and ignored historical log residue. +- Extension 0.5.184, platform minimum, lifecycle mapping, version assertions, active gate, README, versioned ZIP and release manifest synchronized. All 20 packaged files match source byte-for-byte. Original 0.5.183 ZIP and manifest preserved unchanged in the dated release archive. No input/Skill/DOCX/parser/database migration changes. +- Main-thread read-only final review: PASS. No subagent review claimed. Tests ran from a byte-verified source copy excluding non-example `.env` before reads; no ERP access, task mutation/replay, deployment, service restart, extension reload, external message, commit or push occurred. +- [Immutable validation summary](../../../archive/evidence/2026-09-15/dispatch-readiness-01a0858b/README.md). Production requires updating platform/service and the same installed extension to 0.5.184, retaining its local records; old tasks can sync only if original connection/execution evidence is retained. The exact missing readiness condition in the user's historical run remains unobserved; new diagnostics distinguish it. + +## Promotion candidates +- Preserve the distinction between provisional dispatch uncertainty and witnessed ERP writes. Only correlated explicit read-only failure evidence closes the former; no retry or blanket terminal-state override. Target: canonical execution lifecycle documentation after integration acceptance. +- Document readiness must refer to the current Document identity, not merely a URL retained by an old iframe document. Target: canonical browser-adapter guidance after integration. Current live failure's specific missing condition still requires runtime diagnostics. diff --git a/.project-docs/30-worklog/tasks/20260915-roster-header-aliases-01a0858b.md b/.project-docs/30-worklog/tasks/20260915-roster-header-aliases-01a0858b.md new file mode 100644 index 0000000..8f8d0b2 --- /dev/null +++ b/.project-docs/30-worklog/tasks/20260915-roster-header-aliases-01a0858b.md @@ -0,0 +1,26 @@ +# Passenger roster header aliases and content diagnosis + +## Scope and gate +- Feature task on `main`, sole worktree `/Users/andy/IdeaProjects/LWLT-AIBOT`, base `0282c30a2aa66435a193b96b17c0022420d881b3`. Main thread only. +- Existing dispatch/readiness changes are the completed previous task in this conversation; preserve them. `.idea/` and existing ignored residue are unrelated and preserved. No other worktree or overlapping edits in the roster normalizer/tests. Overlap: Clear. +- User authorizes compatibility for two observed header aliases and read-only validation of the supplied workbook contents. No source workbook edits, ERP import/access, task submission, deployment, restart or external sending. +- Own roster normalizer, roster regression tests and this task record. No canonical memory or extension changes. + +## Evidence and plan +- Supplied XLS matches the reported attachment: 48128 bytes, SHA-256 `c11d17fd13607afc9c8a52bf2716a5e900a3a387137f88ba314e8dcf15e3d76d`. +- Existing local conversion succeeds. Actual normalizer reproduces `roster_workbook_header_not_found`: `Sheet1!H2` is 出生地点 and `K2` is 有效期至. Other ten required fields are recognized, no duplicate semantic headers. +- Add only the two approved exact aliases, preserve semantic uniqueness and fixed canonical output. Validate both aliases and duplicate/conflicting headers with synthetic records. +- Run full local normalization/content inspection on the original file, report remaining content problems without inventing passenger facts. Keep passenger values out of tests, task records and logs. +- Run required repository/type/control-plane/legacy/build checks; record results and any pre-existing check failures. + +## Results +- Normalizer `v1.5.1` accepts exact aliases 出生地点 → 出生地 and 有效期至 → 有效期. All 12 semantic source fields remain required and unique; canonical TSV remains the same 13 columns. Added synthetic equality and canonical/alias duplicate rejection coverage. No content normalization or ERP execution behavior was changed. +- Original workbook passed conversion and complete normalization without editing it: header row 2, data rows 3–22, 20 passengers, unique sequential indices 1–20. All 60 date cells and all canonical text/identifier projections were independently compared with the converted sheet; zero mismatches. Source hash remained unchanged. +- Names, English names, gender, birthplace, passport numbers, issue location, three date fields and remarks are populated for all 20 passengers. Phone is populated for 11; nine blank phones remain blank under existing rules. Merged remarks correctly project to their constituent passenger rows. No imported-field formulas need compatibility; the ordinary age column remains ignored. +- Exactly one leader marker has both name and phone. Both independent and shared-child Program parser routes passed with synthetic local-only lookup context, 20 rows and leader_contact. These calls only validated content/operation contracts; no task, database, ERP or external call was made. No additional content compatibility is needed for this file. +- Focused workbook tests 14/14; full control-plane 241/241 and legacy 402/402 (643 total); type check and build PASS. Repository checks 10/10 in a byte-verified isolated copy excluding secrets and pre-existing `.idea`/residue. Two legacy HTTP tests initially failed only because sandbox loopback listening was denied; approved loopback rerun passed all 402. Original unrelated files preserved. +- Main-thread final read-only review PASS. No subagents, source workbook edits, live ERP import, service restart, deployment, commit or push. This compatibility is server-side; the extension release is unaffected. Existing `npm run dev` process needs a user-authorized restart to load the new source. +- [Read-only evidence summary](../../../archive/evidence/2026-09-15/roster-header-aliases-01a0858b/README.md). + +## Promotion candidates +- Document accepted source aliases in canonical roster guidance after integration if needed; canonical ERP fields remain unchanged. diff --git a/LianSyn-platform/app-dispatch-recovery.test.mjs b/LianSyn-platform/app-dispatch-recovery.test.mjs new file mode 100644 index 0000000..f59b15c --- /dev/null +++ b/LianSyn-platform/app-dispatch-recovery.test.mjs @@ -0,0 +1,143 @@ +import test from 'node:test'; +import assert from 'node:assert/strict'; +import { readFileSync } from 'node:fs'; +import vm from 'node:vm'; + +const source = readFileSync(new URL('./app.js', import.meta.url), 'utf8'); +function functionSource(name) { + const start = source.search(new RegExp(`(?:async )?function ${name}\\(`)); + assert.ok(start >= 0, name); + const rest = source.slice(start); + const next = rest.slice(1).search(/\n(?:async )?function /); + return next < 0 ? rest : rest.slice(0, next + 1); +} +const helperNames = ['isDispatchResultPending', 'isTaskPollable', 'pollTaskResult', 'persistExtensionTaskResult', 'reconcileTaskReceipt', 'handoffTaskToExtension']; + +function fixture({ result, state = 'reconciliation_pending', owner = true, acceptDelay = 0, resultError = false } = {}) { + const task = { task_id: 'task-a', confirmed_at: 'fixture', status: state, handoff_status: state, + result: { execution_id: 'execution-a', execution_phase: 'dispatch_uncertain', stage: 'dispatch', status: 'reconciliation_pending' } }; + const calls = []; + const timers = []; + const context = vm.createContext({ task, calls, Map, Set, Promise, Date, + taskServerStatus: t => t?.status, + findTaskById: () => task, + taskAssignedToCurrentAccount: () => owner, + extensionTaskBelongsToCurrentAccount: () => owner, + isAutomaticTask: () => true, + updateLocalTask: (_id, patch) => Object.assign(task, patch), + upsertLocalTask: t => Object.assign(task, t), + sessionStorage: { setItem() {} }, + apiRequest: async (path, options) => { + calls.push({ type: 'api', path, body: options.body }); + if (path.endsWith('/claim')) return { claimed: true, execution_id: 'execution-a', task: { ...task, status: 'queued' } }; + if (path.endsWith('/result')) { + if (resultError) throw new Error('fixture result rejected'); + const r = options.body.result; + const status = r.status === 'execution_uncertain' ? 'reconciliation_pending' : r.status; + return { task: { ...task, status, result: r, handoff_status: status } }; + } + throw new Error(`unexpected API ${path}`); + }, + sendToExtension: async (type, payload, timeout) => { + calls.push({ type, payload, timeout }); + if (type === 'GET_TASK_RESULT') return { result }; + if (type === 'CREATE_TASK') { + assert.ok(timeout >= 10_000); + if (acceptDelay > timeout) throw new Error('插件桥接未响应'); + return { task_id: 'task-a', execution_id: 'execution-a', accepted: true }; + } + throw new Error(`unexpected bridge action ${type}`); + }, + canReconcileTask: () => true, + pingBridge: async () => true, + renderTaskDetail: () => {}, startPolling: () => {}, syncRemoteTasks: async () => {}, + setTaskState: label => calls.push({ type: 'label', label }), + setTimeout: callback => timers.push(callback), clearTimeout: () => {}, + }); + const timeoutConstant = source.match(/const BRIDGE_TASK_ACCEPT_TIMEOUT_MS = [^;]+;/)?.[0]; + assert.ok(timeoutConstant, 'acceptance timeout must be explicit'); + vm.runInContext(`${timeoutConstant} + const MANUAL_RECONCILIATION_STATUSES = new Set(['reconciliation_pending', 'saved_unverified', 'execution_uncertain', 'uncertain']); + const TERMINAL_TASK_STATUSES = new Set(['completed', 'blocked', 'failed', 'cancelled', 'dry_run']); + const taskReconciliationStates = new Map(); + const browserConnectionId = 'connection-a'; + const REQUIRED_EXTENSION_VERSION = 'fixture'; + let currentTaskId = ''; + const bridgeConnected = true, extensionCompatible = true, erpHostAccessReady = true, erpSessionReady = true, erpAutomationEnabled = true; + const latestBridgeStatus = {}; + ${helperNames.map(functionSource).join('\n')} + queueExtensionTaskResult = persistExtensionTaskResult; + `, context); + return { task, calls, context, run: expr => vm.runInContext(expr, context) }; +} + +test('five-second plugin acceptance no longer triggers the old four-second false timeout', async () => { + const f = fixture({ state: 'confirmed', acceptDelay: 5000 }); + f.task.handoff_status = 'awaiting_handoff'; + await f.run('handoffTaskToExtension(task)'); + assert.equal(f.task.status, 'running'); + assert.equal(f.calls.filter(c => c.type === 'CREATE_TASK').length, 1); + assert.equal(f.calls.filter(c => c.path?.endsWith('/result')).length, 0); +}); + +test('a genuine acceptance timeout records uncertainty and never dispatches twice', async () => { + const f = fixture({ state: 'confirmed', acceptDelay: 15000 }); + f.task.handoff_status = 'awaiting_handoff'; + await assert.rejects(f.run('handoffTaskToExtension(task)'), /插件桥接未响应/); + assert.equal(f.task.status, 'reconciliation_pending'); + await assert.rejects(f.run('handoffTaskToExtension(task)'), /不会再次提交/); + assert.equal(f.calls.filter(c => c.type === 'CREATE_TASK').length, 1); +}); + +test('dispatch uncertainty reads stored late blocked results with no ERP action or new claim', async () => { + const f = fixture({ result: { execution_id: 'execution-a', status: 'blocked', stage: 'erp_resolution', no_erp_write: true } }); + assert.equal(f.run('isTaskPollable(task)'), true); + await f.run('pollTaskResult(task.task_id)'); + assert.equal(f.task.status, 'blocked'); + assert.deepEqual(f.calls.map(c => c.type), ['GET_TASK_RESULT', 'api']); + assert.equal(f.calls[1].body.execution_id, 'execution-a'); + assert.equal(f.calls[1].body.connection_id, 'connection-a'); +}); + +test('late progress does not replace dispatch uncertainty or post another API result', async () => { + for (const status of ['accepted', 'running', 'execution_uncertain']) { + const f = fixture({ result: { execution_id: 'execution-a', status } }); + await f.run('pollTaskResult(task.task_id)'); + assert.equal(f.task.status, 'reconciliation_pending'); + assert.equal(f.calls.length, 1); + } +}); + +test('a rejected stored result preserves the platform uncertainty state', async () => { + const f = fixture({ resultError: true, result: { execution_id: 'another', status: 'blocked', stage: 'erp_resolution' } }); + await f.run('pollTaskResult(task.task_id)'); + assert.equal(f.task.status, 'reconciliation_pending'); + assert.equal(f.task.result.execution_id, 'execution-a'); + assert.equal(f.task.result.execution_phase, 'dispatch_uncertain'); + assert.match(f.task.message, /持久化失败/); +}); + +test('post-write uncertainty keeps its existing manual reconciliation boundary', async () => { + const f = fixture(); f.task.result.execution_phase = 'submitted'; + assert.equal(f.run('isTaskPollable(task)'), false); + await f.run('pollTaskResult(task.task_id)'); + assert.equal(f.calls.length, 0); +}); + +test('maintenance-expired dispatch tasks can manually sync local plugin results without ERP reconciliation', async () => { + const f = fixture({ state: 'failed', result: { execution_id: 'execution-a', status: 'blocked', stage: 'erp_resolution', no_erp_write: true } }); + f.task.result.stage = 'reconciliation_timeout'; + assert.equal(f.run('isTaskPollable(task)'), false, 'expired tasks do not poll forever'); + await f.run('reconcileTaskReceipt(task)'); + assert.equal(f.task.status, 'blocked'); + assert.equal(f.calls.filter(c => c.type === 'GET_TASK_RESULT').length, 1); + assert.ok(!f.calls.some(c => c.type === 'RECONCILE_TASK' || c.type === 'CREATE_TASK' || c.path?.endsWith('/claim'))); +}); + +test('other-account tasks cannot read, persist or dispatch plugin tasks', async () => { + const f = fixture({ owner: false }); + await f.run('pollTaskResult(task.task_id)'); + await f.run("persistExtensionTaskResult(task.task_id, {status: 'blocked'})"); + await assert.rejects(f.run('reconcileTaskReceipt(task)'), /不能执行回查/); + assert.equal(f.calls.length, 0); +}); diff --git a/LianSyn-platform/app.js b/LianSyn-platform/app.js index 6766a7d..153c210 100644 --- a/LianSyn-platform/app.js +++ b/LianSyn-platform/app.js @@ -18,6 +18,7 @@ const OPERATIONS_DASHBOARD_PAGE_SIZE = 20; const DEFAULT_API_TIMEOUT_MS = 15_000; const AUTH_API_TIMEOUT_MS = 10_000; const BRIDGE_PING_TIMEOUT_MS = 10_000; +const BRIDGE_TASK_ACCEPT_TIMEOUT_MS = 10_000; const RESULT_API_TIMEOUT_MS = 20_000; const TASK_DELETE_API_TIMEOUT_MS = 60_000; const LOCAL_TASK_OVERLAY_TTL_MS = 10 * 60_000; @@ -102,7 +103,7 @@ const persistedExtensionResultVersions = new Map(); let taskCreateInProgress = false; const AUTO_HANDOFF_RETRY_MS = 30_000; -const REQUIRED_EXTENSION_VERSION = '0.5.183'; +const REQUIRED_EXTENSION_VERSION = '0.5.184'; const MANUAL_HANDOFF_LABEL = '确认并提交到 ERP 插件'; const RETRY_HANDOFF_LABEL = '继续提交到 ERP 插件'; const RECONCILE_LABEL = '只读回查 ERP 现有结果'; @@ -2667,7 +2668,14 @@ function renderTaskImportantMessage(task) { return panel; } +function isDispatchResultPending(task) { + return ['reconciliation_pending', 'failed'].includes(taskServerStatus(task)) + && task?.result?.execution_phase === 'dispatch_uncertain' + && ['dispatch', 'reconciliation_timeout'].includes(task.result.stage); +} + function isTaskPollable(task) { + if (isDispatchResultPending(task)) return taskServerStatus(task) === 'reconciliation_pending'; const localStatuses = [task?.status, task?.result?.status, task?.handoff_status] .map((value) => String(value || '').toLowerCase()); if (localStatuses.some((status) => MANUAL_RECONCILIATION_STATUSES.has(status))) return false; @@ -3801,7 +3809,7 @@ function renderTaskDetail() { confirmButton.textContent = reconciliationBusy ? '只读回查中…' : canReconcile - ? RECONCILE_LABEL + ? (isDispatchResultPending(task) ? '读取插件已保存结果' : RECONCILE_LABEL) : canResume ? '恢复保存前执行' : canStart @@ -4978,7 +4986,7 @@ async function handoffTaskToExtension(task) { const result = await sendToExtension('CREATE_TASK', { task: claim.task || task, execution_id: executionId - }, 4000); + }, BRIDGE_TASK_ACCEPT_TIMEOUT_MS); if (result?.accepted === false || result?.status === 'duplicate_blocked') { throw new Error(result.message || '插件检测到重复任务,已阻止再次执行。'); } @@ -5531,6 +5539,10 @@ function extensionResultVersion(result) { async function persistExtensionTaskResult(taskId, result) { if (!extensionTaskBelongsToCurrentAccount(taskId)) return false; + const dispatchPending = isDispatchResultPending(findTaskById(taskId)); + // Dispatch uncertainty only needs a stored terminal outcome. Ordinary + // progress must not turn a waiting task back into an executable task. + if (dispatchPending && !['blocked', 'completed'].includes(result.status)) return false; try { const executionId = result.execution_id; if (!executionId) { @@ -5548,9 +5560,7 @@ async function persistExtensionTaskResult(taskId, result) { return true; } catch (error) { updateLocalTask(taskId, { - result, - status: result.status || 'running', - stage: result.stage || '', + ...(dispatchPending ? {} : { result, status: result.status || 'running', stage: result.stage || '' }), message: `插件已返回结果,但服务端持久化失败:${error.message}`, error: error.message }); @@ -5595,7 +5605,7 @@ async function pollTaskResult(taskId, { allowReconciliation = false } = {}) { if (!allowReconciliation && knownTask) { const localStatuses = [knownTask.status, knownTask.result?.status, knownTask.handoff_status] .map((value) => String(value || '').toLowerCase()); - if (localStatuses.some((status) => MANUAL_RECONCILIATION_STATUSES.has(status))) return null; + if (localStatuses.some((status) => MANUAL_RECONCILIATION_STATUSES.has(status)) && !isDispatchResultPending(knownTask)) return null; } const response = await sendToExtension('GET_TASK_RESULT', { task_id: taskId }, 3000); if (response.result) await queueExtensionTaskResult(taskId, response.result); @@ -5610,6 +5620,14 @@ async function reconcileTaskReceipt(task) { taskReconciliationStates.set(task.task_id, 'running'); renderTaskDetail(); try { + if (isDispatchResultPending(task)) { + // The plugin may already be blocked before ERP resolution. Read its + // existing result instead of invoking the post-write reconciliation API. + const result = await pollTaskResult(task.task_id, { allowReconciliation: true }); + await syncRemoteTasks(); + setTaskState(isDispatchResultPending(findTaskById(task.task_id)) ? '尚未取得可确认的插件结果' : '插件结果已同步'); + return result; + } const result = await sendToExtension('RECONCILE_TASK', { task_id: task.task_id }, 60_000); await pollTaskResult(task.task_id, { allowReconciliation: true }); await syncRemoteTasks(); diff --git a/agent设计规范/business-adaptation-registry.md b/agent设计规范/business-adaptation-registry.md index b37768e..826bd57 100644 --- a/agent设计规范/business-adaptation-registry.md +++ b/agent设计规范/business-adaptation-registry.md @@ -30,6 +30,10 @@ 测试对象的 `order_delete` 回收能力仍保留在 Schema、插件和生命周期测试夹具中,但不属于生产运营业务,不登记为用户输入入口。 +## 列表检索与派发结果边界 + +`0.5.184` 起,原生业务列表检索在当前主 iframe 文档上验证页面加载完成、原生搜索函数与可用搜索按钮;旧文档被替换时重新取当前文档,检索中再次切换则停止。失败记录缺失条件与耗时,不能把通用检索失败等同于登录失效。派发回执超时后,只读取插件保存结果;同一任务、执行编号和原连接的明确只读检索未写入阻断可以同步关闭待回查状态,不重新执行。其他真实写入不确定状态保持原核验边界。本项本地回归与上线边界见[当前任务](../.project-docs/30-worklog/tasks/20260915-dispatch-readiness-01a0858b.md)。 + ## 新业务登记要求 新增业务时,先复制 [业务适配包模板](templates/business-adaptation-template.md) 创建一页式入口,再补本表一行。只有三项核心设计都完成,才可以进入 ERP 代码开发;只有真实回执逐条回查后,才可以标为“已真实验证”。 diff --git a/agent设计规范/test-fixtures/lwlt-lifecycle/release-gate.md b/agent设计规范/test-fixtures/lwlt-lifecycle/release-gate.md index 66f9fe3..ae8863b 100644 --- a/agent设计规范/test-fixtures/lwlt-lifecycle/release-gate.md +++ b/agent设计规范/test-fixtures/lwlt-lifecycle/release-gate.md @@ -2,7 +2,7 @@ ## 当前基线 -- Chrome 插件:`0.5.183` +- Chrome 插件:`0.5.184` - Agent Prompt:`ltjt-agent-prompt-v1.8-independent-headcount-categories` - 生命周期契约:`ltjt-lifecycle-v2.9-roster-leader-contact-2026-08` - 五个 Skill:`0.5.126`;运营 DOCX:`0.5.133` @@ -117,3 +117,5 @@ - `0.5.182` 修复 `0.5.181` 日期匹配组件未注入 ERP MAIN world 的回归。上一版测试手动装载依赖,未覆盖真实脚本装载清单;现已改用生产注入列表的全新隔离页面测试,并在依赖缺失时单独报错。原安排唯一性、原日期、ID 和付款/审核门禁保持。服务端已为 `v1.0.12` 时只需升级插件并刷新 ERP 页面,无迁移;真实 ERP 验收待部署方执行。[修复任务](../../../.project-docs/30-worklog/tasks/20260914-arrangement-original-date-year-01a0858b.md)。 - `0.5.183` 修复安排联动检测在定时回调延迟时缺少末次采样的误报:延迟间隔不作为稳定证据,恢复后重新观察,持续变化/延迟及失效表单继续在保存前阻断;增加字段名与采样间隔诊断。用户本次失败的具体触发因素尚未有现场证据;本地回归与发布校验完成后记录于[修复任务](../../../.project-docs/30-worklog/tasks/20260914-arrangement-linkage-stability-01a0858b.md),真实 ERP 验收待部署方执行。 + +- `0.5.184` 对原生列表搜索按当前 iframe 文档等待完整加载、搜索函数和按钮就绪,并保留缺失条件与耗时诊断;平台将接单等待调整为 10 秒。仅派发超时且同任务、同执行编号、原连接返回明确只读检索未写入证据时,服务端接收迟到阻断结果。不会重新派发任务或放宽真实写入不确定状态。待回查派发任务读取插件已保存结果,历史超时任务可手动读取。需同步更新平台、服务端和插件,无数据库迁移;现场加载失败的具体缺失条件仍待新版诊断确认。见[任务记录](../../../.project-docs/30-worklog/tasks/20260915-dispatch-readiness-01a0858b.md)。 diff --git a/archive/evidence/2026-09-15/dispatch-readiness-01a0858b/README.md b/archive/evidence/2026-09-15/dispatch-readiness-01a0858b/README.md new file mode 100644 index 0000000..1708c1a --- /dev/null +++ b/archive/evidence/2026-09-15/dispatch-readiness-01a0858b/README.md @@ -0,0 +1,12 @@ +# Dispatch/readiness fix validation — 2026-09-15 + +Immutable local validation summary for [the feature task](../../../../.project-docs/30-worklog/tasks/20260915-dispatch-readiness-01a0858b.md). This is historical evidence, not the current release or business-rule authority. No private runtime input or customer records are stored here. + +- Base: `0282c30a2aa66435a193b96b17c0022420d881b3`; previous extension 0.5.183, new extension 0.5.184. +- Two actual-adapter tests reproduce same-path Document replacement failures on the committed old source and pass on the new source. Native search remains blocked for incomplete/wrong/inaccessible pages, absent loaders/buttons and changed documents; readiness failures carry explicit no-write page proof. +- 16 native readiness/worker tests, 8 platform dispatch/result tests and 8 control-plane recovery tests, including actual result-ingestion transaction logic with a synthetic database client. Five-second acceptance, timeout/no redispatch, missing or conflicting proof, original actor/connection/execution, duplicate idempotency and opposite arrival orders are covered. +- Full suites: 239 control-plane + 402 legacy = 641 passing tests. Typecheck/build PASS; isolated repository hygiene 10/10 PASS. Initial sandboxed legacy run could not bind loopback for two HTTP tests; permitted loopback rerun passed. Original worktree hygiene 8/10 reflects only pre-existing IDE/OS/historical-log residue, preserved unchanged. +- Extension ZIP has 20 source files and was verified byte-for-byte. Original ZIP 0.5.183 SHA-256: `95e838dbed02f7892eb1ee6c57c32f5fc363bf7887276475209d78c685867433`. +- Main-thread final review PASS; no subagents. No real ERP execution, deployment, restart, extension reload or task retry was performed. Specific historical page condition and acknowledgement-delay cause remain unknown; production validation is pending. + +Machine-readable verification: [summary.json](summary.json). diff --git a/archive/evidence/2026-09-15/dispatch-readiness-01a0858b/summary.json b/archive/evidence/2026-09-15/dispatch-readiness-01a0858b/summary.json new file mode 100644 index 0000000..a7dc6e3 --- /dev/null +++ b/archive/evidence/2026-09-15/dispatch-readiness-01a0858b/summary.json @@ -0,0 +1,35 @@ +{ + "base": "0282c30a2aa66435a193b96b17c0022420d881b3", + "extension": "0.5.184", + "artifact": "dist/ltjt-order-assistant-0.5.184.zip", + "sha256": "f8053808553c6fe1b75161225058447e8fbb13386b36a2048fd3599dfd7d120b", + "source_files": 20, + "zip_matches_source": true, + "previous_release_preserved": true, + "control_plane": { + "pass": 239, + "fail": 0 + }, + "legacy": { + "pass": 402, + "fail": 0 + }, + "check": "PASS", + "build": "PASS", + "isolated_repo": { + "pass": 10, + "fail": 0 + }, + "original_repo": { + "pass": 8, + "fail": 2, + "reason": "pre-existing IDE/OS files and ignored historical log residue" + }, + "review": { + "reviewer": "main thread", + "result": "PASS" + }, + "production_validation": "pending", + "erp_accessed": false, + "redispatched_task": false +} diff --git a/archive/evidence/2026-09-15/roster-header-aliases-01a0858b/README.md b/archive/evidence/2026-09-15/roster-header-aliases-01a0858b/README.md new file mode 100644 index 0000000..fde3224 --- /dev/null +++ b/archive/evidence/2026-09-15/roster-header-aliases-01a0858b/README.md @@ -0,0 +1,13 @@ +# Roster header alias verification — 2026-09-15 + +Immutable evidence for task `20260915-roster-header-aliases-01a0858b`; historical validation only, not the current business-rule source. No passenger values or workbook copies are retained here. + +- Original input: XLS, 48128 bytes, SHA-256 `c11d17fd13607afc9c8a52bf2716a5e900a3a387137f88ba314e8dcf15e3d76d`. +- Before: actual converter succeeds and existing normalizer returns `roster_workbook_header_not_found`; `Sheet1!H2` 出生地点 and `K2` 有效期至 were not mapped. +- After: normalizer v1.5.1 maps only these two new exact aliases; row 2 is the unique complete header. Rows 3–22 normalize to 20 canonical 13-column passenger rows. Source SHA-256 is unchanged after inspection. +- Content comparison: all 60 dates and all selected text/identifier/remark projections match the converted source; zero mismatches. Sequences 1–20 are unique. All required-source columns contain 20 populated values except phone (11 populated, nine intentionally retained blanks). Merged remarks follow their Excel master values; one leader marker has a name and phone. No imported-field formulas require adaptation. +- Independent and shared-child Program parsers both return `agent_parse_passed`, 20 rows and a leader contact using synthetic local-only lookup context. No database/task/ERP execution or external API call. +- Focused tests: 14/14. Full control-plane: 241/241. Full legacy: 402/402 after allowing its two local loopback HTTP tests. TypeScript/build PASS. Repository check: 10/10 in a 2699-file byte-verified source snapshot excluding secret files and unrelated existing residue. +- Synthetic regressions verify unchanged canonical output and rejection of both canonical-plus-alias and duplicate-alias columns. Source edits are restricted to the normalizer and its tests; task/evidence records document this result. No extension, template, schema or deployment changes. + +Acceptance scope: local file conversion, normalization and Program contract validation only. Actual ERP capacity, target selection and save results remain untested and were not requested. diff --git a/archive/releases/2026-09-15/README.md b/archive/releases/2026-09-15/README.md new file mode 100644 index 0000000..53f0d39 --- /dev/null +++ b/archive/releases/2026-09-15/README.md @@ -0,0 +1,5 @@ +# Releases archived on 2026-09-15 + +Historical material, not current business rules or release instructions. + +- [0.5.183 before dispatch/readiness fix](dispatch-readiness-01a0858b/README.md) diff --git a/archive/releases/2026-09-15/dispatch-readiness-01a0858b/README.md b/archive/releases/2026-09-15/dispatch-readiness-01a0858b/README.md new file mode 100644 index 0000000..9e8f4f4 --- /dev/null +++ b/archive/releases/2026-09-15/dispatch-readiness-01a0858b/README.md @@ -0,0 +1,3 @@ +# Historical release before dispatch/readiness fix + +This is a read-only historical copy, not the current release. Extension 0.5.183 and its original release manifest are preserved byte-for-byte. Current deliverables are defined by `dist/release-manifest.json`. diff --git a/archive/releases/2026-09-15/dispatch-readiness-01a0858b/ltjt-order-assistant-0.5.183.zip b/archive/releases/2026-09-15/dispatch-readiness-01a0858b/ltjt-order-assistant-0.5.183.zip new file mode 100644 index 0000000000000000000000000000000000000000..01cae102837adcb12d52477eadf2d3778bbaca14 GIT binary patch literal 237079 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 QNdZHs{3hNM)VK!xADC)7L;wH) literal 0 HcmV?d00001 diff --git a/archive/releases/2026-09-15/dispatch-readiness-01a0858b/release-manifest-0.5.183.json b/archive/releases/2026-09-15/dispatch-readiness-01a0858b/release-manifest-0.5.183.json new file mode 100644 index 0000000..7be3184 --- /dev/null +++ b/archive/releases/2026-09-15/dispatch-readiness-01a0858b/release-manifest-0.5.183.json @@ -0,0 +1,69 @@ +{ + "manifest_version": 1, + "generated_on": "2026-09-14", + "baselines": { + "chrome_extension": "0.5.183", + "skills": "0.5.126", + "business_instruction_docx": "0.5.133", + "agent_prompt": "ltjt-agent-prompt-v1.8-independent-headcount-categories" + }, + "artifacts": [ + { + "kind": "chrome_extension", + "version": "0.5.183", + "path": "dist/ltjt-order-assistant-0.5.183.zip", + "source": "chrome-extension/ltjt-order-assistant", + "sha256": "95e838dbed02f7892eb1ee6c57c32f5fc363bf7887276475209d78c685867433" + }, + { + "kind": "skill", + "name": "lwlt-arrangement", + "version": "0.5.126", + "path": "dist/lwlt-arrangement-0.5.126.skill", + "source": "agent设计规范/skills/lwlt-arrangement", + "sha256": "83770befe3a8e4048eacaeacb567c5139bf8a0b3a49f2b1513c26383422f2a9c" + }, + { + "kind": "skill", + "name": "lwlt-confirmation", + "version": "0.5.126", + "path": "dist/lwlt-confirmation-0.5.126.skill", + "source": "agent设计规范/skills/lwlt-confirmation", + "sha256": "543507ed8b68c183d2df6722061b0e927ebb728de4bf254d15f83311c9264018" + }, + { + "kind": "skill", + "name": "lwlt-lifecycle", + "version": "0.5.126", + "path": "dist/lwlt-lifecycle-0.5.126.skill", + "source": "agent设计规范/skills/lwlt-lifecycle", + "sha256": "fff3879d9a4143c34ae51e091b91411e55382ad3f5d77c99d6202a005b1ddbd9" + }, + { + "kind": "skill", + "name": "lwlt-newbooking", + "version": "0.5.126", + "path": "dist/lwlt-newbooking-0.5.126.skill", + "source": "agent设计规范/skills/lwlt-newbooking", + "sha256": "5eb6a7bf5649a0fcee3fbee488a124e1b1d018a642a3a49ebb5439ccf20ccc2f" + }, + { + "kind": "skill", + "name": "lwlt-updating", + "version": "0.5.126", + "path": "dist/lwlt-updating-0.5.126.skill", + "source": "agent设计规范/skills/lwlt-updating", + "sha256": "3bd665207649cbb8e0e5ebb012c916720201fe160eea62bccdf1c3a1f0275d1d" + }, + { + "kind": "business_instruction_docx", + "version": "0.5.133", + "path": "dist/老挝联泰AI指令表-0.5.133.docx", + "source": "agent设计规范/templates/business-input-templates.md", + "builder": "tools/build_business_instruction_docx.py", + "sha256": "879f1acc3a6a60842e59ae8396f72d39504ea1f3a4110a9f305d94553b38848c", + "source_sha256": "37b6b689c5c6a80683dd1deeff52a90ac8b4bd3ac0380e6b771dcb557c0918f7", + "builder_sha256": "c162884210da22e3b78368749b66f1f177df5e9fc6155f4fd9954bd516d187f1" + } + ] +} diff --git a/chrome-extension/ltjt-order-assistant/README.md b/chrome-extension/ltjt-order-assistant/README.md index 18b226c..481410e 100644 --- a/chrome-extension/ltjt-order-assistant/README.md +++ b/chrome-extension/ltjt-order-assistant/README.md @@ -11,9 +11,13 @@ Chrome Manifest V3 扩展,在用户已登录的 LTJT ERP 页面内执行经过 ## 当前版本 -当前源码版本为 `0.5.183`。版本化 ZIP、文件哈希和 Skill/DOCX 基线见 [`../../dist/release-manifest.json`](../../dist/release-manifest.json)。旧版本实现流水已冻结在 [`../../archive/project-history/2026-08-16/chrome-extension-README.pre-governance.md`](../../archive/project-history/2026-08-16/chrome-extension-README.pre-governance.md)。 +当前源码版本为 `0.5.184`。版本化 ZIP、文件哈希和 Skill/DOCX 基线见 [`../../dist/release-manifest.json`](../../dist/release-manifest.json)。旧版本实现流水已冻结在 [`../../archive/project-history/2026-08-16/chrome-extension-README.pre-governance.md`](../../archive/project-history/2026-08-16/chrome-extension-README.pre-governance.md)。 -0.5.183 当前重点: +0.5.184 当前重点: + +- ERP 列表就绪等待跟随当前 iframe 文档,仍要求加载完成、原生搜索函数与可用按钮,切换期间不在旧文档中搜索;失败回执明确区分页面未就绪,并记录不含业务值的条件与耗时。平台接单等待为 10 秒;明确未写入的迟到检索失败可在同执行编号、原连接范围内同步回平台。需同步更新平台/服务端与插件,无数据库迁移;不重新下发任务,真实写入不确定结果继续人工核验。 + +继续保留既有修复: - 安排联动稳定检查将正常采样观察预算与定时回调延迟分开;长间隔后重新观察至少 1.5 秒并要求多个有效样本,30 秒总等待上限内恢复,持续变化、持续延迟、控件失效或原生加载未结束均不保存。新增失败回执区分检测延迟与字段变化,详细证据仅记录字段名、采样次数和时间,不记录业务值。保留原生联动、唯一空行、付款审核、其他行保护及保存前复核;不自动重试保存。合成回归覆盖,真实 ERP 验收待部署方执行。 diff --git a/chrome-extension/ltjt-order-assistant/background.js b/chrome-extension/ltjt-order-assistant/background.js index 7e3b70f..367d874 100644 --- a/chrome-extension/ltjt-order-assistant/background.js +++ b/chrome-extension/ltjt-order-assistant/background.js @@ -2390,6 +2390,12 @@ function erpResolutionFailure(operation, report = {}) { } const navigationFailure = blockers.find((item) => item.startsWith('erp_resolution_navigation_failed:')); if (navigationFailure) { + if (/native_list_search_not_ready|native_list_search_document_changed/.test(navigationFailure)) { + return { + errorCode: 'erp_list_search_not_ready', + message: 'ERP 列表搜索页面未就绪或在检索时发生切换,已停止,未写入 ERP。请待页面加载完成后再操作。' + }; + } return { errorCode: 'erp_target_lookup_failed', message: `ERP 检索${targetLabel}失败,请确认 ERP 已登录后重试。` diff --git a/chrome-extension/ltjt-order-assistant/inpage.js b/chrome-extension/ltjt-order-assistant/inpage.js index 0ed85bf..0b31d7b 100644 --- a/chrome-extension/ltjt-order-assistant/inpage.js +++ b/chrome-extension/ltjt-order-assistant/inpage.js @@ -1402,19 +1402,72 @@ }); } + async function waitForNativeListSearch(initialDocument, timeoutMs = 15000) { + const expectedPath = String(initialDocument?.location?.pathname || '').toLowerCase(); + const framed = initialDocument !== document || Boolean(mainIframe()); + const now = () => typeof performance !== 'undefined' ? performance.now() : Date.now(); + const startedAt = now(); + let samples = 0; + let replacements = 0; + let previousDocument = initialDocument; + let readiness; + while (true) { + // A navigating iframe can expose the destination URL before replacing + // its Document. Never continue waiting on that detached old Document. + let current = null; + let accessible = true; + try { current = framed ? mainIframe()?.contentDocument : document; } + catch { accessible = false; } + if (current && current !== previousDocument) replacements += 1; + previousDocument = current; + let pathMatched = false; + let complete = false; + let loaderReady = false; + let buttonReady = false; + try { + pathMatched = Boolean(current && expectedPath && String(current.location.pathname).toLowerCase() === expectedPath); + complete = current?.readyState === 'complete'; + loaderReady = typeof current?.defaultView?.AjaxLoadData === 'function'; + const button = current?.querySelector('#SearchButton, [name="SearchButton"]'); + buttonReady = Boolean(button && button.isConnected !== false && button.disabled !== true); + } catch { accessible = false; } + samples += 1; + readiness = { + document_accessible: accessible, document_present: Boolean(current), + path_matched: pathMatched, document_complete: complete, + loader_ready: loaderReady, search_button_ready: buttonReady, + document_replacements: replacements, samples, + elapsed_ms: Math.round(now() - startedAt) + }; + if (accessible && pathMatched && complete && loaderReady && buttonReady) { + return { document: current, readiness }; + } + if (readiness.elapsed_ms >= timeoutMs) { + const missing = ['document_accessible', 'document_present', 'path_matched', 'document_complete', 'loader_ready', 'search_button_ready'] + .filter((key) => !readiness[key]); + const error = new Error(`native_list_search_not_ready:${missing.join(',')}:elapsed_ms=${readiness.elapsed_ms}:document_replacements=${replacements}`); + error.nativeListReadiness = readiness; + throw error; + } + await sleep(100); + } + } + + function assertNativeListDocumentCurrent(scopeDocument) { + const current = mainIframe() ? mainIframeDocument() : document; + if (current !== scopeDocument) throw new Error('native_list_search_document_changed'); + } + async function searchMainPage(scopeDocument, values = {}) { - const nativeSearchReady = await waitForCondition(() => ( - scopeDocument.readyState === 'complete' - && typeof scopeDocument.defaultView?.AjaxLoadData === 'function' - && Boolean(scopeDocument.querySelector('#SearchButton, [name="SearchButton"]')) - ), 15000, 100); - if (!nativeSearchReady) throw new Error('native_list_search_not_ready'); + const ready = await waitForNativeListSearch(scopeDocument); + scopeDocument = ready.document; const searchResolution = resolveNativeListSearchValues(values); const searchValues = searchResolution.values; const jq = scopeDocument.defaultView?.jQuery || scopeDocument.defaultView?.$; if (typeof jq !== 'function' || typeof jq.ajax !== 'function') throw new Error('native_list_search_ajax_not_ready'); const priorAjaxIdle = await waitForCondition(() => Number(jq.active || 0) === 0, 12000, 50); if (!priorAjaxIdle) throw new Error('native_list_search_prior_ajax_not_idle'); + assertNativeListDocumentCurrent(scopeDocument); const setIfPresent = (name, value) => { const element = scopeDocument.querySelector(`#${name}, [name="${name}"]`); if (!element) return false; @@ -1486,6 +1539,7 @@ ), 3000, 50); if (!statusApplied) throw new Error('native_status_filter_not_applied'); const clickRequestStarted = await waitForCondition(() => capturedXhr, 3000, 25); + assertNativeListDocumentCurrent(scopeDocument); if (!clickRequestStarted) scopeDocument.defaultView.AjaxLoadData(true); } else { // Invoke the ERP's own list loader directly. The exact ajaxSend/ajaxComplete @@ -1498,10 +1552,12 @@ const completed = await waitForCondition(() => requestCompleted, 15000, 50); if (!completed) throw new Error('native_list_search_result_timeout'); if (httpStatus < 200 || httpStatus >= 300) throw new Error(`native_list_search_http_${httpStatus || 'error'}`); + assertNativeListDocumentCurrent(scopeDocument); } finally { eventTarget.off(eventNamespace); } scopeDocument.__ltjtNativeListSearchEvidence = { + readiness: ready.readiness, date_strategy: searchResolution.date_strategy, fallback_applied: searchResolution.fallback_applied, date_range: searchResolution.date_range, @@ -1819,7 +1875,7 @@ async function searchLifecycleList(path, pattern, criteria, listKind, statusOverride = '') { const searchValues = lifecycleSearchValues(criteria, listKind, statusOverride); let scopeDocument = await ensureMainPage(path, pattern, searchValues); - await searchMainPage(scopeDocument, searchValues); + scopeDocument = await searchMainPage(scopeDocument, searchValues); let stable = await waitForCondition(() => { const current = currentMainListDocument(pattern, scopeDocument); return current?.readyState === 'complete' ? current : null; @@ -1839,7 +1895,7 @@ if (independentBusinessLookup && (!visibleRows.length || !customerEvidence)) { const primaryEvidence = stable?.__ltjtNativeListSearchEvidence || null; const fallbackValues = { ...searchValues, S_kehuming: '' }; - await searchMainPage(scopeDocument, fallbackValues); + scopeDocument = await searchMainPage(scopeDocument, fallbackValues); stable = await waitForCondition(() => { const current = currentMainListDocument(pattern, scopeDocument); return current?.readyState === 'complete' ? current : null; @@ -2463,6 +2519,7 @@ blockers: [`erp_resolution_navigation_failed:${error?.message || String(error)}`], preflight: { stage: 'erp_readonly_resolution', + ...(error.nativeListReadiness ? { native_list_readiness: error.nativeListReadiness } : {}), lookup_mode: criteria.mode, identifier, supplied_filters: { @@ -2552,7 +2609,7 @@ let listDocument; try { listDocument = await ensureMainPage(listPath, listPattern, searchValues); - await searchMainPage(listDocument, searchValues); + listDocument = await searchMainPage(listDocument, searchValues); } catch (error) { return lifecycleRouteOutcome('lifecycle_route_blocked', operation, { blockers: [`passenger_list_navigation_failed:${error?.message || String(error)}`] @@ -2816,7 +2873,7 @@ let listDocument; try { listDocument = await ensureMainPage(listPath, listPattern, searchValues); - await searchMainPage(listDocument, searchValues); + listDocument = await searchMainPage(listDocument, searchValues); } catch (error) { return { ok: false, @@ -3893,7 +3950,7 @@ S_lingdui: '', S_zhuangtai: '' }; - await searchMainPage(scopeDocument, searchValues); + scopeDocument = await searchMainPage(scopeDocument, searchValues); const row = rowForIdentifier(scopeDocument, groupNumber); return { found: Boolean(row), @@ -3939,7 +3996,7 @@ S_lingdui: '', S_zhuangtai: '' }; - await searchMainPage(scopeDocument, searchValues); + scopeDocument = await searchMainPage(scopeDocument, searchValues); const selectionExpected = options.fact_probe ? { ...expected, customer_name: '', passenger_counts: undefined, require_customer_match: false, date } : { ...expected, date }; @@ -4584,7 +4641,7 @@ S_tuanxuhao: parentGroup, S_zhuangtai: '' }); - await searchMainPage(listDocument, { + listDocument = await searchMainPage(listDocument, { S_chufariqi: dateYyyyMD(dates[0] || ''), S_chufarizhi: dateYyyyMD(dates[0] || ''), S_tuanxuhao: parentGroup, @@ -4945,7 +5002,7 @@ S_tuanxuhao: listIdentifier }; let listDocument = await ensureMainPage(listPath, listPattern, searchValues); - await searchMainPage(listDocument, searchValues); + listDocument = await searchMainPage(listDocument, searchValues); const sourceSearchEvidence = listDocument.__ltjtNativeListSearchEvidence || null; const stableSourceDocument = await waitForCondition(() => { const current = currentMainListDocument(listPattern, listDocument); @@ -6543,7 +6600,7 @@ } window.LTJTOrderAssistant = { - version: '0.5.183', + version: '0.5.184', resolveNativeListSearchValues, lookupKeywordMatchesText, inspectLifecycleSearchCriteria: lifecycleSearchCriteria, diff --git a/chrome-extension/ltjt-order-assistant/manifest.json b/chrome-extension/ltjt-order-assistant/manifest.json index 9510188..6cb69ff 100644 --- a/chrome-extension/ltjt-order-assistant/manifest.json +++ b/chrome-extension/ltjt-order-assistant/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 3, "name": "联泰下单助手", - "version": "0.5.183", + "version": "0.5.184", "description": "在已登录 LTJT ERP 页面内规划并受控执行联泰 ERP 业务操作。", "permissions": [ "activeTab", diff --git a/chrome-extension/ltjt-order-assistant/team-batch-inpage.js b/chrome-extension/ltjt-order-assistant/team-batch-inpage.js index 574d423..43c07a0 100644 --- a/chrome-extension/ltjt-order-assistant/team-batch-inpage.js +++ b/chrome-extension/ltjt-order-assistant/team-batch-inpage.js @@ -944,7 +944,7 @@ window.LTJTOrderAssistant = { ...(window.LTJTOrderAssistant || {}), - version: '0.5.183', + version: '0.5.184', openTeamBatchForm, pingTeamBatchFrame, preflightTeamBatchNative, diff --git a/control-plane/src/passenger-roster-workbook.ts b/control-plane/src/passenger-roster-workbook.ts index 08f4f05..aa15898 100644 --- a/control-plane/src/passenger-roster-workbook.ts +++ b/control-plane/src/passenger-roster-workbook.ts @@ -13,7 +13,7 @@ const ABSOLUTE_MAX_DATA_ROWS = 5_000; const MAX_PASSENGER_SEQUENCE = 5_000; const MAX_HEADER_ROW = 100; -export const PASSENGER_ROSTER_WORKBOOK_VERSION = 'ltjt-passenger-roster-workbook-v1.5.0'; +export const PASSENGER_ROSTER_WORKBOOK_VERSION = 'ltjt-passenger-roster-workbook-v1.5.1'; const REQUIRED_SOURCE_FIELDS = [ '序号', '姓名', '英文姓名', '性别', '出生日期', '出生地', '护照号码', @@ -36,12 +36,14 @@ const HEADER_FIELD_ENTRIES: ReadonlyArray { no_erp_write: result.no_erp_write === true, write_attempted: result.write_attempted === true, execution_id: result.execution_id || '', + ...(result.execution_phase === 'dispatch_uncertain' ? { + execution_phase: 'dispatch_uncertain', + reconciliation_required: result.reconciliation_required === true, + reconciliation_stale: result.reconciliation_stale === true + } : {}), ...(operationTiming ? { operation_timing: operationTiming } : {}) }; } @@ -2351,6 +2356,58 @@ export function hasPrewriteNoErpEvidence(value: unknown): boolean { && ajaxRecords.every((record) => record.prevented_from_network === true || record.network_request_attempted === false); } +/** Only a dispatch acknowledgement timeout may be closed by a late, proven + * read-only lookup failure. This is result ingestion, never permission to run + * the task again. The caller still enforces actor, task and execution access. */ +export function canResolveDispatchNoWrite(input: { + taskStatus: string; attemptStatus: string; previous: unknown; incoming: unknown; + executionId: string; connectionId: string; claimedConnectionId: string; +}): boolean { + const previous = jsonObject(input.previous); + const result = jsonObject(input.incoming); + const report = jsonObject(result.report); + const preflight = jsonObject(report.preflight); + const timedOut = input.taskStatus === 'failed' + && previous.reconciliation_required === true && previous.reconciliation_stale === true; + const sameExecution = Boolean(input.executionId) + && text(previous.execution_id) === input.executionId && text(result.execution_id) === input.executionId; + const sameConnection = Boolean(input.connectionId) + && input.connectionId === input.claimedConnectionId; + return (input.taskStatus === 'reconciliation_pending' || timedOut) + && input.attemptStatus === 'reconciliation_pending' && sameExecution && sameConnection + && text(previous.execution_phase) === 'dispatch_uncertain' + && ['dispatch', 'reconciliation_timeout'].includes(text(previous.stage)) + && !previous.report && !previous.native_request && !previous.server_response + && !previous.erp_receipt && !previous.success_receipt && !hasCompletionEvidence(previous) + && text(result.status) === 'blocked' && text(result.stage) === 'erp_resolution' + && text(result.failure_source) === 'plugin_executor' + && result.no_erp_write === true && result.write_attempted === false && result.erp_write_started !== true + && !/submit|write_started|erp_write/i.test(text(result.execution_phase)) + && text(report.status) === 'erp_resolution_blocked' + && text(preflight.stage) === 'erp_readonly_resolution' + && report.no_erp_write === true && report.write_attempted === false + && preflight.no_erp_write === true && preflight.write_attempted === false + && report.erp_write_started !== true && preflight.erp_write_started !== true + && jsonObject(report.submit_safety).live_submit_attempted !== true + && !report.native_request && !report.server_response && !report.requery + && !result.native_request && !result.server_response && !result.requery + && !result.erp_receipt && !result.success_receipt && !report.erp_receipt && !report.success_receipt + && !hasCompletionEvidence(result) + && Array.isArray(report.blockers) && report.blockers.length > 0 + && Array.isArray(report.side_effects) + && report.side_effects.every((item) => ['no_procurement', 'no_payment', 'no_notification', 'no_external_send'].includes(text(item))) + && (report.ajax_records == null || (Array.isArray(report.ajax_records) && report.ajax_records.length === 0)); +} + +export function shouldIgnoreDispatchTimeout(previousValue: unknown, incomingValue: unknown): boolean { + const previous = jsonObject(previousValue); + const incoming = jsonObject(incomingValue); + return text(incoming.execution_phase) === 'dispatch_uncertain' && text(incoming.stage) === 'dispatch' + && Boolean(text(incoming.execution_id)) && text(previous.execution_id) === text(incoming.execution_id) + && Boolean(text(previous.stage)) && text(previous.stage) !== 'dispatch' + && ['accepted', 'running', 'completed', 'blocked', 'failed', 'cancelled', 'dry_run', 'reconciliation_pending'].includes(text(previous.status)); +} + function publicShadowDifference(row: Record, config: AppConfig): PublicParserShadowDifference { const programCandidate = decryptedJson(config, row.program_result_ciphertext); const aiCandidate = decryptedJson(config, row.ai_result_ciphertext); @@ -6505,6 +6562,10 @@ export class TaskService { const previousExecutionResult = jsonObject( decryptedJson(this.config, row.execution_result_ciphertext) || row.execution_result ); + if (text(jsonObject(attemptRow.details).connection_id) === connectionId + && shouldIgnoreDispatchTimeout(previousExecutionResult, preparedResult)) { + return { row, event: null }; + } let resultObject = preparedResult; if (prepared.required && !prepared.failureCode) { const stored: StoredTaskArtifact[] = []; @@ -6536,6 +6597,23 @@ export class TaskService { const stage = text(resultObject.stage || 'erp').slice(0, 160); if (rawStatus !== status) resultObject.result_status = rawStatus; resultObject.status = status; + const attemptDetails = jsonObject(attemptRow.details); + const canFinalizeDispatchNoWrite = canResolveDispatchNoWrite({ + taskStatus: text(row.status), attemptStatus: text(attemptRow.status), + previous: previousExecutionResult, incoming: resultObject, executionId, + connectionId, claimedConnectionId: text(attemptDetails.connection_id) + }); + const repeatsResolvedDispatchResult = text(row.status) === 'blocked' + && previousExecutionResult.reconciliation_resolution === 'late_dispatch_readonly_failure' + && text(previousExecutionResult.execution_id) === executionId + && text(attemptDetails.connection_id) === connectionId; + // Restore server-derived metadata for an exact duplicate's hash. Any + // changed result still fails the immutable-state check below. + if (canFinalizeDispatchNoWrite || repeatsResolvedDispatchResult) { + resultObject.reconciliation_resolved = true; + resultObject.reconciliation_required = false; + resultObject.reconciliation_resolution = 'late_dispatch_readonly_failure'; + } const lifecycle = executionLifecycleFacts(resultObject, status, true); Object.assign(resultObject, lifecycle); const message = text(resultObject.message || (uncertain ? 'ERP 结果不确定,请勿重复提交同一任务,等待任务所属账号只读核验。' : '插件已返回状态。')).slice(0, 2_000); @@ -6550,7 +6628,6 @@ export class TaskService { if (text(attemptRow.response_hash) === resultHash) { return { row, event: null }; } - const attemptDetails = jsonObject(attemptRow.details); const sameConnection = !text(attemptDetails.connection_id) || text(attemptDetails.connection_id) === connectionId; const failedReconciliation = text(row.status) === 'failed' && previousExecutionResult.reconciliation_required === true; @@ -6569,7 +6646,7 @@ export class TaskService { && hasPrewriteNoErpEvidence(previousExecutionResult) && hasPrewriteNoErpEvidence(resultObject) && sameConnection; - const canFinalizeTerminalReconciliation = canFinalizeReconciliation || canFinalizeNoWriteReconciliation; + const canFinalizeTerminalReconciliation = canFinalizeReconciliation || canFinalizeNoWriteReconciliation || canFinalizeDispatchNoWrite; if (executionStatusImmutable(text(row.status)) && !canFinalizeTerminalReconciliation) { throw new TaskError('result_after_terminal', `任务已处于不可变状态 ${row.status},迟到结果已忽略。`); } @@ -6652,7 +6729,7 @@ export class TaskService { execution_phase: text(resultObject.execution_phase) } }, context.userId); - await this.audit(client, context, canFinalizeNoWriteReconciliation + await this.audit(client, context, canFinalizeNoWriteReconciliation || canFinalizeDispatchNoWrite ? 'task.reconciliation_no_write_resolved' : canFinalizeReconciliation ? 'task.reconciliation_resolved' @@ -6662,7 +6739,7 @@ export class TaskService { connection_id: connectionId, terminal, reconciliation_resolved: canFinalizeTerminalReconciliation, - no_erp_write_resolution: canFinalizeNoWriteReconciliation + no_erp_write_resolution: canFinalizeNoWriteReconciliation || canFinalizeDispatchNoWrite }); return { row: updatedRow, event }; }); diff --git a/control-plane/test/dispatch-result-recovery.test.ts b/control-plane/test/dispatch-result-recovery.test.ts new file mode 100644 index 0000000..7133ae7 --- /dev/null +++ b/control-plane/test/dispatch-result-recovery.test.ts @@ -0,0 +1,189 @@ +import test from 'node:test'; +import assert from 'node:assert/strict'; +import { TaskService, canResolveDispatchNoWrite, shouldIgnoreDispatchTimeout } from '../src/task-service.js'; +import { loadConfig } from '../src/config.js'; +import { getPool, closePool } from '../src/db.js'; +import { decryptText } from '../src/crypto.js'; + +function fixture() { + return { + taskStatus: 'reconciliation_pending', attemptStatus: 'reconciliation_pending', + executionId: 'execution-a', connectionId: 'connection-a', claimedConnectionId: 'connection-a', + previous: { + execution_id: 'execution-a', stage: 'dispatch', execution_phase: 'dispatch_uncertain', + status: 'reconciliation_pending', write_attempted: true, erp_write_started: true, no_erp_write: false + } as Record, + incoming: { + execution_id: 'execution-a', status: 'blocked', stage: 'erp_resolution', failure_source: 'plugin_executor', + no_erp_write: true, write_attempted: false, + report: { + status: 'erp_resolution_blocked', no_erp_write: true, write_attempted: false, + preflight: { stage: 'erp_readonly_resolution', no_erp_write: true, write_attempted: false }, + native_request: null, server_response: null, requery: null, + blockers: ['erp_resolution_navigation_failed:native_list_search_not_ready'], + side_effects: ['no_procurement', 'no_payment', 'no_notification', 'no_external_send'] + } as Record + } as Record + }; +} + +test('same execution read-only failure resolves provisional dispatch uncertainty', () => { + assert.equal(canResolveDispatchNoWrite(fixture()), true); +}); + +test('maintenance-expired dispatch uncertainty still accepts the original explicit no-write result', () => { + const f = fixture(); f.taskStatus = 'failed'; + Object.assign(f.previous, { stage: 'reconciliation_timeout', reconciliation_required: true, reconciliation_stale: true }); + assert.equal(canResolveDispatchNoWrite(f), true); + delete f.previous.reconciliation_stale; + assert.equal(canResolveDispatchNoWrite(f), false); +}); + +test('late no-write resolution enforces execution, original connection and immutable state boundaries', () => { + for (const [key, values] of Object.entries({ + taskStatus: ['completed', 'cancelled', 'blocked', 'running', 'failed'], + attemptStatus: ['completed', 'cancelled', 'blocked', 'running', 'failed'], + executionId: ['', 'another'], connectionId: ['', 'another'], claimedConnectionId: ['', 'another'] + })) for (const value of values) { + assert.equal(canResolveDispatchNoWrite({ ...fixture(), [key]: value }), false, `${key}=${value}`); + } + for (const key of ['incoming', 'previous'] as const) { + const f = fixture(); f[key].execution_id = 'another'; + assert.equal(canResolveDispatchNoWrite(f), false, key); + } +}); + +test('true post-write uncertainty and prior native evidence cannot be overwritten', () => { + for (const patch of [ + { execution_phase: 'write_started' }, { execution_phase: '' }, { stage: 'lifecycle_live' }, + { report: { native_request: { url: 'fixture' } } }, { native_request: {} }, { server_response: {} }, + { erp_receipt: { group_numbers: ['TEST-001'] } } + ]) { + const f = fixture(); Object.assign(f.previous, patch); + assert.equal(canResolveDispatchNoWrite(f), false, JSON.stringify(patch)); + } +}); + +test('bare no-write flags, contradictory write evidence and non-lookup results are rejected', () => { + for (const patch of [ + { report: null }, { status: 'running' }, { status: 'failed' }, { stage: 'lifecycle_live' }, + { failure_source: 'program_parser' }, { no_erp_write: false }, { write_attempted: true }, + { write_attempted: undefined }, { erp_write_started: true }, { execution_phase: 'submit_started' }, + { native_request: {} }, { server_response: {} }, { requery: {} }, { erp_receipt: { group_numbers: ['TEST-001'] } } + ]) { + const f = fixture(); Object.assign(f.incoming, patch); + assert.equal(canResolveDispatchNoWrite(f), false, JSON.stringify(patch)); + } +}); + +test('page-level no-write evidence must be complete and internally consistent', () => { + for (const patch of [ + { status: 'live_submit_blocked' }, { no_erp_write: false }, { write_attempted: true }, + { native_request: {} }, { server_response: {} }, { requery: {} }, + { blockers: [] }, { blockers: null }, { side_effects: ['payment'] }, { side_effects: {} }, + { ajax_records: {} }, { ajax_records: [{ network_request_attempted: true }] }, + { preflight: {} }, { preflight: { stage: 'erp_readonly_resolution', no_erp_write: true, write_attempted: true } } + ]) { + const f = fixture(); Object.assign(f.incoming.report as object, patch); + assert.equal(canResolveDispatchNoWrite(f), false, JSON.stringify(patch)); + } +}); + +test('provisional timeout cannot replace already-received plugin progress or a final outcome', () => { + const incoming = fixture().previous; + for (const status of ['accepted', 'running', 'completed', 'blocked', 'failed', 'cancelled', 'dry_run', 'reconciliation_pending']) { + assert.equal(shouldIgnoreDispatchTimeout({ execution_id: 'execution-a', stage: 'erp_resolution', status }, incoming), true, status); + } + for (const previous of [{}, { execution_id: 'another', stage: 'erp_resolution', status: 'running' }, + { execution_id: 'execution-a', stage: 'dispatch', status: 'reconciliation_pending' }]) { + assert.equal(shouldIgnoreDispatchTimeout(previous, incoming), false); + } + assert.equal(shouldIgnoreDispatchTimeout({ execution_id: 'execution-a', stage: 'erp_resolution', status: 'running' }, { ...incoming, execution_phase: 'write_started' }), false); +}); + +test('real result-ingestion transaction closes only eligible dispatch failures and emits consistent facts', async t => { + const config = loadConfig({ NODE_ENV: 'test', FIELD_ENCRYPTION_KEY: Buffer.alloc(32, 27).toString('base64'), + DATABASE_URL: 'postgresql://fixture:fixture@127.0.0.1:1/fixture' }); + const pool = getPool(config); + t.after(async () => { t.mock.restoreAll(); await closePool(); }); + let row: Record; + let attempt: Record; + let events: Array>; + let queries: string[]; + const client = { release() {}, async query(sql: string, params: unknown[] = []) { + queries.push(sql.trim().split(/\s+/).slice(0, 2).join(' ')); + if (/SELECT \* FROM task_attempts/.test(sql)) return { rowCount: params[0] === 'execution-a' ? 1 : 0, rows: [attempt] }; + if (/UPDATE tasks\s/.test(sql)) { + row.execution_result_ciphertext = params[0]; row.execution_result = params[1]; + row.status = params[2]; row.stage = params[3]; row.message = params[4]; + if (params[8]) row.lease_owner = null; + return { rowCount: 1, rows: [row] }; + } + if (/UPDATE task_attempts/.test(sql)) { + attempt.status = params[0]; attempt.response_hash = params[1]; + return { rowCount: 1, rows: [] }; + } + if (!['BEGIN', 'COMMIT', 'ROLLBACK'].includes(sql)) throw new Error(`unexpected SQL ${sql}`); + return { rowCount: 0, rows: [] }; + } }; + t.mock.method(pool, 'connect', async () => client); + const service = new TaskService(config); + Object.assign(service, { + lockTaskForAccess: async () => row, + requireBrowserConnection: async () => {}, + getTask: async () => row, + emitEvent: async (_client: unknown, _row: unknown, event: Record) => { events.push(event); return event; }, + audit: async () => {}, notify: () => {} + }); + const context = { organizationId: 'org-a', userId: 'user-a', role: 'user' as const, requestId: 'fixture' }; + for (const scenario of ['late', 'expired', 'wrong_connection', 'wrong_execution', 'wrong_actor', 'completed', 'postwrite', 'bare_flags', 'progress_first']) { + const f = fixture(); + if (scenario === 'expired') { + f.taskStatus = 'failed'; + Object.assign(f.previous, { stage: 'reconciliation_timeout', reconciliation_required: true, reconciliation_stale: true }); + } + if (scenario === 'postwrite') Object.assign(f.previous, { stage: 'lifecycle_live', execution_phase: 'submitted' }); + if (scenario === 'bare_flags') delete f.incoming.report; + if (scenario === 'progress_first') { + f.taskStatus = 'running'; + Object.assign(f.previous, { stage: 'erp_resolution', status: 'running', execution_phase: '' }); + } + row = { id: 'row-a', task_id: 'task-a', assigned_user_id: 'user-a', organization_id: 'org-a', + status: scenario === 'completed' ? 'completed' : f.taskStatus, execution_result: f.previous, + lease_owner: scenario === 'progress_first' ? 'browser:connection-a' : null }; + attempt = { id: 'execution-a', status: f.attemptStatus, details: { connection_id: 'connection-a' } }; + events = []; queries = []; + const operation = service.recordExecutionResult( + scenario === 'wrong_actor' ? { ...context, userId: 'user-b' } : context, + 'task-a', scenario === 'progress_first' ? fixture().previous : f.incoming, + scenario === 'wrong_connection' ? 'connection-b' : 'connection-a', + scenario === 'wrong_execution' ? 'execution-b' : 'execution-a', { skipArtifactPersistence: true } + ); + if (['late', 'expired'].includes(scenario)) { + await operation; + const stored = JSON.parse(decryptText(config, String(row.execution_result_ciphertext))); + assert.equal(row.status, 'blocked', scenario); + assert.equal(attempt.status, 'blocked'); + assert.equal(stored.reconciliation_resolved, true); + assert.equal(stored.no_erp_write, true); + assert.equal(stored.erp_write_started, false); + assert.equal(stored.write_attempted, false); + assert.equal(events.length, 1); + assert.equal((events[0].payload as Record).reconciliation_resolved, true); + assert.ok(queries.includes('COMMIT')); + await service.recordExecutionResult(context, 'task-a', structuredClone(fixture().incoming), 'connection-a', 'execution-a', { skipArtifactPersistence: true }); + assert.equal(events.length, 1, 'a duplicate read must not emit another terminal event'); + await assert.rejects(service.recordExecutionResult(context, 'task-a', { ...fixture().incoming, message: 'changed' }, 'connection-a', 'execution-a', { skipArtifactPersistence: true }), /不可变状态/); + } else if (scenario === 'progress_first') { + await operation; + assert.equal(row.status, 'running'); + assert.equal(events.length, 0); + assert.ok(!queries.includes('UPDATE tasks')); + } else { + await assert.rejects(operation, Error, scenario); + assert.equal(events.length, 0); + assert.ok(!queries.includes('UPDATE tasks'), scenario); + assert.ok(queries.includes('ROLLBACK') || scenario === 'wrong_execution'); + } + } +}); diff --git a/control-plane/test/passenger-roster-workbook.test.ts b/control-plane/test/passenger-roster-workbook.test.ts index 339d946..e6551ff 100644 --- a/control-plane/test/passenger-roster-workbook.test.ts +++ b/control-plane/test/passenger-roster-workbook.test.ts @@ -246,6 +246,39 @@ test('the approved attachment aliases and reverse issue-date formula are normali ].join('\n')); }); +test('birthplace and expiry aliases preserve the canonical passenger fields and values', async () => { + const normalize = (content: Buffer) => normalizePassengerRosterWorkbook({ + content, fileName: 'synthetic.xlsx', contentType: 'application/octet-stream' + }); + const original = await normalize(await syntheticWorkbook()); + const aliased = await normalize(await syntheticWorkbook(workbook => { + const sheet = workbook.getWorksheet('Sheet1')!; + sheet.getCell('H2').value = '出生地点'; + sheet.getCell('L2').value = '有效期至'; + })); + assert.equal(aliased.headerRow, original.headerRow); + assert.equal(aliased.rowCount, original.rowCount); + assert.equal(aliased.canonicalTsv, original.canonicalTsv); +}); + +test('birthplace and expiry aliases cannot silently select duplicate semantic columns', async () => { + for (const [column, alias] of [['H2', '出生地点'], ['L2', '有效期至']] as const) { + for (const duplicate of ['canonical', 'alias'] as const) { + const content = await syntheticWorkbook(workbook => { + const sheet = workbook.getWorksheet('Sheet1')!; + const original = sheet.getCell(column).value; + sheet.getCell(column).value = alias; + sheet.getCell('O2').value = duplicate === 'canonical' ? original : alias; + sheet.getCell('O3').value = '合成冲突值'; + }); + await expectRosterError( + () => normalizePassengerRosterWorkbook({ content, fileName: 'synthetic.xlsx', contentType: 'application/octet-stream' }), + 'roster_workbook_header_not_found' + ); + } + } +}); + test('source header order may vary, but every required label must appear exactly once', async () => { const missingHeader = await syntheticWorkbook((workbook) => { workbook.getWorksheet('Sheet1')!.getCell('N2').value = '备注说明'; diff --git a/dist/release-manifest.json b/dist/release-manifest.json index 7be3184..8d888ea 100644 --- a/dist/release-manifest.json +++ b/dist/release-manifest.json @@ -1,8 +1,8 @@ { "manifest_version": 1, - "generated_on": "2026-09-14", + "generated_on": "2026-09-15", "baselines": { - "chrome_extension": "0.5.183", + "chrome_extension": "0.5.184", "skills": "0.5.126", "business_instruction_docx": "0.5.133", "agent_prompt": "ltjt-agent-prompt-v1.8-independent-headcount-categories" @@ -10,10 +10,10 @@ "artifacts": [ { "kind": "chrome_extension", - "version": "0.5.183", - "path": "dist/ltjt-order-assistant-0.5.183.zip", + "version": "0.5.184", + "path": "dist/ltjt-order-assistant-0.5.184.zip", "source": "chrome-extension/ltjt-order-assistant", - "sha256": "95e838dbed02f7892eb1ee6c57c32f5fc363bf7887276475209d78c685867433" + "sha256": "f8053808553c6fe1b75161225058447e8fbb13386b36a2048fd3599dfd7d120b" }, { "kind": "skill", diff --git a/mappings/lifecycle.mapping.json b/mappings/lifecycle.mapping.json index d3af4aa..8461a99 100644 --- a/mappings/lifecycle.mapping.json +++ b/mappings/lifecycle.mapping.json @@ -1,7 +1,7 @@ { "contract_version": "ltjt-lifecycle-v2.9-roster-leader-contact-2026-08", "current_agent_parse_prompt_version": "ltjt-agent-prompt-v1.8-independent-headcount-categories", - "current_extension_version": "0.5.183", + "current_extension_version": "0.5.184", "original_arrangement_date_selection": "Hotel, vehicle, transport and other/filing update selection accepts MM-DD or YYYY-MM-DD; omitted year matches original ERP month/day within the exact group only. Require exactly one persisted row, then freeze its actual full dates and id. Full year is exact; mixed/cross-year endpoints are matched independently with actual range order checked. No match or ambiguity blocks before mutation; show up to five original candidates and ask to resubmit complete dates. Creation and legacy target-date changes retain existing semantics.", "historical_test_marker": "TEST-202609", "scope": "/System/Business/", diff --git a/tools/lifecycle-contract.test.mjs b/tools/lifecycle-contract.test.mjs index a4642b2..251f5d5 100644 --- a/tools/lifecycle-contract.test.mjs +++ b/tools/lifecycle-contract.test.mjs @@ -1374,7 +1374,7 @@ test('passenger explicit server success is terminal without a post-save row requ assert.doesNotMatch(passengerBranch, /passengerRequery|verifyLifecycleOperation/); assert.doesNotMatch(background, /attemptAutomaticPassengerReconciliation/); assert.match(background, /名单已取得 ERP 明确成功响应,按业务规则确认录入成功/); - assert.match(platformApp, /REQUIRED_EXTENSION_VERSION = '0\.5\.183'/); + assert.match(platformApp, /REQUIRED_EXTENSION_VERSION = '0\.5\.184'/); }); test('uncertain lifecycle writes can only converge through a read-only plugin requery', async () => { @@ -1584,7 +1584,7 @@ test('lifecycle execution keeps the MV3 worker alive until the durable task sett assert.match(background, /arrangement_resource_candidate_data_missing/); }); -test('extension 0.5.183 keeps reload dormant unless its durable execution state is fully idle', async () => { +test('extension 0.5.184 keeps reload dormant unless its durable execution state is fully idle', async () => { const [background, bridge] = await Promise.all([ readFile(new URL('../chrome-extension/ltjt-order-assistant/background.js', import.meta.url), 'utf8'), readFile(new URL('../chrome-extension/ltjt-order-assistant/business-bridge.js', import.meta.url), 'utf8') @@ -2035,7 +2035,7 @@ test('delete guard distinguishes independent, shared child, and shared parent ro for (const operation of operations) assert.equal(plans.validateOperation(operation).ok, true, plans.validateOperation(operation).blockers.join('; ')); const mapping = JSON.parse(await readFile(new URL('../mappings/lifecycle.mapping.json', import.meta.url), 'utf8')); - assert.equal(mapping.current_extension_version, '0.5.183'); + assert.equal(mapping.current_extension_version, '0.5.184'); assert.equal( mapping.updates.order_update_independent.field_mapped_pending_live_validation['pax.child_no_bed'], 'ertrenshu' @@ -2419,10 +2419,10 @@ test('schema and browser adapters contain the v2 safety fields and no confirm ov assert.match(inpage, /`ys_danweiid\$\{index\}`, resolvedCustomerId/); assert.doesNotMatch(inpage, /product_customer_source_region|sourceRegionCheck|source_reference/); assert.doesNotMatch(teamBatchInpage, /product_customer_source_region|sourceRegionCheck/); - assert.equal(extensionManifest.version, '0.5.183'); - assert.match(inpage, /version: '0\.5\.183'/); - assert.match(teamBatchInpage, /version: '0\.5\.183'/); - assert.match(platformApp, /REQUIRED_EXTENSION_VERSION = '0\.5\.183'/); + assert.equal(extensionManifest.version, '0.5.184'); + assert.match(inpage, /version: '0\.5\.184'/); + assert.match(teamBatchInpage, /version: '0\.5\.184'/); + assert.match(platformApp, /REQUIRED_EXTENSION_VERSION = '0\.5\.184'/); assert.match(inpage, /function strictIsoDate\(value\)/); assert.match(inpage, /const startDate = strictIsoDate\(current\('riqi'\)\)/); assert.match(inpage, /const endDate = strictIsoDate\(current\('riqis'\)\)/); diff --git a/tools/native-list-readiness.test.mjs b/tools/native-list-readiness.test.mjs new file mode 100644 index 0000000..4643b68 --- /dev/null +++ b/tools/native-list-readiness.test.mjs @@ -0,0 +1,164 @@ +import test from 'node:test'; +import assert from 'node:assert/strict'; +import { readFileSync } from 'node:fs'; +import vm from 'node:vm'; + +const source = readFileSync(new URL('../chrome-extension/ltjt-order-assistant/inpage.js', import.meta.url), 'utf8'); +const testSource = source.replace(' resolveNativeListSearchValues,', ' testSearch: searchMainPage,\n resolveNativeListSearchValues,'); + +function fixture({ framed = true, tick = () => {} } = {}) { + let now = 0; + const calls = []; + const state = { current: null, framePresent: framed, inaccessible: false }; + function list({ path = '/System/Business/orders.asp', complete = true, loader = true, button = true, disabled = false } = {}) { + const listeners = new Map(); + const fields = new Map(); + const search = { isConnected: true, disabled }; + for (const name of ['S_chufariqi', 'S_chufarizhi', 'S_tuanxuhao', 'S_kehuming', 'S_chanpinming', 'S_youkexinxi', 'S_lingdui', 'S_zhuangtai']) fields.set(name, { value: '' }); + const doc = { + location: { pathname: path, href: `https://erp.invalid${path}` }, readyState: complete ? 'complete' : 'loading', + querySelector(selector) { + if (selector.startsWith('#SearchButton')) return button ? search : null; + return fields.get(selector.match(/^#([^,]+)/)?.[1]) || null; + }, + querySelectorAll: () => [], + fields, search + }; + const events = { on: (name, callback) => listeners.set(name.split('.')[0], callback), off: () => listeners.clear() }; + const jq = () => events; + jq.ajax = () => {}; + jq.active = 0; + doc.defaultView = { document: doc, jQuery: jq }; + if (loader) doc.defaultView.AjaxLoadData = () => { + calls.push({ document: doc, identifier: fields.get('S_tuanxuhao').value }); + const xhr = { status: 200 }; + const data = new URLSearchParams({ Act: 'PrintGridList', ...Object.fromEntries([...fields].map(([name, field]) => [name, field.value])) }); + listeners.get('ajaxSend')?.({}, xhr, { url: '/System/Dat/order.asp', data: data.toString() }); + listeners.get('ajaxComplete')?.({}, xhr); + }; + return doc; + } + const initial = list(); + state.current = initial; + const frame = { get contentDocument() { if (state.inaccessible) throw new Error('fixture access denied'); return state.current; } }; + const root = framed ? { + location: { pathname: '/System/Mainlt.asp' }, + getElementById: () => state.framePresent ? frame : null, + querySelector: () => null + } : initial; + if (!framed) { root.getElementById = () => null; } + const window = { document: root, location: root.location }; + vm.runInNewContext(testSource, { + window, document: root, location: root.location, URL, URLSearchParams, + Date: class extends Date { static now() { return now; } }, + performance: { now: () => now }, + setTimeout(callback, delay) { now += delay; tick({ now, state, initial }); callback(); } + }); + return { api: window.LTJTOrderAssistant, list, initial, root, state, calls, elapsed: () => now, + run: () => window.LTJTOrderAssistant.testSearch(initial, { S_tuanxuhao: 'TEST-LIST-001', S_zhuangtai: '' }) }; +} + +test('ready native list searches once and retains exact request evidence', async () => { + for (const framed of [true, false]) { + const f = fixture({ framed }); + const result = await f.run(); + assert.equal(result, f.initial); + assert.equal(f.calls.length, 1); + assert.equal(f.calls[0].identifier, 'TEST-LIST-001'); + assert.equal(result.__ltjtNativeListSearchEvidence.completed, true); + } +}); + +test('a loading same-path Document replacement is reacquired before searching', async () => { + let replacement; + const f = fixture({ tick({ now, state }) { if (now >= 500) state.current = replacement; } }); + f.initial.readyState = 'loading'; + replacement = f.list(); + const result = await f.run(); + assert.equal(result, replacement); + assert.equal(f.calls.length, 1); + assert.equal(f.calls[0].document, replacement); + assert.equal(f.initial.fields.get('S_tuanxuhao').value, '', 'detached document must not be filled'); + assert.equal(result.__ltjtNativeListSearchEvidence.readiness.document_replacements, 1); +}); + +test('replaced same-path document can finish loading later without using its predecessor', async () => { + let replacement; + const f = fixture({ tick({ now, state }) { + if (now >= 100) state.current = replacement; + if (now >= 1200) replacement.readyState = 'complete'; + } }); + f.initial.readyState = 'loading'; + replacement = f.list({ complete: false }); + assert.equal(await f.run(), replacement); + assert.equal(f.elapsed(), 1200); +}); + +for (const [name, change, missing] of [ + ['unfinished page', f => { f.initial.readyState = 'loading'; }, 'document_complete'], + ['missing loader', f => { delete f.initial.defaultView.AjaxLoadData; }, 'loader_ready'], + ['disabled button', f => { f.initial.search.disabled = true; }, 'search_button_ready'], + ['detached button', f => { f.initial.search.isConnected = false; }, 'search_button_ready'], + ['wrong page', f => { f.state.current = f.list({ path: '/System/login.asp' }); }, 'path_matched'], + ['missing document', f => { f.state.current = null; }, 'document_present'], + ['removed frame', f => { f.state.framePresent = false; }, 'document_present'], + ['inaccessible frame', f => { f.state.inaccessible = true; }, 'document_accessible'] +]) test(`native readiness stops without searching: ${name}`, async () => { + const f = fixture(); change(f); + await assert.rejects(f.run(), error => { + assert.match(error.message, /native_list_search_not_ready/); + assert.ok(error.message.includes(missing)); + assert.equal(error.nativeListReadiness[missing], false); + assert.ok(!JSON.stringify(error.nativeListReadiness).includes('TEST-LIST')); + return true; + }); + assert.equal(f.calls.length, 0); + assert.equal(f.elapsed(), 15000); +}); + +test('document replacement during prior Ajax wait fails closed without searching either page', async () => { + const f = fixture({ tick({ state, initial }) { state.current = f.list(); initial.defaultView.jQuery.active = 0; } }); + f.initial.defaultView.jQuery.active = 1; + await assert.rejects(f.run(), /native_list_search_document_changed/); + assert.equal(f.calls.length, 0); +}); + +test('missing button is diagnosed separately from a ready document and loader', async () => { + const f = fixture(); f.state.current = f.list({ button: false }); + await assert.rejects(f.run(), error => error.nativeListReadiness.search_button_ready === false + && error.nativeListReadiness.document_complete === true && error.nativeListReadiness.loader_ready === true); + assert.equal(f.calls.length, 0); +}); + +test('a page change during the native search is rejected instead of using stale result rows', async () => { + const f = fixture(); const load = f.initial.defaultView.AjaxLoadData; + f.initial.defaultView.AjaxLoadData = () => { load(); f.state.current = f.list(); }; + await assert.rejects(f.run(), /native_list_search_document_changed/); + assert.equal(f.calls.length, 1, 'only the original read-only search is issued; no retry'); + assert.equal(f.initial.__ltjtNativeListSearchEvidence, undefined); +}); + +test('the real resolution failure carries explicit no-write proof and value-free readiness details', async () => { + const f = fixture(); delete f.initial.defaultView.AjaxLoadData; + const report = await f.api.resolveLifecycleOperation({ action: 'arrangement_hotel', data: { existing_refs: { identifier: 'TEST-LIST-001' } } }); + assert.equal(report.status, 'erp_resolution_blocked'); + assert.equal(report.no_erp_write, true); + assert.equal(report.write_attempted, false); + assert.equal(report.native_request, null); + assert.equal(report.preflight.stage, 'erp_readonly_resolution'); + assert.equal(report.preflight.native_list_readiness.loader_ready, false); + assert.equal(f.calls.length, 0); +}); + +test('the worker describes readiness failures accurately while preserving not-found errors', () => { + const worker = readFileSync(new URL('../chrome-extension/ltjt-order-assistant/background.js', import.meta.url), 'utf8'); + const fn = worker.slice(worker.indexOf('function erpResolutionFailure('), worker.indexOf('function lifecycleRouteFailure(')); + const context = vm.createContext({}); vm.runInContext(fn, context); + for (const cause of ['native_list_search_not_ready', 'native_list_search_not_ready:loader_ready', 'native_list_search_document_changed']) { + const failure = context.erpResolutionFailure({}, { blockers: [`erp_resolution_navigation_failed:${cause}`] }); + assert.equal(failure.errorCode, 'erp_list_search_not_ready'); + assert.match(failure.message, /未写入 ERP/); + assert.doesNotMatch(failure.message, /确认 ERP 已登录/); + } + assert.equal(context.erpResolutionFailure({}, { blockers: ['erp_resolution_candidate_count:0'] }).errorCode, 'erp_target_not_found'); +});