fix(tasks): isolate worker execution scopes
Persist a required Server-owned execution scope and enforce it for listing, claiming, lease recovery and SCADA verification. Backfill existing tasks explicitly through migration 034 so local development workers no longer claim production tasks from the shared database.
This commit is contained in:
@@ -190,3 +190,27 @@ OPERATIONAL_TASKS_STORAGE_TEST=1 conda run -n server python -m pytest tests/inte
|
||||
```
|
||||
|
||||
第二条需要当前配置的 PostgreSQL 可连接及测试 DDL 权限。测试在强制回滚事务中创建表结构和隔离项目数据,结束后不保留这些修改;不代替正式迁移。外部工单调用仍使用隔离 HTTP transport,不会操作实际工单系统。该测试覆盖持久化报告、反馈重新排队、旧会话拒绝、人工确认与丢响应回执核对,而非真实模型推理质量。
|
||||
|
||||
### 共用数据库时的执行范围
|
||||
|
||||
任务创建时,Server 将 `OPERATIONAL_TASK_EXECUTION_SCOPE`(留空则使用
|
||||
`ENVIRONMENT`)写入 `workbench.operational_tasks.document.execution_scope`。
|
||||
本地配置 `development`,线上配置 `production`;浏览器不提交此字段,
|
||||
重试保留原范围。`execution_scope` 为必填字段,运行时代码不为缺失值兜底。
|
||||
现有任务通过 `resources/sql/034_operational_task_execution_scope.sql` 一次性补为
|
||||
`production`;已有明确范围的任务保持原值。此回填是历史任务的迁移策略,
|
||||
不代表通过旧记录推断出了创建环境。
|
||||
|
||||
迁移需要与新版本切换协调执行:暂停任务写入,执行每个业务库的 SQL,
|
||||
启动新版本并恢复任务写入。旧版本的严格模型不接受新增 JSON 字段,
|
||||
新版本也拒绝未迁移数据;不能在旧版本仍服务任务请求时单独回填。
|
||||
SQL 同时增加必填范围约束,不设置数据库默认值。回滚版本前需同步处理该约束
|
||||
与 JSON 字段,不得直接切回旧镜像。
|
||||
|
||||
Worker 应连接所属环境的 `OPERATIONAL_WORKER_SERVER_URL` 和
|
||||
`OPERATIONAL_WORKER_AGENT_URL`。Server 在运行列表、领取、租约回收与
|
||||
SCADA recovery 候选查询上限制执行范围;直接领取其他范围返回
|
||||
`403 EXECUTION_SCOPE_MISMATCH`。这属于配置隔离,不能替代服务凭据授权:
|
||||
不要让本地 Worker 通过线上 Server 领取任务。普通任务与历史记录仍共用存储。
|
||||
|
||||
修改范围配置需要重启相应 Server。暂停的本地 Worker 不会因代码更新恢复。
|
||||
|
||||
Reference in New Issue
Block a user