# 权限与日志改造自动化测试结果

## 1. 测试时间

2026-08-12

## 2. 测试环境

| 项目 | 地址/状态 |
|---|---|
| Frontend | `http://172.25.179.69:16801` |
| Backend | `http://172.25.179.69:17861/modelTF` |
| WSL | `172.25.179.69` |
| Docker | 已运行 |

## 3. 自动执行结果

| 用例 | 结果 | 实际结果 |
|---|---|---|
| 容器状态 | 通过 | Compute、Frontend、Backend、Redis、MinIO 均为 `healthy` |
| Backend 健康检查 | 通过 | `/modelTF/health` 返回 HTTP 200 |
| Frontend 首页 | 通过 | `/` 返回 HTTP 200 |
| 未登录访问数据集接口 | 通过 | `/modelTF/dataset-manage` 返回 HTTP 401 |
| Redis 容器状态 | 通过 | 容器状态为 healthy |
| 轮询正常日志降噪 | 通过 | 最近 120 秒未发现 `compute jobs polled` 或 `health check requested` 高频日志 |
| 轮询异常日志保留 | 未触发 | 当前未人为停止算力节点，未产生轮询失败日志 |
| 前端构建 | 通过 | `npm run build` 成功 |
| 后端编译 | 通过 | 相关 Python 模块 `py_compile` 成功 |
| Git 差异检查 | 通过 | `git diff --check` 无格式错误 |

## 4. 数据库字段迁移

### 静态检查结果

初始化 SQL 和运行时迁移逻辑已包含以下字段：

- `models.deleted_at`
- `models.deleted_by`
- `models.tenant_id`
- `models.project_id`
- `datasets.deleted_at`
- `datasets.deleted_by`
- `datasets.tenant_id`
- `datasets.project_id`
- `trained_models.deleted_at`
- `trained_models.deleted_by`
- `trained_models.tenant_id`
- `trained_models.project_id`
- `eval_tasks.deleted_at`
- `eval_tasks.deleted_by`
- `sessions.issued_at`
- `sessions.expires_at`

### 远程数据库检查状态

已通过当前 Backend 容器使用一次性 PostgreSQL 连接检查远程数据库，字段迁移已完成。

确认存在：

- `models`: `created_by`、`tenant_id`、`project_id`、`deleted_at`、`deleted_by`
- `datasets`: `created_by`、`tenant_id`、`project_id`、`deleted_at`、`deleted_by`
- `trained_models`: `created_by`、`tenant_id`、`project_id`、`deleted_at`、`deleted_by`
- `eval_tasks`: `created_by`、`tenant_id`、`project_id`、`deleted_at`、`deleted_by`
- `sessions`: `issued_at`、`expires_at`、`logout_at`

使用的检查 SQL：

```sql
SELECT table_name, column_name
FROM information_schema.columns
WHERE table_name IN ('models', 'datasets', 'trained_models', 'eval_tasks', 'sessions')
ORDER BY table_name, ordinal_position;
```

## 5. Redis 说明

已从当前环境确认 Redis 实际密码配置为 `Tvhrf659WaX-S1B8FG6c2kSZK07XTv82`，使用该密码验证返回 `PONG`。

项目配置已同步为：

```env
REDIS_PASSWORD=Tvhrf659WaX-S1B8FG6c2kSZK07XTv82
REDIS_URL=redis://:Tvhrf659WaX-S1B8FG6c2kSZK07XTv82@redis:6379/0
```

后续验证应从当前 Docker 环境读取实际密码后执行：

```bash
docker compose config
docker exec yg-ft-redis printenv REDISCLI_AUTH
docker exec yg-ft-redis redis-cli -a "$REDISCLI_AUTH" ping
```

预期返回：

```text
PONG
```

## 6. 未自动执行的破坏性用例

以下用例需要测试账号、测试资源或人工确认，未自动执行，以避免影响现有数据：

- ACL 授权和撤销。
- 训练任务创建、停止、重试和删除。
- 评测任务启动和删除。
- 推理模型加载、卸载和删除。
- 模型权重合并和导出。
- GPU 分配、占用和释放。
- 软删除后资源恢复和数据完整性。
- 人为停止算力节点验证轮询失败恢复。
- 登录失败 5 次后的限流验证。
- Token 过期和注销后的访问验证。

## 7. 当前结论

当前服务基础可用，页面和 Backend 健康接口正常，未登录鉴权正常，日志降噪逻辑生效，前后端构建通过。

当前仍需人工或使用专用测试数据验证：

1. 权限矩阵中的创建、执行、删除、审批和 GPU 占用场景。
2. Token 过期和登录失败限流场景。
