From d5465e9c0dc565c886943d7cb4b3749f75a5eac0 Mon Sep 17 00:00:00 2001 From: inman Date: Mon, 7 Sep 2026 21:24:15 +0800 Subject: [PATCH] chore: finalize integrated release baseline --- .project-docs/00-brief/success-criteria.md | 5 +- ...H-001-fixed-scope-account-authorization.md | 21 ++++-- ...count-scoped-execution-and-force-delete.md | 17 +++-- ...n-management-plane-and-leader-oversight.md | 56 ++++++++++++++ ...-central-service-host-extension-updates.md | 4 +- .project-docs/10-decisions/decision-index.md | 8 +- .project-docs/20-architecture/data-flow.md | 16 ++-- .../20-architecture/system-overview.md | 19 ++--- .project-docs/30-worklog/current-state.md | 35 ++++++--- .project-docs/30-worklog/task-history.md | 1 + ...20260907-integrate-all-changes-9d2e7c41.md | 61 ++++++++++++++++ .project-docs/40-domain/business-rules.md | 16 ++-- .project-docs/40-domain/glossary.md | 3 + .project-docs/50-evidence/evidence-index.md | 7 +- .project-docs/80-commitments/commitments.md | 8 +- LianSyn-platform/app.js | 2 +- agent设计规范/agentbus-reply-contract.md | 2 +- agent设计规范/business-adaptation-registry.md | 2 +- .../test-fixtures/lwlt-lifecycle/release-gate.md | 5 +- archive/releases/2026-09-07/README.md | 2 + .../ltjt-order-assistant-0.5.168.zip | Bin .../2026-09-07/release-manifest-0.5.168.json | 69 ++++++++++++++++++ .../ltjt-order-assistant/README.md | 8 +- .../ltjt-order-assistant/background.js | 4 +- .../ltjt-order-assistant/inpage.js | 2 +- .../ltjt-order-assistant/manifest.json | 2 +- .../ltjt-order-assistant/team-batch-inpage.js | 2 +- control-plane/README.md | 2 +- control-plane/src/parser-orchestrator.ts | 2 +- control-plane/src/task-service.ts | 2 +- control-plane/test/control-plane.test.ts | 2 + dist/ltjt-order-assistant-0.5.169.zip | Bin 0 -> 217207 bytes dist/release-manifest.json | 8 +- mappings/lifecycle.mapping.json | 4 +- tools/lifecycle-contract.test.mjs | 17 +++-- ...t_extension_result_via_browser_session.mjs | 2 +- 36 files changed, 324 insertions(+), 92 deletions(-) create mode 100644 .project-docs/10-decisions/AUTH-004-admin-management-plane-and-leader-oversight.md create mode 100644 .project-docs/30-worklog/tasks/20260907-integrate-all-changes-9d2e7c41.md rename {dist => archive/releases/2026-09-07}/ltjt-order-assistant-0.5.168.zip (100%) create mode 100644 archive/releases/2026-09-07/release-manifest-0.5.168.json create mode 100644 dist/ltjt-order-assistant-0.5.169.zip diff --git a/.project-docs/00-brief/success-criteria.md b/.project-docs/00-brief/success-criteria.md index b800fa5..eb4160a 100644 --- a/.project-docs/00-brief/success-criteria.md +++ b/.project-docs/00-brief/success-criteria.md @@ -2,9 +2,10 @@ ## Project Success -- 已登记业务能从手工输入或 AgentBus 输入稳定路由到统一 operation 契约。 +- 已登记业务能从获授权员工的手工输入或账号绑定的 AgentBus 输入稳定路由到统一 operation 契约;管理员只进入管理面,所有任务接口和数据库 task principal 都失败关闭。 - 写能力只在唯一对象、页面身份、ownership、写前投影、明确服务端响应和 action-specific 完成凭据成立时执行。 -- ERP 执行以不可变任务归属账号为队列边界:同账号保持 FIFO 与单活跃执行,不同账号互不阻塞;管理员查看权限不能进入他人任务的事件、领取或插件回执链路。 +- ERP 执行以不可变任务归属账号为队列边界:同账号保持 FIFO 与单活跃执行,不同账号互不阻塞;登录 ERP 身份只能由唯一账号节点的规范化精确相等证明,且管理员没有任务读取、事件、领取、回执或删除权限。 +- 组长看板只读覆盖固定组织内所有已明确归属的手工与 AgentBus 任务,以不可变 assignee 作为员工口径;无可靠归属的历史记录不猜测归属,查看权限不扩展任务或 ERP 权限。 - 有效组长身份绑定可用 AgentBus 渠道后,系统自动从当前账号的 AgentBus 路由开始发送未来稳定结果;通知使用独立加密队列,失败不改变任务状态,摘要不扩大任务或 ERP 权限,也不暴露原始指令、客户资料或技术载荷。 - 归档/恢复与永久强制删除保持为两个明确操作;强制删除不受任务状态门禁限制、完整移除任务平台记录,并明确不代表回滚既有 ERP 写入。 - 当前发布物、源码和机器可读发布清单逐文件、逐哈希一致。 diff --git a/.project-docs/10-decisions/AUTH-001-fixed-scope-account-authorization.md b/.project-docs/10-decisions/AUTH-001-fixed-scope-account-authorization.md index 006bedc..5f8c9cf 100644 --- a/.project-docs/10-decisions/AUTH-001-fixed-scope-account-authorization.md +++ b/.project-docs/10-decisions/AUTH-001-fixed-scope-account-authorization.md @@ -2,7 +2,7 @@ ## Status -Accepted; superseded in part by AUTH-002 +Accepted; superseded in part by AUTH-002 and AUTH-004 ## Date @@ -10,7 +10,7 @@ Accepted; superseded in part by AUTH-002 ## Supersession Note -AUTH-002 supersedes only this ADR's organization-wide ERP FIFO and archive-only removal clauses. The remaining fixed-scope account, role, route-grant, owner-isolation, dashboard, AgentBus assignment, browser-worker, and ERP-identity decisions remain active. Current execution-queue and deletion behavior must be read from AUTH-002. +AUTH-002 supersedes this ADR's organization-wide ERP FIFO and archive-only removal clauses. AUTH-004 additionally supersedes administrator task creation, all-route possession, task-wide reads, dashboard access, task transitions, and force-delete authority, plus the manual-task-only leadership-dashboard scope. The remaining fixed-scope account, employee route-grant, owner-isolation, AgentBus assignment, browser-worker, and ERP-identity decisions remain active. Current execution-queue and employee deletion behavior must be read from AUTH-002; current administrator and dashboard boundaries must be read from AUTH-004. ## Context @@ -20,16 +20,16 @@ The platform already required login but treated the fixed deployment scope as a - Keep one internal `organization_id` deployment scope and do not expose organization selection or tenant administration. - Use three roles: `admin`, `team_lead`, and `user`. -- Administrators manage account lifecycle, passwords, sessions, global settings/audit, AgentBus channels, and all manual/AgentBus task visibility. They always hold all 18 registered manual business routes, but their inspection authority does not grant ERP execution authority over work assigned to another account. +- Superseded by AUTH-004 for task access: administrators manage account lifecycle, passwords, sessions, global settings/audit, AgentBus channels, parser routing, and employee grants, but hold no business routes and do not enter the task data plane. - Password entry points require a non-empty value but impose no application-level minimum or maximum length. The platform does not force a password change on first login or after an administrator reset; voluntary self-service change, administrator reset, and session revocation remain supported. The historical `must_change_password` column is compatibility-only and is cleared on password writes. -- Team leads and ordinary users use normal business APIs only for their own manual tasks. New non-administrator accounts start with no task-type grants and may invoke only routes explicitly granted by an administrator. +- Team leads and ordinary users use normal business APIs only for tasks assigned to themselves, whether created manually or through AgentBus. New non-administrator accounts start with no task-type grants and may invoke only routes explicitly granted by an administrator. - Re-read route authorization before intake and relevant task state transitions. Known denied routes and unknown/non-unique routes fail closed before parsing, plugin dispatch, or ERP execution. -- Give team leads a dedicated read-only platform-operations dashboard over all manual account tasks. It is an aggregate-first leadership view across task, person, original input, final output, time, task type, and completion state; every aggregate may drill into the same bounded business-facing task projection. +- Superseded in scope by AUTH-004: give team leads a dedicated read-only platform-operations dashboard over every durably assigned manual and AgentBus task, using immutable assignment as the employee dimension. Administrators do not access this dashboard. - Keep the leadership dashboard separate from audit and engineering diagnostics. It never renders parser/executor payloads, internal identifiers, codes, machine-shaped historical input, or technical failure text; those values are replaced by a concise business explanation without changing the underlying audit evidence. - Keep leadership summary cards display-only. Status changes are explicit filter-form actions, default to all results, and retain the business-facing merge of internal attention states into “进行中”. - Superseded by AUTH-002 for removal behavior: preserve creator and input-turn attribution with encrypted input at rest. The original decision exposed archive/restore only and did not expose irreversible purge. - Bind each enabled AgentBus channel to exactly one active `user` or `team_lead` account with a configured, case-insensitively unique expected ERP account. Administrator accounts remain unbound from employee channels. -- Execute inbound AgentBus work under the bound employee identity and that account's route allowlist. Persist one immutable task assignee for both manual and AgentBus work; confirmation, browser claim/result, reconciliation, and resume require the assignee even when the caller is an administrator. +- Execute inbound AgentBus work under the bound employee identity and that account's route allowlist. Persist one immutable task assignee for both manual and AgentBus work; confirmation, browser claim/result, reconciliation, and resume require that employee assignee. Administrators cannot invoke those transitions. - Allow only one fresh browser execution worker per account. Heartbeats must match the account's expected ERP identity; a second fresh worker or mismatched ERP session fails closed, and automatic failover begins only after the prior worker is stale. - Superseded by AUTH-002 for queue scope: the original decision preserved organization-wide ERP FIFO serialization. Employee worker binding chose who could execute but did not authorize parallel ERP writes. @@ -40,9 +40,9 @@ This model fits a single-organization deployment while enforcing least privilege ## Consequences - Migrations 015–018 must be applied before the updated control plane starts. -- Existing accounts migrate as administrators; newly created team leads and users require explicit task grants. +- Existing accounts originally migrated as administrators; under AUTH-004, administrator identities are management-only and newly created team leads/users require explicit task grants. - Existing historical `must_change_password=true` values do not restrict login, reads, or mutations; no destructive migration is required to retire the forced-change flow. -- Permission revocation can block an existing task at confirmation or browser claim even when an administrator attempts the transition. +- Permission revocation can block an existing task at confirmation or browser claim; administrators cannot attempt either transition. - Existing unbound AgentBus channels and historical unassigned AgentBus tasks remain non-executable until an administrator completes an explicit employee binding; no assignee is inferred from whichever browser is online. - Extension `0.5.164` is the first release carrying the expected-ERP identity probe required by this worker contract. - Cross-user operational visibility is intentionally separated from normal task mutation and technical debugging surfaces. @@ -52,6 +52,10 @@ This model fits a single-organization deployment while enforcing least privilege - The implicit administrator-only, organization-shared account behavior of the earlier control-plane baseline. +## Revision + +- 2026-09-07: AUTH-004 removed administrators from the task data plane and expanded the team-lead dashboard from manual-origin work to all durably assigned manual and AgentBus tasks. + ## Related - `control-plane/migrations/015_account_roles_and_task_audit.sql` @@ -61,3 +65,4 @@ This model fits a single-organization deployment while enforcing least privilege - `.project-docs/30-worklog/tasks/20260901-account-system-impl-d4e7a2.md` - `.project-docs/30-worklog/tasks/20260901-leadership-dashboard-c4b9e1.md` - `.project-docs/30-worklog/tasks/20260902-integrate-all-push-c93a7f21.md` +- `.project-docs/10-decisions/AUTH-004-admin-management-plane-and-leader-oversight.md` diff --git a/.project-docs/10-decisions/AUTH-002-account-scoped-execution-and-force-delete.md b/.project-docs/10-decisions/AUTH-002-account-scoped-execution-and-force-delete.md index 48025d4..218702c 100644 --- a/.project-docs/10-decisions/AUTH-002-account-scoped-execution-and-force-delete.md +++ b/.project-docs/10-decisions/AUTH-002-account-scoped-execution-and-force-delete.md @@ -2,12 +2,16 @@ ## Status -Accepted +Accepted; superseded in part by AUTH-004 ## Date 2026-09-03 +## Supersession Note + +AUTH-004 supersedes this ADR's administrator-wide task read model and administrator force-delete authority. Per-assignee FIFO, assignee-only executable routing, reversible archive/restore, and lifecycle-independent force delete remain active for the owning `team_lead` or `user` account. + ## Context AUTH-001 bound each task to one employee account and one matching ERP browser worker, but retained organization-wide ERP FIFO and archive-only operator removal. In production, one blocked or stale account could therefore hold every other employee's work behind the same queue. Administrator-wide task visibility also shared paths with executable event delivery, allowing an administrator page and plugin to observe or attempt to process another employee's task. Finally, an active or waiting task could fail the archive gate and then could not be permanently removed, leaving the same blocked state in place. @@ -19,9 +23,9 @@ The user explicitly required independent execution across accounts, FIFO only wi - Use immutable `tasks.assigned_user_id` as the ERP execution queue and routing partition. - Serialize browser claims with an advisory transaction lock scoped to organization plus assigned account. Active-execution checks, confirmed FIFO selection, and queue positions include only that account's tasks. - Preserve deterministic FIFO and at most one active ERP execution for one assigned account. A different assigned account's active, queued, stale, or uncertain task does not block this account and does not occupy its queue position. -- Keep administrator-wide task visibility as a read model only. Executable SSE history/live events, browser claims, plugin-result ingestion, and browser cleanup commands are accepted or delivered only for the authenticated account matching the task's immutable assignee, including when the signed-in role is administrator. +- Superseded by AUTH-004 for administrators: task reads and executable SSE, browser claims, plugin results, and cleanup commands are available only to a `team_lead` or `user` session matching the immutable assignee. Administrators have no task read model. - Keep archive and restore as the reversible routine workflow, with their existing lifecycle-state guard. -- Expose separately confirmed force delete through the single-task and bulk-delete APIs. Force delete intentionally has no parse, handoff, queue, or ERP-execution status gate, while retaining organization and owner authorization. +- Expose separately confirmed force delete through the single-task and bulk-delete APIs. Force delete intentionally has no parse, handoff, queue, or ERP-execution status gate, while requiring the owning employee account under AUTH-004. - On force delete, remove the task, task-owned records through existing cascades, and task outbox entries atomically. Retain only a minimal non-content `task.hard_deleted` audit marker, then request OSS artifact cleanup and owner-plugin local cancellation/cache cleanup after commit on a best-effort basis. - Force delete removes platform state only. It cannot roll back an ERP write that already happened, and the operator warning must state this explicitly. @@ -33,10 +37,10 @@ The execution account is already the durable link between the platform user, Age - Two employees with distinct assigned accounts and valid matching workers may execute concurrently; tasks for either employee remain FIFO and single-active within that employee's queue. - An uncertain ERP result blocks only the same assigned account's later claims unless an authorized operator explicitly force-deletes the platform task or resolves it through the existing reconciliation workflow. -- Administrators may inspect and force-delete authorized organization tasks, but their browser never receives or submits another employee's executable task events, plugin results, or cleanup command. +- Superseded by AUTH-004: administrators may neither inspect nor force-delete business tasks. The owning employee session alone receives executable task events, plugin results, and cleanup commands. - A force-deleted task and its task-owned evidence cannot be restored. The retained audit marker proves the destructive action without retaining task content. - No database migration or Chrome extension source/version change is required. The control-plane and platform UI must be deployed together before relying on the behavior. -- Runtime acceptance requires an authorized administrator-plus-two-employees staging matrix, including cross-account concurrency, same-account FIFO, administrator event isolation, and waiting/active force deletion. +- Runtime acceptance requires separate management and employee sessions plus two employee workers, including cross-account concurrency, same-account FIFO, administrator task-API denial, and owner-performed waiting/active force deletion. ## Supersedes @@ -45,6 +49,8 @@ The execution account is already the durable link between the platform user, Age All other AUTH-001 account, role, route-grant, ownership, dashboard, session, AgentBus, and expected-ERP-identity decisions remain active. +AUTH-004 is the current authority for administrator task isolation and leadership-dashboard scope. + ## Related - `.project-docs/10-decisions/AUTH-001-fixed-scope-account-authorization.md` @@ -53,3 +59,4 @@ All other AUTH-001 account, role, route-grant, ownership, dashboard, session, Ag - `control-plane/src/task-service.ts` - `control-plane/src/server.ts` - `LianSyn-platform/app.js` +- `.project-docs/10-decisions/AUTH-004-admin-management-plane-and-leader-oversight.md` diff --git a/.project-docs/10-decisions/AUTH-004-admin-management-plane-and-leader-oversight.md b/.project-docs/10-decisions/AUTH-004-admin-management-plane-and-leader-oversight.md new file mode 100644 index 0000000..1e7284f --- /dev/null +++ b/.project-docs/10-decisions/AUTH-004-admin-management-plane-and-leader-oversight.md @@ -0,0 +1,56 @@ +# AUTH-004: Management-only administrators and assignee-based leader oversight + +## Status + +Accepted + +## Date + +2026-09-07 + +## Context + +The fixed-scope account model previously let administrators create and inspect business tasks while withholding only employee ERP execution. This still placed administrator sessions, pages, and database principals inside the task data plane. Separately, the team-lead operations dashboard was restricted to manual tasks and used origin attribution, so assigned AgentBus work was absent from the leadership view. + +The user explicitly required administrators to be management-plane-only identities and required the group-leader dashboard to show every employee-assigned business task, regardless of manual or AgentBus intake. + +## Decision + +- Administrators manage accounts, roles, passwords, sessions, employee task-route grants, AgentBus channels, parser routing, automation settings, and audit. They cannot create, list, inspect, mutate, confirm, claim, reconcile, archive, restore, force-delete, stream, or submit results for business tasks. +- Administrator sessions do not register browser workers, open task SSE, call the ERP extension bridge, receive task cleanup commands, own employee channels, hold business-route grants, or become leader-summary subscribers or recipients. +- Only active `team_lead` and `user` identities enter the task data plane. Their normal task APIs, executable events, browser claims/results, reconciliation, archive/restore, and force delete remain restricted to immutable `assigned_user_id`. +- The operations dashboard is available only to team leads. It is an organization-wide, read-only business projection over durably assigned `manual` and `agentbus` tasks. Employee rankings, person filters, search, pagination, and detail use immutable `assigned_user_id`; historical AgentBus rows without an assignee are excluded rather than inferred. +- Dashboard visibility does not grant cross-user task mutation, executable events, artifacts, browser access, reconciliation, or ERP authority. AUTH-002 account-scoped queues and AUTH-003's separate privacy-bounded leader-summary outbox remain unchanged. +- Migration `021_admin_task_data_plane_isolation` removes legacy administrator task assignments and executable bindings without deleting task history, then uses database constraints and role-promotion cleanup to prevent administrators from re-entering task-principal relationships. + +## Rationale + +Separating management identities from business-task identities eliminates accidental administrator assignment, execution, and data exposure at the server and database boundaries. Using immutable assignment for the team-lead read model makes manual and AgentBus work consistent without inventing ownership for historical rows or weakening employee execution isolation. + +## Consequences + +- Migrations through `021_admin_task_data_plane_isolation` must complete before the updated application starts. +- Existing administrator-assigned tasks keep their historical task rows but lose executable assignment and leases. Administrator channels, browser workers, route grants, active summary subscriptions, and pending summary deliveries are disabled or removed. +- Administrators are redirected to management pages and cannot use the task history or operations dashboard. Operational canaries require separate administrator and employee/team-lead sessions. +- Team leads can inspect all assigned manual and AgentBus work through the bounded business-facing dashboard while normal task operations remain owner-only. +- Production migration, deployment, restart, and role/device canaries remain separately authorized runtime work. + +## Supersedes + +- AUTH-001 clauses granting administrators all manual routes, manual task creation, organization-wide task visibility, dashboard access, or assignee task transitions. +- AUTH-001's manual-task-only dashboard scope and origin-based employee attribution. +- AUTH-002 clauses retaining administrator-wide task reads or administrator force-delete authority. + +AUTH-002's per-assignee execution queues and employee force-delete semantics remain active. AUTH-003 remains active without change. + +## Related + +- `.project-docs/10-decisions/AUTH-001-fixed-scope-account-authorization.md` +- `.project-docs/10-decisions/AUTH-002-account-scoped-execution-and-force-delete.md` +- `.project-docs/10-decisions/AUTH-003-leader-task-summary-notifications.md` +- Feature commit `9043ad6eda0deb2a620e1303467d1c3bd80374ed` +- Feature commit `a2378c8` +- `control-plane/migrations/021_admin_task_data_plane_isolation.sql` +- `control-plane/src/task-service.ts` +- `control-plane/src/server.ts` +- `LianSyn-platform/app.js` diff --git a/.project-docs/10-decisions/EXT-001-central-service-host-extension-updates.md b/.project-docs/10-decisions/EXT-001-central-service-host-extension-updates.md index 6cb1bd4..9942622 100644 --- a/.project-docs/10-decisions/EXT-001-central-service-host-extension-updates.md +++ b/.project-docs/10-decisions/EXT-001-central-service-host-extension-updates.md @@ -10,9 +10,9 @@ Reverted ## Reversal -On 2026-09-03 the user explicitly directed that this iteration be backed up and its server-side automatic-update architecture removed from the main branch, then clarified that the Chrome plugin itself must remain at `0.5.167`. The exact full-stack state at commit `b2e33e2e5d29138891eabc93969cf24907492dfe` is preserved on remote branch `codex/backup-extension-update-20260903-b2e33e2`; active `main` keeps the exact `0.5.167` plugin source/package but restores the control plane to migration 018 with no private-OSS/ECS update orchestration. +On 2026-09-03 the user explicitly directed that this iteration be backed up and its server-side automatic-update architecture removed from the main branch, then clarified that the Chrome plugin itself must remain at `0.5.167` at that rollback point. The exact full-stack state at commit `b2e33e2e5d29138891eabc93969cf24907492dfe` is preserved on remote branch `codex/backup-extension-update-20260903-b2e33e2`. Active `main` later advanced the manually distributed plugin to `0.5.169` and the control plane to migration 021 without restoring private-OSS/ECS update orchestration. -This ADR is retained only as historical server-architecture context and no longer governs the active control plane. Plugin-side idle proof and guarded reload handlers remain as dormant `0.5.167` capabilities with no current server/platform trigger. The reverted server code was never deployed, migration 019 was not applied, no OSS extension release was published, and no Cloud Assistant or Chrome reload action was performed by these repository tasks. +This ADR is retained only as historical server-architecture context and no longer governs the active control plane. Plugin-side idle proof and guarded reload handlers remain as dormant capabilities in `0.5.169` with no current server/platform trigger. The reverted server code was never deployed, migration 019 was not applied, no OSS extension release was published, and no Cloud Assistant or Chrome reload action was performed by these repository tasks. ## Context diff --git a/.project-docs/10-decisions/decision-index.md b/.project-docs/10-decisions/decision-index.md index 2c73c45..236b50e 100644 --- a/.project-docs/10-decisions/decision-index.md +++ b/.project-docs/10-decisions/decision-index.md @@ -10,9 +10,10 @@ | RELEASE-001 | Current artifacts, filenames, versions, and SHA-256 values are defined only by `dist/release-manifest.json`. | Active | 2026-08-28 | Release and delivery | [Release manifest](../../dist/release-manifest.json) | | SAFETY-001 | Real ERP access/write, task mutation, extension reload, service restart, deployment, and external delivery require explicit task-scoped authorization. | Active | 2026-08-28 | Operations and maintenance | [Governance](../../AGENTS.md) | | NETWORK-001 | In the trusted internal deployment, AgentBus roster attachment URLs may resolve to internal/private addresses; HTTPS, credential rejection, DNS pinning, redirect validation, bounds, and digest checks remain. | Active | 2026-08-31 | AgentBus attachment ingress | [Reply contract](../../agent设计规范/agentbus-reply-contract.md) | -| AUTH-001 | The fixed deployment scope uses administrator-managed `admin`, `team_lead`, and `user` accounts, owner-isolated normal tasks, display-only leadership metrics with explicit filtering, explicit non-admin route grants, and assignee-bound AgentBus/browser/ERP execution. | Active except clauses superseded by AUTH-002 | 2026-09-01 | Authentication, authorization, audit, AgentBus workers, and operations oversight | [ADR](AUTH-001-fixed-scope-account-authorization.md) | -| AUTH-002 | ERP execution is serialized per immutable assigned account, administrator visibility is never execution routing, and explicit force delete physically removes authorized tasks regardless of lifecycle state. | Active | 2026-09-03 | ERP claim queues, executable events/results, and task removal | [ADR](AUTH-002-account-scoped-execution-and-force-delete.md) | +| AUTH-001 | The fixed deployment scope uses administrator-managed `admin`, `team_lead`, and `user` accounts, explicit employee route grants, and assignee-bound AgentBus/browser/ERP execution. | Active except clauses superseded by AUTH-002 and AUTH-004 | 2026-09-01 | Authentication, authorization, audit, AgentBus workers, and operations oversight | [ADR](AUTH-001-fixed-scope-account-authorization.md) | +| AUTH-002 | ERP execution is serialized per immutable assigned account, and explicit owner force delete physically removes authorized tasks regardless of lifecycle state. | Active except administrator task-access clauses superseded by AUTH-004 | 2026-09-03 | ERP claim queues, executable events/results, and task removal | [ADR](AUTH-002-account-scoped-execution-and-force-delete.md) | | AUTH-003 | Active team-lead identities automatically receive an organization-wide read projection through their current-owner AgentBus route and a separate encrypted outbox; it never grants task or ERP authority. | Active | 2026-09-07 | Team-lead notifications, AgentBus outbound routing, and summary privacy | [ADR](AUTH-003-leader-task-summary-notifications.md) | +| AUTH-004 | Administrators are management-plane-only identities; team leads alone receive an assignee-based, cross-source operations dashboard while employee task operations remain owner-only. | Active | 2026-09-07 | Administrator isolation, task APIs, database principals, and leadership oversight | [ADR](AUTH-004-admin-management-plane-and-leader-oversight.md) | ## Superseded And Reverted Decisions @@ -20,7 +21,8 @@ |---|---|---|---| | DOC-LEGACY-001 | Root `task_plan.md`, `findings.md`, and `progress.md` were the active project-memory system. | DOC-001 | 2026-08-28 | | AUTH-001 (partial) | Organization-wide ERP FIFO and archive-only operator removal. | AUTH-002 | 2026-09-03 | -| EXT-001 | Central-service private-OSS and ECS Cloud Assistant orchestration for shared unpacked-extension updates. | Server architecture reverted by explicit user decision; exact full implementation is preserved on `codex/backup-extension-update-20260903-b2e33e2`, while plugin `0.5.167` remains current. | 2026-09-03 | +| AUTH-001 / AUTH-002 (partial) | Administrator task creation, task-wide reads, dashboard access, task transitions, and force-delete authority; manual-only leadership dashboard scope. | AUTH-004 | 2026-09-07 | +| EXT-001 | Central-service private-OSS and ECS Cloud Assistant orchestration for shared unpacked-extension updates. | Server architecture reverted by explicit user decision; exact full implementation remains on `codex/backup-extension-update-20260903-b2e33e2`, while the active manually distributed plugin has advanced to `0.5.169`. | 2026-09-03 | ## Decision Criteria diff --git a/.project-docs/20-architecture/data-flow.md b/.project-docs/20-architecture/data-flow.md index 507fac2..9aa2a77 100644 --- a/.project-docs/20-architecture/data-flow.md +++ b/.project-docs/20-architecture/data-flow.md @@ -4,9 +4,9 @@ | Flow | Source | Destination | Notes | |---|---|---|---| -| Business directive | Manual workbench or AgentBus | Route orchestrator | Manual input uses the signed-in account; AgentBus input uses the channel's bound employee account and its route allowlist. | +| Business directive | Employee manual workbench or AgentBus | Route orchestrator | Manual input uses a signed-in team lead/user; AgentBus input uses the channel's bound employee account and its route allowlist. Administrators cannot enter this flow. | | AgentBus execution ownership | Enabled channel | Employee account → immutable task assignee → executable feed | One account owns at most one channel; unbound channels and unassigned historical tasks stay non-executable. | -| Manual account authorization | Signed-in account plus resolved business route | Intake and task-transition gates | Administrators hold all routes; team leads/users require explicit grants and unresolved routes fail closed | +| Manual account authorization | Signed-in employee plus resolved business route | Intake and task-transition gates | Team leads/users require explicit grants; administrators manage grants but hold none, and denied or unresolved routes fail closed. | | Parsing | Route orchestrator | AI Skill or deterministic Program parser | AI/Shadow/Auto/Program mode is frozen per task | | Operation | Parser | Control-plane task and confirmation | Must validate against the same final contract | | ERP execution | Confirmed task | Chrome extension and logged-in ERP page | Requires unique object, page identity, ownership, and write preflight | @@ -15,25 +15,25 @@ | WeChat roster attachment | Strict transport envelope plus one structured `payload.attachments[]` entry | Existing `awaiting_attachment` task | Explicit conversation ID wins; otherwise strict `Conversation:` supplies the fallback. Placeholder text alone never creates a task. | | Internal attachment download | Credential-free HTTPS URL | Bounded in-memory workbook bytes | Internal/private DNS answers are allowed; the selected address is pinned, every redirect is revalidated, and URL/host/IP/bytes are omitted from logs. | | Operational diagnostics | Service, request, task, parser, AgentBus, attachment, database, and cleanup stages | Structured stdout/stderr and bounded Docker logs | Correlation identifiers, codes, outcomes, and durations only; no secrets or business payloads. | -| Platform operations oversight | Manual task creator, encrypted instruction history, and readable outcome | Team-lead/administrator leadership projection | Display-only summaries plus explicit filters drive an aggregate-first task/person/input/output/time/type/completion view; list reads are bounded to one read-only connection and hydrate full details only for the current page. | +| Platform operations oversight | Durably assigned manual/AgentBus task, encrypted instruction history, and readable outcome | Team-lead-only leadership projection | Immutable assignee is the employee dimension; unassigned historical AgentBus rows are excluded. Display-only summaries plus explicit filters drive an aggregate-first task/person/input/output/time/type/completion view, with bounded list reads and page-only detail hydration. | | Team-lead task summary | Future stable manual/AgentBus task outcome for another non-admin employee | Role/channel reconciler → current-owner encrypted route → separate durable outbox → leader-owned AgentBus channel → WeChat | Automatic for active team leads with a usable route; employee replies are sent first, summary frames use stable IDs and explicit routing with no `reply_to`, and delivery failure never changes task state. | -| Browser worker selection | Immutable task assignee | One fresh account-bound browser connection | The heartbeat must match the account's expected ERP identity; a second fresh worker or identity mismatch is non-executable, with failover only after staleness. | +| Browser worker selection | Immutable task assignee | One fresh account-bound browser connection | The heartbeat must prove the expected ERP identity from one unique login node by normalized exact equality; missing, duplicate, blank, substring-only, or mismatched identity is non-executable, with failover only after staleness. | | Account-scoped ERP queue | Confirmed task assignee | Assigned account's browser worker | Organization-plus-account advisory locking preserves FIFO and at most one active execution for that account; another account's active, queued, stale, or uncertain work is outside this queue. | -| Executable event and result routing | Immutable task assignee | Matching authenticated platform page and plugin | SSE history/live events, claims, plugin results, and browser cleanup commands never use administrator-wide visibility and fail closed when the authenticated account is not the assignee. | -| Task removal | Authorized operator | Archive/restore or permanent force delete | Archive/restore remains reversible and state-gated. Explicit force delete has no lifecycle-state gate, removes task-owned platform records atomically, retains a minimal deletion audit marker, and performs post-commit artifact/plugin cleanup best effort. | +| Executable event and result routing | Immutable task assignee | Matching authenticated employee page and plugin | Task APIs, SSE history/live events, claims, plugin results, and browser cleanup commands require a team-lead/user session matching the assignee; administrators are rejected before task handling. | +| Task removal | Owning employee | Archive/restore or permanent force delete | Archive/restore remains reversible and state-gated. Explicit owner force delete has no lifecycle-state gate, removes task-owned platform records atomically, retains a minimal deletion audit marker, and performs post-commit artifact/plugin cleanup best effort. Administrators cannot invoke either path. | | Confirmation export | ERP source file | Archived source plus mobile delivery artifact | Visitor XLS becomes real XLSX; other types prefer PDF | | Release | Editable source | `dist/release-manifest.json` and versioned artifacts | Manifest owns current hashes and filenames | ## State Ownership -- PostgreSQL owns durable control-plane account, role, expected ERP identity, task-route grant, AgentBus channel owner, immutable task assignee, account-scoped queue/lease state, browser worker, session, confirmation, audit, archive, outcome state, and revisioned team-lead notification subscriptions/deliveries. Notification destinations and payloads remain encrypted at rest. A force-deleted task no longer exists in task state; only its minimal non-content deletion audit marker remains, while an already delivered external message cannot be retracted. +- PostgreSQL owns durable control-plane account, management/task-plane role constraints, exact expected ERP identity, employee task-route grant, AgentBus channel owner, immutable task assignee, account-scoped queue/lease state, browser worker, session, confirmation, audit, archive, outcome state, and revisioned team-lead notification subscriptions/deliveries. Migration 021 removes and rejects administrator task principals. Notification destinations and payloads remain encrypted at rest. A force-deleted task no longer exists in task state; only its minimal non-content deletion audit marker remains, while an already delivered external message cannot be retracted. - Production attachment bytes use the configured OSS provider; normalized sensitive fields remain encrypted. - Chrome extension local state is bounded execution/reconciliation support, not canonical business history. - `.project-docs/30-worklog/tasks/` owns task-local project memory; canonical project state is an integrated projection. ## External Interfaces -- Operator workbench at the control-plane service. +- Employee task workbench and separate administrator management pages at the control-plane service. - AgentBus WebSocket channels and attachment delivery. - Logged-in ERP browser pages under the Chrome extension host permissions. - PostgreSQL, OSS, deployment gateway, and authenticated artifact download. diff --git a/.project-docs/20-architecture/system-overview.md b/.project-docs/20-architecture/system-overview.md index e4dcfb4..214bc3f 100644 --- a/.project-docs/20-architecture/system-overview.md +++ b/.project-docs/20-architecture/system-overview.md @@ -2,7 +2,7 @@ ## Current Architecture -Authenticated manual or account-bound AgentBus input is routed through task-scoped AI/Shadow/Auto/Program orchestration into one validated operation contract. The control plane owns account, channel owner, immutable task assignee, account-scoped execution queue, browser worker, session, task-type authorization, confirmation, audit, reversible archive, explicit force-delete behavior, and role-driven automatic team-lead task-summary projection. The Chrome extension verifies the expected ERP account, resolves the unique ERP object, enforces page and write gates, performs native actions, and returns action-specific evidence. +Authenticated employee manual or account-bound AgentBus input is routed through task-scoped AI/Shadow/Auto/Program orchestration into one validated operation contract. The control plane separates the administrator management plane from the employee task data plane and owns account, channel owner, immutable task assignee, account-scoped execution queue, browser worker, session, task-type authorization, confirmation, audit, reversible archive, explicit owner force-delete behavior, and role-driven automatic team-lead task-summary projection. The Chrome extension verifies the expected ERP account from one unique login identity node by normalized exact equality, resolves the unique ERP object, enforces page and write gates, performs native actions, and returns action-specific evidence. ## Main Components @@ -10,7 +10,7 @@ Authenticated manual or account-bound AgentBus input is routed through task-scop |---|---|---| | `agent设计规范/` | Agent Prompt, five parsing Skills, business templates, business registry, and stable fixtures | Editable source for business semantics; not runtime evidence | | `schemas/` and `mappings/` | Parse-state, execution-state, ERP form, field, and lifecycle contracts | Current contracts only | -| `control-plane/` | Task/session persistence, parser orchestration, confirmation, audit, AgentBus channel ownership, task assignment, browser workers, attachments, receipts, encrypted leader-summary projection/outbox, and structured diagnostics | TypeScript source; build output goes to `.build/` | +| `control-plane/` | Management/task-plane authorization, task/session persistence, parser orchestration, confirmation, audit, AgentBus channel ownership, task assignment, browser workers, attachments, receipts, encrypted leader-summary projection/outbox, and structured diagnostics | TypeScript source; build output goes to `.build/`; migration 021 enforces administrator isolation | | `LianSyn-platform/` | Operator workbench and external parser adapter | Source and UI, not local task output | | `chrome-extension/ltjt-order-assistant/` | Logged-in ERP resolution, preflight, native execution, response handling, requery, and dormant idle/reload safety handlers | Current server/platform does not trigger automatic updates; any code change requires synchronized versioned release updates | | `dist/` | Versioned current deliverables and machine-readable release manifest | Not a compilation directory | @@ -21,19 +21,19 @@ Authenticated manual or account-bound AgentBus input is routed through task-scop - AI/Program parsing and ERP resolution/execution share the final operation contract but do not share authority. - Platform envelope fields such as task ID, account identity, authorization revision, session, parser decision, confirmation, transport, and audit never enter the business operation. -- The product is one fixed internal organization scope with three roles. Administrators manage accounts, channels, and all 18 manual routes; team leads and users are owner-scoped for normal tasks and require explicit per-route grants. Team leads additionally receive a dedicated read-only, manual-task-only platform-operations dashboard. Administrator-wide visibility does not permit executing another account's assigned ERP work. +- The product is one fixed internal organization scope with three roles. Administrators are management-plane-only identities: they manage accounts, channels, employee route grants, parser routing, automation settings, and audit but cannot create, inspect, mutate, stream, claim, reconcile, delete, or execute business tasks. Team leads and users require explicit per-route grants and are owner-scoped for normal task operations. Team leads alone receive a dedicated organization-wide, read-only platform-operations dashboard over durably assigned manual and AgentBus tasks. - Account passwords are accepted when non-empty without an application-level length rule. First-login forced password changes are disabled; voluntary changes and administrator resets still revoke the relevant sessions, while the historical `must_change_password` column remains compatibility-only storage. -- The leadership dashboard is an aggregate-first projection across task, person, original input, final output, time, task type, and completion state. Summary cards are display-only; filtering is explicit and defaults to all results. List reads use one bounded read-only database transaction, SQL prefiltering, selective historical-message hydration, and full detail projection only for the current 20-row page. Its drill-through stays business-facing; technical payloads, internal identifiers, machine-shaped historical input, and technical failure text remain in separate authorized audit/engineering surfaces. +- The leadership dashboard is an aggregate-first projection across assigned task, employee, original input, final output, time, task type, and completion state. It includes only durably assigned `manual` and `agentbus` work and uses immutable `assigned_user_id` for rankings, people filters, search, pagination, and detail; historical unassigned AgentBus rows are excluded. Summary cards are display-only; filtering is explicit and defaults to all results. List reads use one bounded read-only database transaction, SQL prefiltering, selective historical-message hydration, and full detail projection only for the current 20-row page. Its drill-through stays business-facing; technical payloads, internal identifiers, machine-shaped historical input, and technical failure text remain in separate authorized audit/engineering surfaces. - Team-lead task summaries are a separate role-driven read projection, not an extension of dashboard, task, or ERP authority. An active leader with an enabled owned AgentBus channel is automatically subscribed to future stable manual and AgentBus outcomes for other non-admin employees. Routing comes from the current owner's latest valid inbound route or channel external-user reference, remains encrypted, fails closed when unavailable or stale, and never copies raw instructions, attachments, customer/traveller data, URLs, or technical errors. -- Authorization is enforced in server and service paths, not by navigation visibility. A denied or unresolved non-admin business route stops before parsing, plugin dispatch, and ERP execution; creator authorization is rechecked at confirmation and browser claim. +- Authorization is enforced in database, server, and service paths, not by navigation visibility. An administrator task-data-plane request fails before task storage or execution logic. A denied or unresolved employee business route stops before parsing, plugin dispatch, and ERP execution; assignee authorization is rechecked at confirmation and browser claim. - Each enabled AgentBus channel owns one active non-admin employee account. Inbound work uses that account and route allowlist, persists the same account as immutable task assignee, and is returned only to that account's executable feed. A team-lead channel may additionally carry its leader's lower-priority proactive summary outbox; those rows use explicit destination/conversation routing and never become executable task traffic. -- Each employee account has one expected ERP identity and at most one fresh browser execution worker. Mismatched ERP identity, concurrent fresh workers, unbound channels, or unassigned tasks fail closed. Browser claims, active-execution checks, and confirmed FIFO are serialized per immutable task assignee, so one account cannot block or occupy another account's queue. -- Administrator-wide task visibility is a read model, not an executable feed. Task SSE history/live events, browser claims, plugin-result ingestion, and browser cleanup commands are always scoped to the authenticated account matching `assigned_user_id`, including for administrators. -- Extension `0.5.167` is the current manually published/loaded plugin baseline. It retains an idle-proof and guarded-reload message protocol, but the active control plane has no extension-release tables, ECS host mapping, OSS publication endpoint, Cloud Assistant dispatcher, or platform trigger; required migration remains 018. +- Each employee account has one expected ERP identity and at most one fresh browser execution worker. The extension accepts ERP identity only from exactly one `#Lable_UserName` login node and normalized full equality; missing, duplicate, blank, substring-only, or unrelated body-text matches fail closed without returning the observed identity. Concurrent fresh workers, unbound channels, or unassigned tasks also fail closed. Browser claims, active-execution checks, and confirmed FIFO are serialized per immutable task assignee, so one account cannot block or occupy another account's queue. +- Administrators have no task read or execution model. Task lists/details, attachments, artifacts, lifecycle mutations, SSE history/live events, browser claims, plugin-result ingestion, and browser cleanup commands require a `team_lead` or `user` session matching `assigned_user_id`; the team-lead dashboard and notification outbox remain separate read projections. +- Extension `0.5.169` is the current manually published/loaded plugin baseline, and the five Skills plus operator instruction DOCX are at `0.5.126`. The extension retains an idle-proof and guarded-reload message protocol, but the active control plane has no extension-release tables, ECS host mapping, OSS publication endpoint, Cloud Assistant dispatcher, or platform trigger; required migration is 021. - Creator and manual input-turn attribution remain durable while business input stays encrypted at rest. Routine removal is reversible archive/restore. Separately confirmed force delete physically removes an authorized task regardless of lifecycle state, retains only a minimal non-content deletion audit marker, and cannot undo an ERP write that already occurred. - Unknown, ambiguous, unverified, or post-write-uncertain states fail closed; automatic retries must not create duplicate writes. - PostgreSQL is the sole required durable database/state middleware, and the production artifact provider is OSS. Redis, message queues, MongoDB, and search services are not runtime dependencies. -- Migrations through `020_leader_task_summary_notifications` must complete before the updated application starts; migration 019 remains intentionally absent after the extension-updater rollback. The current ACK topology starts with one application replica because AgentBus listeners and SSE emission are process-local; horizontal scale requires explicit coordination first. +- Migrations through `021_admin_task_data_plane_isolation` must complete before the updated application starts; migration 019 remains intentionally absent after the extension-updater rollback. Migration 021 removes legacy administrator task principals and enforces future management/task-plane separation. The current ACK topology starts with one application replica because AgentBus listeners and SSE emission are process-local; horizontal scale requires explicit coordination first. - Operational diagnostics are privacy-safe structured JSON on stdout/stderr. Docker owns bounded rotation; repository files and a second mutable log database are not log sinks. - In the trusted internal deployment, AgentBus roster attachment downloads may resolve to private/reserved addresses. Credential-free HTTPS, DNS resolution/pinning, redirect revalidation, size, timeout, and digest checks remain mandatory, and trusted channels/bridges own the network-input boundary. - Canonical project memory is updated only under Integration Gate; feature tasks write only their task-scoped records. @@ -49,6 +49,7 @@ Authenticated manual or account-bound AgentBus input is routed through task-scop - AUTH-001 - AUTH-002 - AUTH-003 +- AUTH-004 ## Last Updated diff --git a/.project-docs/30-worklog/current-state.md b/.project-docs/30-worklog/current-state.md index 0fc3b56..5b69c35 100644 --- a/.project-docs/30-worklog/current-state.md +++ b/.project-docs/30-worklog/current-state.md @@ -4,10 +4,14 @@ This file is the integrated default-branch snapshot. Feature tasks record progre ## Integrated Through +- Source commit `a2378c8` from feature task `20260907-admin-task-data-plane-isolation-c3a7e91b`, integrated as `fd39347`, for the management-plane-only administrator role, task-data-plane denial at UI/HTTP/service/database boundaries, team-lead-only operations dashboard, and migration `021_admin_task_data_plane_isolation`; integration task `20260907-integrate-all-changes-9d2e7c41` accepted AUTH-004 and reconciled the administrator boundary. +- Source commit `9043ad6eda0deb2a620e1303467d1c3bd80374ed` from feature task `20260907-leader-kanban-all-members-73c9e1a4`, integrated as `03d0131`, for the assignee-based team-lead dashboard over all durably assigned manual and AgentBus tasks. +- Source commit `af9c90a3142e197493e80d74333af876c3bb947a` from feature task `20260907-ignore-extra-roster-fields-a6e4c9f2`, integrated as `9d1a6b4`, for required-field-only passenger-workbook normalization `v1.4.0`, ignored non-import columns, and synchronized Skill/business-instruction release `0.5.126`. +- Source commit `5b57df0e10fc6c6c0b2f9eeef300e36508055acc` from feature task `20260907-fix-erp-account-verification-4d8c2a71`, integrated as `8f70cba`, for unique-login-node exact ERP identity verification and synchronized extension `0.5.168`. - Source commit `0b3aa5c42d5810761dd3d6bc6deee1dc4af5fd00` from feature task `20260907-auto-leader-summary-routing-5e8c1a73` for automatic role-driven team-lead summaries, current-owner AgentBus route learning/fallback, read-only status UI, stale-route cancellation, and removal of the manual mutation endpoint; integration task `20260907-integrate-auto-leader-summary-9a4d2c61` revised AUTH-003 and canonical notification behavior. - Source commit `1a3ab63` from feature task `20260907-implement-leader-agentbus-copy-b7e31a94` for default-off team-lead task summaries over future manual and AgentBus outcomes, a separate encrypted/revisioned outbox, verified proactive AgentBus routing, administrator configuration/health UI, and migration 020; integration task `20260907-integrate-leader-summaries-84c1d7ea` accepted AUTH-003 and canonical notification boundaries. -- Correction commit `fe1cc2cddc29e4dead81e53c16d31bb71493602d` from integration task `20260903-backup-revert-extension-update-c71a4e92` preserved the complete former `0.5.167`/migration-019 stack at remote branch `codex/backup-extension-update-20260903-b2e33e2`, removed the central private-OSS/ECS automatic-update service architecture without rewriting history, and retained the exact Chrome extension `0.5.167` source/package on the active main line with migration 018. -- Merge commit `3224758` and integration task `20260903-finalize-extension-update-a6c4e192` remain historical records of the full-stack extension-update design. Only the plugin `0.5.167` release, adaptive entry readiness, and dormant plugin-side idle/reload safeguards remain active; the server orchestration is preserved on the backup branch only. +- Correction commit `fe1cc2cddc29e4dead81e53c16d31bb71493602d` from integration task `20260903-backup-revert-extension-update-c71a4e92` preserved the complete former `0.5.167`/migration-019 stack at remote branch `codex/backup-extension-update-20260903-b2e33e2`, removed the central private-OSS/ECS automatic-update service architecture without rewriting history, and retained exact extension `0.5.167` with migration 018 at that correction point. +- Merge commit `3224758` and integration task `20260903-finalize-extension-update-a6c4e192` remain historical records of the full-stack extension-update design. Adaptive entry readiness and dormant plugin-side idle/reload safeguards remain in the later `0.5.169` release; server orchestration is preserved on the backup branch only. - Commit `c4c469f4441d744627af2d34abe693b6783e833c` for the independently advanced remote deployment/extension line. - Commit `cd45ce17d0fcd25f7fa89ab9f8a391d3e904ecdf` for WeChat attachment correlation and privacy-safe server diagnostics. - Commit `161f90d09d6ad1368973b1a85d51059059495223` for trusted-intranet attachment compatibility and canonical reconciliation. @@ -35,7 +39,7 @@ This file is the integrated default-branch snapshot. Feature tasks record progre ## Current Focus -Operate the repository's current `0.5.167` extension baseline and fixed-scope account model safely, bind each enabled AgentBus channel to one employee/ERP identity, provision narrow route grants, use explicit leadership-dashboard filters, and preserve Program/AI plus per-assigned-account ERP execution boundaries. Same-account tasks remain FIFO and single-active; distinct accounts are independent, and administrator or team-lead visibility never enters another account's executable event/result path. Active team leads with usable owned AgentBus routes automatically receive future privacy-bounded summaries; migration 020, manual extension reload, guarded product-search retry, service rollout, and any live AgentBus/WeChat canary remain separately authorized runtime work. Server-side automatic extension updating is not part of the active main line. +Operate the repository's current extension `0.5.169`, Skill/business-instruction `0.5.126`, roster normalizer `v1.4.0`, and migration-021 fixed-scope account model safely. Administrators manage accounts, channels, employee grants, parser routing, automation settings, and audit but never enter the task data plane. Team leads/users own normal task operations through immutable assignment; same-account work remains FIFO and single-active while distinct accounts are independent. Team leads alone receive the read-only assignee-based dashboard over assigned manual and AgentBus work and automatic future privacy-bounded summaries through usable owned AgentBus routes. Migration 021, manual extension reload, guarded product-search retry, service rollout, and any live AgentBus/WeChat canary remain separately authorized runtime work. Server-side automatic extension updating is not part of the active main line. ## Recently Completed @@ -59,20 +63,25 @@ Operate the repository's current `0.5.167` extension baseline and fixed-scope ac - 2026-09-02: Integrated extension `0.5.165`: scatter-plan creation and independent batch-order creation now try loaded product candidates, then the form's native non-empty `S_chanpinming` search, and finally one bounded empty-query compatibility reload. A user-authorized search-only ERP check returned exactly one target row in both forms without selecting or saving it; zero or multiple local matches continue to fail closed. - 2026-09-03: Accepted AUTH-002 and integrated account-scoped ERP queues. Each immutable assignee now owns one FIFO/single-active claim partition, different accounts no longer block one another, and executable SSE/results/cleanup commands are owner-only even when an administrator is signed in. - 2026-09-03: Restored explicit permanent force deletion as a separate operation from reversible archive/restore. It bypasses lifecycle-state gates, physically removes task-owned platform records, retains a minimal deletion audit marker, performs post-commit cleanup best effort, and warns that prior ERP effects are not rolled back. -- 2026-09-03: Backed up the complete adaptive-readiness and central extension-update stack at remote branch `codex/backup-extension-update-20260903-b2e33e2`, then removed the central OSS/ECS update service and migration 019 from `main` with normal history-preserving commits. After correcting an initially over-broad rollback, the active repository retains the exact extension `0.5.167` source/package and uses migration 018; the removed server architecture was never deployed by these tasks. +- 2026-09-03: Backed up the complete adaptive-readiness and central extension-update stack at remote branch `codex/backup-extension-update-20260903-b2e33e2`, then removed the central OSS/ECS update service and migration 019 from `main` with normal history-preserving commits. At that rollback point the repository retained exact extension `0.5.167` with migration 018; the plugin and schema later advanced independently without restoring the removed server architecture. - 2026-09-07: Integrated AUTH-003 and migration 020 for administrator-managed team-lead task summaries. Future stable manual/AgentBus outcomes for other non-admin employees project into a separate encrypted outbox and use the leader's verified AgentBus/WeChat target without changing task ownership, employee reply priority, or ERP execution authority. - 2026-09-07: Revised AUTH-003 so active team-lead identity plus an enabled owned AgentBus channel automatically activates both-source summaries. Routing uses only the current owner's latest valid inbound route or the channel external-user reference; channel rebind clears stale identity data, the settings API/UI is read-only, and all prior privacy, future-only, revision, priority, and no-ERP-authority boundaries remain. +- 2026-09-07: Advanced the synchronized Chrome extension to `0.5.168`; expected ERP identity is accepted only from one unique login account node with normalized exact equality, never from whole-page substring matching. +- 2026-09-07: Advanced the synchronized Chrome extension to `0.5.169`; uncertain ERP writes now direct manual read-only verification to the immutable task owner instead of an administrator who has no task-data-plane access. +- 2026-09-07: Advanced passenger-workbook normalization to `v1.4.0` and the five Skills plus operator instruction DOCX to `0.5.126`. Only required ERP source semantics participate in extraction; ordinary non-import columns are ignored and excluded from canonical TSV while active-content safety remains workbook-wide. +- 2026-09-07: Expanded the team-lead operations dashboard to every durably assigned manual and AgentBus task using immutable assignment as the employee dimension; unassigned historical AgentBus rows remain excluded. +- 2026-09-07: Accepted AUTH-004 and migration 021. Administrators are management-plane-only, cannot access task APIs, browser workers, task routes, dashboards, summaries, or task principals, and role promotion removes legacy executable bindings. ## In Progress - The standard database currently contains one administrator account and no non-administrator task grants. Multi-account operational smoke testing remains for an administrator-led staging window. -- Required migrations through `020_leader_task_summary_notifications`, employee ERP identities/channel bindings, extension `0.5.167`, account-scoped queue/routing changes, force-delete behavior, and the merged dashboard/automatic-notification runtime changes have not been applied to or restarted on the standard service in this integration task. No live automatic team-lead delivery canary was performed. +- Required migrations through `021_admin_task_data_plane_isolation`, employee ERP identities/channel bindings, extension `0.5.169`, account-scoped queue/routing changes, owner force-delete behavior, roster `v1.4.0`, and the merged dashboard/automatic-notification/administrator-isolation runtime changes have not been applied to or restarted on the standard service in this integration task. No live automatic team-lead delivery canary was performed. ## Next Recommended Steps -1. In an explicitly authorized staging/rollout window, back up PostgreSQL, apply all migrations through 020, restart the control plane, manually load extension `0.5.167`, verify its runtime handshake, configure employee ERP identities and channel bindings, and run the multi-cloud-PC/identity/failover plus account-queue matrix before production assurance. -2. Through the administrator UI, create representative team-lead and ordinary accounts, assign narrow task grants, and verify owner isolation, leadership dashboard reads, grant/revoke behavior, and denial prompts without ERP writes. -3. In the same authorized staging window, verify that an administrator receives no employee executable events/results, then force-delete disposable waiting and active employee tasks and confirm database absence plus cleanup only in the owning employee plugin. +1. In an explicitly authorized staging/rollout window, back up PostgreSQL, apply all migrations through 021, deploy the control plane and platform assets together, restart the service, manually load extension `0.5.169`, and verify readiness plus the exact-account handshake. +2. Through the administrator management UI, create representative team-lead and ordinary accounts, assign narrow task grants and channels, and verify that administrator task pages/APIs/workers fail closed while employee routes remain usable. +3. With separate team-lead and employee sessions, verify owner isolation, both-source leadership-dashboard reads, same-account FIFO, cross-account independence, mismatched ERP identity, worker conflict/failover, and owner-performed waiting/active force deletion without unintended ERP writes. 4. With explicit authorization, run a live read-only ERP verification of the shared-mother-plan `tid-only` whole-visitor export path. 5. With explicit authorization, perform ERP write verification for independent-order SGL/TWN and adult/child/leader headcount mappings. 6. With explicit external-send authorization, use one controlled team-lead channel to verify automatic current-owner route resolution, proactive `task.summary` handling, and stable-frame deduplication through AgentBus/WeChat, then observe one manual and one AgentBus task before wider assurance. @@ -81,8 +90,10 @@ Operate the repository's current `0.5.167` extension baseline and fixed-scope ac - Shared-mother-plan whole-visitor export has historical read evidence and static coverage but lacks a fresh authorized runtime ERP read verification. - Independent-order SGL/TWN and four headcount categories lack authorized current-version ERP write evidence. -- The standard service was last restarted before commits `3062ed5`, `b5f5847`, `cc09506`, `336ca6e`, `e4fd916`, and `d09b303`; its runtime schema, extension, account UI, queue/routing, force-delete, and dashboard behavior must not be represented as the newly integrated repository state until an authorized rollout. -- AgentBus account-worker routing still lacks a live two-employee/two-cloud-PC staging matrix covering mismatched ERP login, same-account device conflict, 90-second stale failover, same-account FIFO, cross-account independence, administrator executable-feed isolation, and both manual and automatic channel work. +- The standard service was last restarted before commits `3062ed5`, `b5f5847`, `cc09506`, `336ca6e`, `e4fd916`, `d09b303`, and the 2026-09-07 integration commits; its runtime schema, extension, account UI, queue/routing, owner force-delete, roster normalization, administrator isolation, and dashboard behavior must not be represented as the newly integrated repository state until an authorized rollout. +- AgentBus account-worker routing still lacks a live two-employee/two-cloud-PC staging matrix covering unique-node exact ERP identity, mismatched login, same-account device conflict, 90-second stale failover, same-account FIFO, cross-account independence, administrator task-data-plane denial, and both manual and automatic channel work. +- Administrator migration 021 and the team-lead dashboard's assigned manual/AgentBus scope have repository and disposable-database evidence but no deployed multi-role browser canary. +- The exact user-supplied workbook could not be replayed after the roster `v1.4.0` fix because its temporary shared-pasteboard file expired; synthetic regressions cover ignored populated identity-card and ordinary extra columns without preserving passenger data. - Lifecycle-independent force deletion has repository regression evidence but lacks an authorized runtime smoke test for waiting/active deletion, database absence, OSS cleanup, and owner-plugin-only cleanup. - A live internal AgentBus attachment verification remains separately unperformed. - Proactive team-lead `task.summary` delivery has repository, mock-WebSocket, and disposable-PostgreSQL evidence but no deployed AgentBus/WeChat canary; automatic current-owner route resolution remains unverified in the live bridge. @@ -92,8 +103,8 @@ Operate the repository's current `0.5.167` extension baseline and fixed-scope ac - Any ERP write, uncertain post-write state, automatic retry, or scope widening. - Passenger workbook normalization, encrypted attachment persistence, leader-contact projection, and native ERP row capacity. - AgentBus channels and their upstream bridge are now a trusted network boundary because attachment URLs may target internal HTTPS hosts. -- Account role changes, session revocation, creator-based task-route revocation, cross-user dashboard projection, and encrypted input audit are security-sensitive boundaries. -- AgentBus channel ownership, immutable task assignment, expected ERP identity, browser-worker freshness/failover, and administrator non-execution are security- and write-safety-sensitive boundaries. +- Account role changes, migration-021 principal cleanup/triggers, administrator task-plane denial, session revocation, creator-based task-route revocation, cross-source assignee-based dashboard projection, and encrypted input audit are security-sensitive boundaries. +- AgentBus channel ownership, immutable task assignment, unique-node exact expected ERP identity, browser-worker freshness/failover, and administrator management/task-plane separation are security- and write-safety-sensitive boundaries. - Account-scoped advisory locking, per-assignee FIFO queries, executable SSE/result routing, and irreversible force deletion are concurrency-, authorization-, and evidence-sensitive boundaries. - Team-lead automatic route derivation, stale-owner invalidation, encrypted projection/delivery rows, at-least-once stable-frame deduplication, privacy allowlisting, and non-retractable external delivery are authorization- and disclosure-sensitive boundaries. - Release synchronization across extension source, minimum platform version, mapping, ZIP, Skills, DOCX, and `dist/release-manifest.json`. diff --git a/.project-docs/30-worklog/task-history.md b/.project-docs/30-worklog/task-history.md index 0c49b32..80fe6c0 100644 --- a/.project-docs/30-worklog/task-history.md +++ b/.project-docs/30-worklog/task-history.md @@ -13,3 +13,4 @@ This is integrated history. Feature tasks write only their task-scoped records; | 2026-09-03 | Extension-update iteration backup and scoped rollback | Preserved exact commit `b2e33e2` on remote branch `codex/backup-extension-update-20260903-b2e33e2`, removed migration 019 and server-side automatic updating, and retained extension `0.5.167` plus migration 018 through non-force commits. | [Rollback task](tasks/20260903-backup-revert-extension-update-c71a4e92.md) | | 2026-09-07 | Team-lead AgentBus task summaries | Integrated default-off future-only summaries for other non-admin employees' manual/AgentBus outcomes through a separate encrypted outbox and verified proactive target, without changing task or ERP authority. | [Integration task](tasks/20260907-integrate-leader-summaries-84c1d7ea.md) | | 2026-09-07 | Automatic leader-summary routing correction | Replaced the duplicate administrator subscription form with role-driven activation and current-owner AgentBus route resolution while retaining future-only privacy and delivery boundaries. | [Integration task](tasks/20260907-integrate-auto-leader-summary-9a4d2c61.md) | +| 2026-09-07 | Exact identity, roster selection, leader oversight, and administrator isolation | Integrated extension `0.5.169`, roster normalizer `v1.4.0`/Skill `0.5.126`, assigned manual+AgentBus leadership reporting, AUTH-004, and migration 021; repository/runtime rollout remains separate. | [Integration task](tasks/20260907-integrate-all-changes-9d2e7c41.md) | diff --git a/.project-docs/30-worklog/tasks/20260907-integrate-all-changes-9d2e7c41.md b/.project-docs/30-worklog/tasks/20260907-integrate-all-changes-9d2e7c41.md new file mode 100644 index 0000000..7a67e39 --- /dev/null +++ b/.project-docs/30-worklog/tasks/20260907-integrate-all-changes-9d2e7c41.md @@ -0,0 +1,61 @@ +# Task: Integrate all pending changes and push main + +## Identity + +- Task ID: 20260907-integrate-all-changes-9d2e7c41 +- Mode: Integration +- Branch: codex/20260907-integrate-all-changes-9d2e7c41-integrate-all-changes +- Worktree: /Users/inmanx/Documents/lwltAPI-integrate-all-changes-9d2e7c41 +- Base commit: 6bdaa2a6e6b6006241ee324ad0e8736f79bae7fd +- Owner: codex +- Status: In Progress + +## Scope + +- Audit every local branch and linked worktree against current `main` and `origin/main`, preserving occupied or unrelated dirty worktrees. +- Integrate source commits `5b57df0`, `af9c90a`, `9043ad6`, and `a2378c8` for exact ERP identity, required-field-only roster normalization, cross-source leader dashboard visibility, and administrator task-data-plane isolation. +- Resolve overlapping control-plane documentation, dashboard query, authorization, release, and test changes semantically. +- Promote the accepted source outcomes into canonical project memory, run repository and artifact verification, then push the integrated tree to `origin/main` without force. + +## Intent And Constraints + +- The user explicitly authorized integrating all pending repository changes into the main branch and pushing the result. +- Preserve `AUTH-002` account-scoped execution and `AUTH-003` leader-summary privacy while applying the user-confirmed replacement of administrator task visibility with a management-plane-only administrator role. +- Keep the leadership dashboard read-only and team-lead-only, but include every durably assigned `manual` and `agentbus` task and use immutable assignment as the employee dimension. +- Preserve exact-account behavior from extension `0.5.168`, then publish synchronized extension `0.5.169` so uncertain-write recovery names the immutable task owner; preserve Skill/business-instruction `0.5.126`, roster normalizer `v1.4.0`, and required migration `021` as current baselines. +- Do not merge historical diagnosis, recovery, rollback, superseded, or patch-equivalent branches merely because their tips are not ancestors of `main`. +- Do not modify source task records. The source diffs are applied without their task-owned records; integration progress is recorded only in this task record and canonical documents. +- Do not read `.env`, run production migrations, deploy or restart services, reload extensions, access or write ERP, mutate runtime tasks/accounts/channels, or send external messages. + +## Outcome + +- Audited every local branch and linked worktree against `main`/`origin/main`. Integrated the four distinct pending product changes and left patch-equivalent, superseded, diagnostic, recovery, and rollback branches out of the mainline. +- Recovered the known administrator-isolation dirty worktree under formal task ownership, committed it as source commit `a2378c8`, and preserved the unrelated occupied local `main` worktree without stashing, resetting, cleaning, or modifying it. +- Applied the source outcomes as integration commits `8f70cba` (exact ERP identity), `9d1a6b4` (required-field-only roster import), `03d0131` (all durably assigned team-lead dashboard tasks), and `fd39347` (administrator management-plane isolation). The overlapping `control-plane/README.md` conflict was resolved semantically. +- Accepted `AUTH-004` and reconciled authorization, architecture, business rules, evidence, commitments, and current-state memory around management-plane-only administrators, immutable task ownership, and team-lead-only read access. +- Advanced the synchronized Chrome extension baseline to `0.5.169`, changed uncertain-write guidance to require the task-owning account, archived the superseded `0.5.168` release, and created `dist/ltjt-order-assistant-0.5.169.zip` with SHA-256 `00ad06a1640d36cfe7df8c9e52d677131793c70d493392b551b7ecbd965c854b`. +- Preserved Skill/business-instruction version `0.5.126`, roster normalizer `ltjt-passenger-roster-workbook-v1.4.0`, and required schema migration `021_admin_task_data_plane_isolation`. +- Source task records remained untouched; all integration-specific decisions and verification are recorded here. The prepared integration tree still requires its final non-force push and remote-head verification. + +## Verification + +- Passed focused source regressions: exact ERP identity `3/3`, account authorization plus roster normalization `27/27`, and team-lead dashboard `5/5`. +- Passed `node --run check:repo` (`10/10`) and `node --run check`. +- Passed `node --run test:control-plane` (`180/180`) and `node --run test:legacy` (`273/273`). The legacy suite was rerun successfully after correcting its expected synchronized extension version. +- Passed `node --run build` and direct JavaScript syntax checks for the changed extension/runtime files. +- Passed final focused static regressions for control-plane authorization and owner-confirmation wording (`55/55`) and lifecycle/release contracts (`59/59`). +- Passed all five official Skill validators. +- Passed extension ZIP integrity, manifest SHA-256 verification, and exact package/source file-set comparison for `0.5.169`. +- Rendered all 12 pages of `dist/老挝联泰AI指令表-0.5.126.docx` with the bundled document renderer and configured Chinese fonts; visual inspection found no missing glyphs, clipping, overlap, or broken layout. +- Passed `git diff --check`, JSON parsing, conflict-marker scanning, and the final active-tree scan for stale administrator-confirmation wording; the only matches are negative regression assertions. +- Passed final `check_project_docs.py` and task-scoped `check_doc_drift.py`; remote push verification remains pending the closing task-record update. + +## Follow-ups + +- Apply migration `021_admin_task_data_plane_isolation`, deploy/restart services, distribute/reload extension `0.5.169`, and perform live ERP/runtime verification only in a separately authorized rollout. +- Exact customer-workbook validation remains unavailable in this repository; required-field-only behavior is covered by synthetic workbook regressions. +- No additional distinct merge candidate remained after the branch/worktree audit. + +## Promotion Candidates + +- None recorded. diff --git a/.project-docs/40-domain/business-rules.md b/.project-docs/40-domain/business-rules.md index 52f7787..2d45820 100644 --- a/.project-docs/40-domain/business-rules.md +++ b/.project-docs/40-domain/business-rules.md @@ -6,16 +6,16 @@ - Manual and AgentBus tasks share the same 18 machine routes, task-scoped parser mode snapshot, and organization automation rules. AgentBus intake evaluates the bound employee account's route grants rather than an administrator or whichever browser is online. - The platform exposes one fixed deployment scope, not an organization-management product. Accounts use `admin`, `team_lead`, and `user` roles. - Passwords must be non-empty but have no application-level length restriction. First login and administrator password reset do not force a subsequent password change; users may still change passwords voluntarily, administrators may reset them, and password changes revoke existing sessions according to the account lifecycle contract. -- Administrators always hold all 18 manual business routes. Team leads and ordinary users start with no task grants, require explicit administrator allowlists, and may use normal task APIs only for their own manual tasks. -- A known ungranted route or a non-unique/unresolved route for a non-administrator fails before parsing, plugin dispatch, or ERP execution. Authorization is rechecked for supplemental input, attachments, confirmation, automatic confirmation, and browser claim. -- Team leads may read all manual account work only through the platform-operations dashboard. The dashboard is aggregate-first across task, person, original input, final output, time, task type, and completion state, with business-facing drill-through. Its five summary cards are display-only; the explicit task-result filter defaults to all results. Internal attention or waiting-for-input states remain unchanged in task storage but are presented and filtered as “进行中”; the leadership view exposes no separate “待跟进” category. It is not an audit log and never renders technical payloads, internal identifiers, machine-shaped historical input, or technical failure text; this visibility does not grant cross-user task mutation, artifacts, SSE, global settings, audit administration, or AgentBus access. +- Administrators are management-plane-only identities. They manage accounts, roles, passwords, sessions, employee route grants, AgentBus channels, parser routing, automation settings, and audit, but hold no business routes and cannot create, inspect, mutate, stream, claim, reconcile, archive, restore, force-delete, or submit results for tasks. +- Team leads and ordinary users start with no task grants, require explicit administrator allowlists, and may use normal task APIs only for manual or AgentBus tasks immutably assigned to themselves. A known ungranted route or a non-unique/unresolved employee route fails before parsing, plugin dispatch, or ERP execution. Authorization is rechecked for supplemental input, attachments, confirmation, automatic confirmation, and browser claim. +- Team leads may read all durably assigned manual and AgentBus work only through the platform-operations dashboard; administrators cannot access it. The dashboard uses immutable `assigned_user_id` as the employee dimension, excludes historical AgentBus rows without a reliable assignee, and is aggregate-first across task, person, original input, final output, time, task type, and completion state with business-facing drill-through. Its five summary cards are display-only; the explicit task-result filter defaults to all results. Internal attention or waiting-for-input states remain unchanged in task storage but are presented and filtered as “进行中”; the leadership view exposes no separate “待跟进” category. It is not an audit log and never renders technical payloads, internal identifiers, machine-shaped historical input, or technical failure text; this visibility does not grant cross-user task mutation, artifacts, SSE, global settings, audit administration, or AgentBus access. - Separately, every active team lead with an enabled owned AgentBus channel and a usable current-owner route automatically receives an organization-wide task-summary projection for future manual and AgentBus tasks assigned to other non-admin employees. Only stable completed, failed, cancelled, uncertain, and uncertain-then-resolved outcomes qualify. The route and summary payload are encrypted, history is not backfilled, role/channel/routing invalidation cancels unsent rows, employee replies retain priority, and the message never includes raw instructions, attachments, customer/traveller data, URLs, or technical errors. This notification grants no task mutation, executable event, confirmation, browser, reconciliation, or ERP authority. -- Creator and input-turn attribution are durable, business inputs remain encrypted at rest, and denial audit excludes plaintext. Archive/restore is the reversible routine removal path. Explicit force delete is a separate irreversible operation that may physically remove an authorized task in any lifecycle state, retains only a minimal non-content deletion audit marker, and cannot undo ERP effects already written or retract a task summary already accepted by AgentBus/WeChat. -- Each non-admin employee may carry one case-insensitively unique expected ERP account and one AgentBus channel. New manual and AgentBus tasks persist an immutable assignee; only that account may confirm, claim, reconcile, resume, or submit ERP execution results. Administrators manage and inspect but do not execute another assignee's work. -- A browser is execution-ready only when it is the account's sole fresh worker and the active ERP session matches the expected account. Concurrent fresh workers, identity mismatch, unbound channels, and historical unassigned AgentBus tasks fail closed; stale failover waits 90 seconds. Claim locking, active-execution detection, confirmed FIFO, and queue position are scoped to immutable `assigned_user_id`: the same account stays serialized while different accounts execute independently. -- Administrator-wide task visibility never grants execution routing. Executable SSE history/live events, browser claims, plugin-result ingestion, and force-delete browser cleanup commands are scoped to the authenticated account matching the task assignee, so an administrator page or plugin cannot receive or process an employee's task. +- Creator and input-turn attribution are durable, business inputs remain encrypted at rest, and denial audit excludes plaintext. Archive/restore is the owning employee's reversible routine removal path. Explicit owner force delete is a separate irreversible operation that may physically remove that employee's task in any lifecycle state, retains only a minimal non-content deletion audit marker, and cannot undo ERP effects already written or retract a task summary already accepted by AgentBus/WeChat. Administrators cannot invoke task removal. +- Each non-admin employee may carry one case-insensitively unique expected ERP account and one AgentBus channel. New manual and AgentBus tasks persist an immutable assignee; only that account may confirm, claim, reconcile, resume, or submit ERP execution results. Administrators manage the account and channel configuration but cannot inspect or execute the employee's tasks. +- A browser is execution-ready only when it is the account's sole fresh worker and the active ERP session proves the expected account from exactly one `#Lable_UserName` login node by Unicode/whitespace/case-normalized full equality. Missing, duplicate, blank, substring-only, or unrelated page-text matches fail closed without exposing the observed account. Concurrent fresh workers, unbound channels, and historical unassigned AgentBus tasks also fail closed; stale failover waits 90 seconds. Claim locking, active-execution detection, confirmed FIFO, and queue position are scoped to immutable `assigned_user_id`: the same account stays serialized while different accounts execute independently. +- Administrators are rejected from the task data plane at the database, service, route, and UI boundaries. Executable task reads, SSE history/live events, browser claims, plugin-result ingestion, and force-delete browser cleanup commands require a team-lead/user session matching the task assignee. - The two passenger-list import routes are Program-only and wait for exactly one `.xls` or `.xlsx` attachment before deterministic normalization. -- Passenger workbooks must contain exactly one complete ERP-semantic header within rows 1–100. The header may be on row 1 or follow metadata, column order is arbitrary, and only the finite approved source/ERP aliases—including `NAME`, `证件号码`, `签发日`, and `身份证`—are mapped. Unknown or unheaded data columns, duplicate semantic fields, multiple candidate headers, and non-passport identity data fail closed; the internal 13-column canonical TSV contract remains unchanged. +- Passenger workbooks must contain exactly one complete ERP-semantic header within rows 1–100. The header may be on row 1 or follow metadata, column order is arbitrary, and only the finite approved aliases for the 12 required source semantics are selected. Identity-card, age, source document-type, hidden/local-formula, unheaded, and other ordinary non-import columns are ignored for row detection and selected-value validation and are never copied into the internal 13-column canonical TSV; canonical `证件类型` remains the implicit constant `护照`. Missing/duplicate required semantics, multiple candidate headers, unsafe selected formulas/results, non-contiguous selected rows, macros, external relationships, hyperlinks, and external formulas fail closed. - A WeChat attachment card is transport placeholder text, not file content. Only a structured `payload.attachments[]` entry can resume a roster task; missing metadata fails before ingestion and leaves the original task in `awaiting_attachment` instead of creating a new task. - The trusted internal deployment accepts credential-free HTTPS roster attachment URLs whose host is internal, private/reserved IPv4/IPv6, or localhost. DNS pinning, redirect revalidation, download timeout, byte limits, declared-size checks, and optional SHA-256 verification remain mandatory. - AgentBus attachment diagnostics may record stage, address count/family, status, byte count, code, outcome, and duration, but never URL, hostname, IP, file name, bytes, message text, or roster values. diff --git a/.project-docs/40-domain/glossary.md b/.project-docs/40-domain/glossary.md index 591feab..e83d1f0 100644 --- a/.project-docs/40-domain/glossary.md +++ b/.project-docs/40-domain/glossary.md @@ -10,4 +10,7 @@ | Program-only | Route must use the deterministic parser and may not fall back to AI | Applies to both passenger-list routes | | fresh requery | Read-only ERP verification performed after an action | Required except where an action-specific explicit-success credential is accepted | | no ERP write | Evidence-backed result that the write boundary was not crossed | Must not be inferred from an unknown post-submit failure | +| management plane | Account, channel, parser-routing, automation-setting, and audit administration available to `admin` | Excludes every business-task API, dashboard, browser worker, and task principal | +| task data plane | Business-task creation, reads, inputs, lifecycle mutations, events, browser execution, results, artifacts, and deletion | Available only to `team_lead`/`user`; normal operations require immutable ownership | +| immutable assignee | The durable `assigned_user_id` that owns task execution and employee attribution | Drives owner-only operations, per-account FIFO, and the cross-source team-lead dashboard | | Promotion Candidate | Task-scoped proposal for durable canonical memory | Accepted only through Integration Gate | diff --git a/.project-docs/50-evidence/evidence-index.md b/.project-docs/50-evidence/evidence-index.md index 6f25a8a..3d7df9a 100644 --- a/.project-docs/50-evidence/evidence-index.md +++ b/.project-docs/50-evidence/evidence-index.md @@ -20,9 +20,12 @@ Use this index for searchable, traceable evidence records. | 2026-09-02 | Leadership-dashboard filtering and summary interaction | Repository and focused regression verified; merged runtime not restarted | [Integration record](../30-worklog/tasks/20260902-integrate-all-push-c93a7f21.md) | Single-connection bounded reads, SQL prefiltering, selective hydration, 20-row paging, cancellation/timeout feedback, and display-only metric cards with explicit filters passed combined regression. | | 2026-09-02 | Native ERP product search for ordering forms | Root cause and live search-only behavior verified; repository/release verified; extension not reloaded | [Integration task](../30-worklog/tasks/20260902-integrate-product-search-3b7f6a20.md) | Both `plan_add.asp` and `orders_adds.asp` returned exactly one target product for the full keyword with radios left unchecked and no save; extension `0.5.165` now uses native non-empty search before its bounded empty-query fallback while retaining deterministic unique matching. | | 2026-09-03 | Account-scoped ERP queues, assignee-only executable routing, and force delete | Repository and full regression verified; runtime not deployed or mutated | [Integration task](../30-worklog/tasks/20260903-finalize-account-routing-7c4e2a91.md) | Source task `20260902-per-account-queue-hard-delete-a6d9f2c1` replaced global head-of-line blocking with per-assignee FIFO/advisory locks, isolated SSE/plugin-result/browser-command routing from administrator read visibility, and separated reversible archive from lifecycle-independent physical deletion. | -| 2026-09-03 | Adaptive ERP readiness and central extension host updates | Mixed disposition: plugin/release retained; server architecture reverted before production rollout | [Original integration task](../30-worklog/tasks/20260903-finalize-extension-update-a6c4e192.md) | Exact extension `0.5.167` source/package and adaptive readiness remain active. Migration 019 and central private-OSS/ECS orchestration are recoverable only at exact commit `b2e33e2` on remote branch `codex/backup-extension-update-20260903-b2e33e2`. | -| 2026-09-03 | Extension-update iteration scoped rollback | Backup ref verified; `0.5.167` retained; server/migration rollback and regression rechecked | [Rollback task](../30-worklog/tasks/20260903-backup-revert-extension-update-c71a4e92.md) | The full stack was backed up before normal non-force commits removed server-side automatic updating and migration 019; active main keeps extension `0.5.167` and migration 018 without rewriting Git history. | +| 2026-09-03 | Adaptive ERP readiness and central extension host updates | Mixed disposition: plugin/release retained at rollback; server architecture reverted before production rollout | [Original integration task](../30-worklog/tasks/20260903-finalize-extension-update-a6c4e192.md) | Exact extension `0.5.167` and adaptive readiness were retained when migration 019 and central private-OSS/ECS orchestration moved to backup commit `b2e33e2`; the active plugin later advanced independently. | +| 2026-09-03 | Extension-update iteration scoped rollback | Backup ref verified; server/migration rollback and regression rechecked | [Rollback task](../30-worklog/tasks/20260903-backup-revert-extension-update-c71a4e92.md) | The full stack was backed up before normal non-force commits removed server-side automatic updating and migration 019; the rollback retained extension `0.5.167` and migration 018 without rewriting Git history. | | 2026-09-07 | Team-lead task-summary projection and proactive AgentBus delivery | Repository and disposable-PostgreSQL verified; not deployed or externally sent | [Feature task](../30-worklog/tasks/20260907-implement-leader-agentbus-copy-b7e31a94.md) | Migration 020, future-only encrypted projection, privacy allowlist, stale-uncertainty supersession, employee-first outbound priority, stable proactive frame IDs, no `reply_to`, echo rejection, and administrator controls passed full regression; exact AgentBus/WeChat routing still needs an authorized canary. | +| 2026-09-07 | Exact ERP account identity and extension `0.5.169` | Repository, focused identity, package/source, and release hashes verified; not loaded or deployed | [Integration task](../30-worklog/tasks/20260907-integrate-all-changes-9d2e7c41.md) | One unique `#Lable_UserName` node plus normalized full equality is now the only accepted identity proof; missing, duplicate, blank, substring-only, and unrelated page-text matches fail closed without exposing the observed account. Uncertain writes direct manual read-only verification to the immutable task owner. | +| 2026-09-07 | Required-field-only passenger roster normalization `v1.4.0` | Synthetic/parser, Skill-package, release, and 12-page DOCX rendering verified; exact uploaded file unavailable for replay | [Integration task](../30-worklog/tasks/20260907-integrate-all-changes-9d2e7c41.md) | The 12 required source semantics alone drive extraction and validation; ordinary non-import columns are ignored and excluded from canonical TSV, while workbook-wide active-content checks remain. | +| 2026-09-07 | Assignee-based leader dashboard and administrator task-plane isolation | Repository and disposable-PostgreSQL verified; runtime rollout not performed | [Integration task](../30-worklog/tasks/20260907-integrate-all-changes-9d2e7c41.md) | Team leads see assigned manual and AgentBus work through the bounded read model; migration 021 removes and rejects administrator task principals, while UI/HTTP/service guards deny administrator task access. | ## When To Add Evidence diff --git a/.project-docs/80-commitments/commitments.md b/.project-docs/80-commitments/commitments.md index dbcad57..96e72ce 100644 --- a/.project-docs/80-commitments/commitments.md +++ b/.project-docs/80-commitments/commitments.md @@ -7,10 +7,10 @@ Track future-facing memory: promised follow-ups, unfinished loops, timed checks, | 2026-08-28 | Verify shared-mother-plan `tid-only` whole-visitor export against the current runtime ERP path. | Explicit user authorization for ERP read access | Future authorized task | Pending authorization | Run read-only source and artifact checks without external delivery. | | 2026-08-28 | Verify independent-order SGL/TWN and adult/child/leader headcount mappings with real ERP writes. | Explicit user authorization for controlled ERP writes | Future authorized task | Pending authorization | Use reversible values and action-specific requery evidence. | | 2026-08-28 | Resolve AgentBus OSS attachment rejection caused by private/reserved local DNS answers. | User scheduled integration and confirmed the environment is trusted internal networking | Integration task `20260831-integrate-server-diagnostics-8b42c6d1` | Completed in repository | Deploy/restart and run one live internal attachment verification only under separate authorization. | -| 2026-09-02 | Roll out and stage-test AgentBus account workers, account-scoped queues, and force deletion. | Explicit authorization for database backup/migration, service restart, extension reload, account/channel configuration, staging traffic, and disposable task mutation | Future authorized rollout task | Pending authorization | Apply migration 018 and extension `0.5.165`; verify two employee accounts/cloud PCs, ERP identity mismatch, same-account worker conflict/FIFO, cross-account independence, 90-second failover, administrator executable-feed isolation, manual/AgentBus routing, and waiting/active force-delete cleanup. | -| 2026-09-02 | Verify the integrated native product-search execution path. | Explicit authorization for extension reload and a guarded ERP preflight/retry | Future authorized rollout task | Pending authorization | Load extension `0.5.165`, confirm the runtime handshake, then verify deterministic product selection and normal write gates without automatically retrying the earlier failed task. | -| 2026-09-03 | Bootstrap and canary the central extension-update channel. | Former rollout plan for reverted server-side `EXT-001` architecture | None while reverted | Cancelled by user rollback | Extension `0.5.167` remains the current manual plugin release. Do not deploy migration 019 or the removed server updater from `main`; consult `codex/backup-extension-update-20260903-b2e33e2` only if a future explicit decision revives that architecture. | -| 2026-09-07 | Deploy and canary team-lead task-summary notifications. | Explicit authorization for database backup/migration, service restart, channel/target configuration, and controlled external AgentBus/WeChat delivery | Future authorized rollout task | Pending authorization | Apply migrations through 020, verify one exact team-lead route, confirm `task.summary` routing and stable-ID deduplication, then observe one manual and one AgentBus task before wider enablement. | +| 2026-09-02 | Roll out and stage-test AgentBus account workers, account-scoped queues, administrator isolation, and owner force deletion. | Explicit authorization for database backup/migration, service restart, extension reload, account/channel configuration, staging traffic, and disposable task mutation | Future authorized rollout task | Pending authorization | Apply migrations through 021 and extension `0.5.169`; verify two employee accounts/cloud PCs, unique-node exact ERP identity and mismatch, same-account worker conflict/FIFO, cross-account independence, 90-second failover, administrator task-API denial, manual/AgentBus routing, and owner-performed waiting/active force-delete cleanup. | +| 2026-09-02 | Verify the integrated native product-search execution path. | Explicit authorization for extension reload and a guarded ERP preflight/retry | Future authorized rollout task | Pending authorization | Load current extension `0.5.169`, confirm the runtime handshake, then verify deterministic product selection and normal write gates without automatically retrying the earlier failed task. | +| 2026-09-03 | Bootstrap and canary the central extension-update channel. | Former rollout plan for reverted server-side `EXT-001` architecture | None while reverted | Cancelled by user rollback | Extension `0.5.169` is the current manual plugin release. Do not deploy migration 019 or the removed server updater from `main`; consult `codex/backup-extension-update-20260903-b2e33e2` only if a future explicit decision revives the archived `0.5.167` server-update architecture. | +| 2026-09-07 | Deploy and canary team-lead task-summary notifications. | Explicit authorization for database backup/migration, service restart, employee channel binding, and controlled external AgentBus/WeChat delivery | Future authorized rollout task | Pending authorization | Apply migrations through 021, verify one exact team-lead current-owner route, confirm `task.summary` routing and stable-ID deduplication, then observe one manual and one AgentBus task before wider enablement. | ## Use diff --git a/LianSyn-platform/app.js b/LianSyn-platform/app.js index ff2734b..860d1a0 100644 --- a/LianSyn-platform/app.js +++ b/LianSyn-platform/app.js @@ -100,7 +100,7 @@ const persistedExtensionResultVersions = new Map(); let taskCreateInProgress = false; const AUTO_HANDOFF_RETRY_MS = 30_000; -const REQUIRED_EXTENSION_VERSION = '0.5.168'; +const REQUIRED_EXTENSION_VERSION = '0.5.169'; const MANUAL_HANDOFF_LABEL = '确认并提交到 ERP 插件'; const RETRY_HANDOFF_LABEL = '继续提交到 ERP 插件'; const RECONCILE_LABEL = '只读回查 ERP 现有结果'; diff --git a/agent设计规范/agentbus-reply-contract.md b/agent设计规范/agentbus-reply-contract.md index 33ebc7b..19a0931 100644 --- a/agent设计规范/agentbus-reply-contract.md +++ b/agent设计规范/agentbus-reply-contract.md @@ -18,7 +18,7 @@ 摘要只包含员工账号、登记业务名称、归一化业务状态、公共任务编号、上海时区提交时间,以及成功回执中经过白名单提取的团号/订单号。不得包含原始或补充指令、客户/游客/联系人信息、附件、Agent/插件/ERP 技术错误、堆栈、URL、token、内部 UUID、生命周期细节或未验证的执行结果。失败只使用统一业务文案;写入不确定不得包装成完成。 -订阅的收件地址、微信会话 ID 和每条待发正文必须字段加密;列表、审计和日志只展示截短 SHA-256 指纹、投递 ID、任务公共编号、状态和次数,不回显目标或正文。发送采用耐久 outbox、`FOR UPDATE SKIP LOCKED` 领取、短租约恢复和指数退避;WebSocket send 成功只表示已经交给 AgentBus,不证明微信最终展示。该链路是至少一次语义,极少情况下可能重复;已经到达微信的摘要无法由平台撤回,管理员界面和永久删除确认必须明确提示这一点。 +订阅的收件地址、微信会话 ID 和每条待发正文必须字段加密;列表、审计和日志只展示截短 SHA-256 指纹、投递 ID、任务公共编号、状态和次数,不回显目标或正文。发送采用耐久 outbox、`FOR UPDATE SKIP LOCKED` 领取、短租约恢复和指数退避;WebSocket send 成功只表示已经交给 AgentBus,不证明微信最终展示。该链路是至少一次语义,极少情况下可能重复;已经到达微信的摘要无法由平台撤回,管理员的渠道状态界面和任务归属人的永久删除确认必须明确提示这一点。 ## 归属和执行路由 diff --git a/agent设计规范/business-adaptation-registry.md b/agent设计规范/business-adaptation-registry.md index a4998b9..a1e648b 100644 --- a/agent设计规范/business-adaptation-registry.md +++ b/agent设计规范/business-adaptation-registry.md @@ -1,6 +1,6 @@ # 业务适配登记表 -这是跨会话和交付的业务入口。它回答三个问题:业务人员怎么输入、ERP 怎么执行、Skill 在哪里维护。运营统一复制入口见[运营业务 AI 输入模板总表](templates/business-input-templates.md),AI 业务路由参考见 [business-behavior-registry.md](business-behavior-registry.md),18 项确定性解析的指令、字段、action 和版本唯一机器源见 [`control-plane/src/business-routes.ts`](../control-plane/src/business-routes.ts)。该机器路由、任务级解析模式快照和组织全自动化规则对手工与 AgentBus 新任务全局共用,来源只负责输入和回执适配;AgentBus 渠道必须绑定一个员工平台账号,并使用该账号的业务白名单、任务归属、唯一云电脑 worker 和 ERP 身份门禁。ERP 领取队列按不可变的任务归属账号分别保持 FIFO 与单活跃执行,不同账号互不阻塞;管理员跨账号查看权限不得进入员工任务的可执行事件、插件回执或浏览器清理链路。 +这是跨会话和交付的业务入口。它回答三个问题:业务人员怎么输入、ERP 怎么执行、Skill 在哪里维护。运营统一复制入口见[运营业务 AI 输入模板总表](templates/business-input-templates.md),AI 业务路由参考见 [business-behavior-registry.md](business-behavior-registry.md),18 项确定性解析的指令、字段、action 和版本唯一机器源见 [`control-plane/src/business-routes.ts`](../control-plane/src/business-routes.ts)。该机器路由、任务级解析模式快照和组织全自动化规则对获授权员工的手工与 AgentBus 新任务全局共用,来源只负责输入和回执适配;AgentBus 渠道必须绑定一个员工平台账号,并使用该账号的业务白名单、任务归属、唯一云电脑 worker 和唯一登录节点精确 ERP 身份门禁。ERP 领取队列按不可变的任务归属账号分别保持 FIFO 与单活跃执行,不同账号互不阻塞;管理员只进入账号、渠道、解析策略、自动化设置和审计管理面,不创建、查看、修改、领取或删除业务任务。 ## 状态定义 diff --git a/agent设计规范/test-fixtures/lwlt-lifecycle/release-gate.md b/agent设计规范/test-fixtures/lwlt-lifecycle/release-gate.md index f1def31..f522d16 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.168` +- Chrome 插件:`0.5.169` - 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.126` @@ -11,6 +11,7 @@ - `0.5.166` 在散拼母团列表入口加入立即检查、100ms 条件轮询和 15 秒总超时;每次探测都重新取得当前主 iframe document,按钮一旦可用便立即继续。该等待只发生在点击前,不固定拖慢快速页面,也不触发业务写入重试。 - `0.5.167` 保留插件侧的空闲证明和受控重载安全协议,并继续包含 `0.5.166` 的散拼入口自适应等待。中央服务私有 OSS/ECS 云助手编排及迁移 019 已按用户决定从主线撤回,因此这些插件更新消息在当前主线没有服务端触发方,属于休眠能力;插件仍按现有人工发布/加载流程使用。 - `0.5.168` 将 ERP 身份门禁从整页子串搜索收紧为唯一 `#Lable_UserName` 登录节点的规范化精确全等;缺失、重复、空白、子串或其他页面文字命中均不再让云电脑进入可执行状态,观察到的账号文本不离开扩展。 +- `0.5.169` 保留全部执行门禁,并将 ERP 写入不确定后的人工只读核验责任明确绑定到任务归属账号;管理员仍完全不进入任务数据面。 - 名单工作簿 normalizer `v1.4.0` 与业务输入/Skill `0.5.126` 改为只选择 12 个必需源字段;身份证、年龄、源证件类型及其他普通额外列不参与行识别、字段校验或 canonical 输出。必需字段完整性、宏/外链、全局超链接和外部公式等安全门槛保持失败关闭。 运行中的浏览器版本必须实时握手确认。当前制品文件名和 SHA-256 只看 [`../../../dist/release-manifest.json`](../../../dist/release-manifest.json),不从历史日志推断。 @@ -73,7 +74,7 @@ - route preparation 只以一次性不透明 token 把已精确选中的 Document 交给后台 frame discovery;token 不进入业务 operation、日志或 ERP 请求,正式 preflight 仍再次执行完整引用、状态与 ownership 门禁。 - 除名单录入外,写入后必须同时有明确服务端响应和 fresh requery;HTTP 200、弹窗或文件源响应不能单独证明完成。名单录入必须先通过附件、对象身份、覆盖确认、游客与领队完整写前投影,并且只以父表单 ERP 明确成功响应作为完成证据;不做写后逐行回查或自动名单对账。 - 目标值已等于当前值时不派发字段事件,`write_attempted=false`。 -- 其他业务写入不确定时先只读回查同一 execution,禁止自动重试;仍无法确认时面向用户明确显示“请勿重复提交,等待管理员核验”。名单若没有取得 ERP 明确成功响应则不宣称成功,也不自动重提。 +- 其他业务写入不确定时先由任务归属账号只读回查同一 execution,禁止自动重试;仍无法确认时面向用户明确显示“请勿重复提交,等待人工核验”。名单若没有取得 ERP 明确成功响应则不宣称成功,也不自动重提。 ## 正式放行条件 diff --git a/archive/releases/2026-09-07/README.md b/archive/releases/2026-09-07/README.md index 4584236..3e8a34f 100644 --- a/archive/releases/2026-09-07/README.md +++ b/archive/releases/2026-09-07/README.md @@ -4,6 +4,8 @@ - `release-manifest-0.5.167.json`:收紧 ERP 登录账号身份识别前的历史清单快照。 - `ltjt-order-assistant-0.5.167.zip`:被 `0.5.168` 的唯一登录节点精确账号匹配替代;保留用于恢复和追溯。 +- `release-manifest-0.5.168.json`:统一不确定任务人工复核责任人前的历史清单快照。 +- `ltjt-order-assistant-0.5.168.zip`:被 `0.5.169` 的任务归属账号复核文案替代;保留用于恢复和追溯。 - `release-manifest-0.5.168-skills-0.5.125.json`:名单额外字段白名单提取前的 `0.5.168 / 0.5.125 / 0.5.125` 历史清单快照。 - `lwlt-*-0.5.125.skill`:被 `0.5.126` Skill 发布基线替代;其中 lifecycle 包仍记录旧的额外列失败关闭规则。 - `老挝联泰AI指令表-0.5.125.docx`:被 `0.5.126` 的名单必需字段白名单说明替代。 diff --git a/dist/ltjt-order-assistant-0.5.168.zip b/archive/releases/2026-09-07/ltjt-order-assistant-0.5.168.zip similarity index 100% rename from dist/ltjt-order-assistant-0.5.168.zip rename to archive/releases/2026-09-07/ltjt-order-assistant-0.5.168.zip diff --git a/archive/releases/2026-09-07/release-manifest-0.5.168.json b/archive/releases/2026-09-07/release-manifest-0.5.168.json new file mode 100644 index 0000000..0b3f0c2 --- /dev/null +++ b/archive/releases/2026-09-07/release-manifest-0.5.168.json @@ -0,0 +1,69 @@ +{ + "manifest_version": 1, + "generated_on": "2026-09-07", + "baselines": { + "chrome_extension": "0.5.168", + "skills": "0.5.126", + "business_instruction_docx": "0.5.126", + "agent_prompt": "ltjt-agent-prompt-v1.8-independent-headcount-categories" + }, + "artifacts": [ + { + "kind": "chrome_extension", + "version": "0.5.168", + "path": "dist/ltjt-order-assistant-0.5.168.zip", + "source": "chrome-extension/ltjt-order-assistant", + "sha256": "2432a882f2fbdcf28bfb6bb8a7fead55986297f86d4cf4ab8e12ea373c72518c" + }, + { + "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.126", + "path": "dist/老挝联泰AI指令表-0.5.126.docx", + "source": "agent设计规范/templates/business-input-templates.md", + "builder": "tools/build_business_instruction_docx.py", + "sha256": "052611d9b700afe66b02a9b3e3b456fc245ac46541d338980f2fa4ff2e41de14", + "source_sha256": "3ea8efd5174c0d4ab59972fb30fac2f8c6dfe7308f4e3fdb6e5b5e7c9c76258b", + "builder_sha256": "c162884210da22e3b78368749b66f1f177df5e9fc6155f4fd9954bd516d187f1" + } + ] +} diff --git a/chrome-extension/ltjt-order-assistant/README.md b/chrome-extension/ltjt-order-assistant/README.md index 9cdceb6..7e7ebc4 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.168`。版本化 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.169`。版本化 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.168 当前重点: +0.5.169 当前重点: + +- ERP 写入结果不确定时,扩展停止自动重试并明确要求任务归属账号做人工只读核验,不再把责任错误指向无任务数据面权限的管理员。 + +继续保留 0.5.168 的 ERP 精确身份门禁: - ERP 登录身份只从当前主页面唯一的 `#Lable_UserName` 节点读取,并与平台绑定身份做 Unicode、空白和大小写规范化后的精确全等比较。缺失、重复、空白或仅为子串时都不再执行;不再用整页业务文字猜测账号。 - 扩展仍只向平台返回账号是否存在、是否唯一和是否匹配,不回传 ERP 页面显示的账号文本。 diff --git a/chrome-extension/ltjt-order-assistant/background.js b/chrome-extension/ltjt-order-assistant/background.js index b54bf29..e7afc10 100644 --- a/chrome-extension/ltjt-order-assistant/background.js +++ b/chrome-extension/ltjt-order-assistant/background.js @@ -2664,7 +2664,7 @@ async function executeLifecycleOperation(taskId, operation, operationPlan) { }); await publish(taskId, executionOperation, 'lifecycle_reconciliation', live, { status: 'execution_uncertain', - message: 'ERP 写入已发起,但自动只读复核仍无法确认最终结果。系统已停止且不会自动重试;请勿重复提交同一任务,等待管理员只读核验。', + message: 'ERP 写入已发起,但自动只读复核仍无法确认最终结果。系统已停止且不会自动重试;请勿重复提交同一任务,等待任务归属账号人工只读核验。', operation_plan: publicPlan, no_erp_write: false, write_attempted: true, @@ -3524,7 +3524,7 @@ async function reconcileLifecycleTask(taskId) { ok: false, status: 'reconciliation_pending', task_id: rootId, - message: `${readOnly.message} 没有重试 ERP 写入;请勿重复提交同一任务,任务继续等待管理员核验。`, + message: `${readOnly.message} 没有重试 ERP 写入;请勿重复提交同一任务,任务继续等待归属账号人工核验。`, blockers: readOnly.blockers || [], requery: readOnly.verification?.requery || null }; diff --git a/chrome-extension/ltjt-order-assistant/inpage.js b/chrome-extension/ltjt-order-assistant/inpage.js index ca711ab..e8968eb 100644 --- a/chrome-extension/ltjt-order-assistant/inpage.js +++ b/chrome-extension/ltjt-order-assistant/inpage.js @@ -6118,7 +6118,7 @@ } window.LTJTOrderAssistant = { - version: '0.5.168', + version: '0.5.169', resolveNativeListSearchValues, lookupKeywordMatchesText, inspectLifecycleSearchCriteria: lifecycleSearchCriteria, diff --git a/chrome-extension/ltjt-order-assistant/manifest.json b/chrome-extension/ltjt-order-assistant/manifest.json index 1679680..1a434d5 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.168", + "version": "0.5.169", "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 a4be622..4109694 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.168', + version: '0.5.169', openTeamBatchForm, pingTeamBatchFrame, preflightTeamBatchNative, diff --git a/control-plane/README.md b/control-plane/README.md index 7464791..3715c32 100644 --- a/control-plane/README.md +++ b/control-plane/README.md @@ -5,7 +5,7 @@ ## 服务边界 - PostgreSQL 是任务、事件、幂等、审计和回查状态的唯一事实源。 -- 平台账号使用 `admin`(管理员)、`team_lead`(组长)和 `user`(普通用户)三种固定角色登录;服务端会话使用 HttpOnly/Secure/SameSite Cookie。管理员维护账号、角色、状态、密码重置、会话撤销和可执行任务类型;平台不提供组织或租户选择。 +- 平台账号使用 `admin`(管理员)、`team_lead`(组长)和 `user`(普通用户)三种固定角色登录;服务端会话使用 HttpOnly/Secure/SameSite Cookie。管理员维护账号、角色、状态、密码重置、会话撤销和员工可执行任务类型,但自身不进入任务数据面;平台不提供组织或租户选择。 - 登录会话默认跨浏览器重启持续有效,不按空闲时间或绝对时长自动失效;用户退出、修改密码、账号停用或管理员强制撤销时由服务端立即撤销。 - 业务页面通过 REST 创建任务;Agent 返回结构化结果后,任务归属人在自己的任务上一次点击“确认并提交到 ERP 插件”,再通过 SSE 或轮询读取服务端状态。普通用户与组长的任务 API、SSE、附件和插件执行权限只覆盖分配给本人的人工任务与 AgentBus 任务;管理员是纯管理面身份,不能创建、查看、修改、领取、接收事件或提交任何业务任务。 - 手工与 AgentBus 的每个新任务都会按同一组织、同一 18 项业务路由固化解析策略及配置 revision;来源不能覆盖模式。其中两项名单 route 固定为 `program_only`,其余 16 项可配置 `ai / shadow / auto / program`。全消息中的唯一已登记指令可以确定 route;没有指令时,只有全部标签都属于唯一 route、至少两个不同标签且业务定位必填项完整的字段签名才可确定 route。未知、冲突或多 route 输入不猜测。后续补充轮次沿用原任务快照,设置变化只影响新任务和新会话。 diff --git a/control-plane/src/parser-orchestrator.ts b/control-plane/src/parser-orchestrator.ts index 5812dde..4fe4a47 100644 --- a/control-plane/src/parser-orchestrator.ts +++ b/control-plane/src/parser-orchestrator.ts @@ -73,7 +73,7 @@ export class ParserOrchestrator { // Unresolved/legacy traffic and tasks explicitly pinned to AI preserve the // original parser path. This is also the permanent affinity after an Auto - // fallback or the one-time administrator AI reparse. + // fallback or the legacy one-time task AI reparse. if (!routeId || configuredMode === 'ai' || affinity === 'ai') { const started = performance.now(); const aiResult = await this.aiParser.parse(this.aiInput(claim, signal)); diff --git a/control-plane/src/task-service.ts b/control-plane/src/task-service.ts index 400a9c8..05ac59c 100644 --- a/control-plane/src/task-service.ts +++ b/control-plane/src/task-service.ts @@ -5924,7 +5924,7 @@ export class TaskService { ? failure ? `解析失败【${failure.failure_stage}】:${failure.failure_message}` : '解析失败:系统解析未通过,任务已阻断。' - : '指令已拆解,等待管理员确认。'; + : '指令已拆解,等待任务归属人确认。'; const outcome = await withTransaction(this.config, async (client) => { const lookup = await client.query( 'SELECT * FROM tasks WHERE organization_id = $1 AND task_id = $2 FOR UPDATE', diff --git a/control-plane/test/control-plane.test.ts b/control-plane/test/control-plane.test.ts index 26264a5..61d3d71 100644 --- a/control-plane/test/control-plane.test.ts +++ b/control-plane/test/control-plane.test.ts @@ -1438,6 +1438,8 @@ test('operator page has a login gate and uses the durable task API', async () => assert.match(index, /确认并提交到 ERP 插件/); assert.match(app, /const MANUAL_HANDOFF_LABEL = '确认并提交到 ERP 插件'/); assert.match(app, /async function confirmAndSubmitToErpPlugin/); + assert.match(taskService, /指令已拆解,等待任务归属人确认/); + assert.doesNotMatch(taskService, /指令已拆解,等待管理员确认/); assert.doesNotMatch(app, /textContent = canStart \? '开始执行' : '确认执行'/); assert.match(app, /fetchWithTimeout\('\/api\/auth\/login'/); assert.match(app, /showAuthChecking\(\);[\s\S]*pingAi\(\)\.catch/); diff --git a/dist/ltjt-order-assistant-0.5.169.zip b/dist/ltjt-order-assistant-0.5.169.zip new file mode 100644 index 0000000000000000000000000000000000000000..d52abf97026263ea5f59c036431eec99ef225cf6 GIT binary patch literal 217207 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�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 F{su_;&I