Phase 0 评审二次修复:init.sh 增加 .exe fallback + 文档统一 MSYS2 环境声明
This commit is contained in:
@@ -8,6 +8,17 @@
|
||||
|
||||
Phase 0 尚未完全达标。
|
||||
|
||||
2026-07-06 复查 DeepSeek 修复后,4 个原始问题中:
|
||||
|
||||
| 问题 | 状态 | 说明 |
|
||||
| --- | --- | --- |
|
||||
| `init.sh` / venv 与标准 bash 环境不匹配 | 未达标 | `init.sh` 仍调用不存在的 `.venv/bin/pip3.12` / `.venv/bin/python3.12` |
|
||||
| production settings 缺少强制 `SECRET_KEY` | 已达标 | 缺少 `SECRET_KEY` 时会 fail fast;合法环境变量可正常读取 |
|
||||
| 当前状态文档过期和自相矛盾 | 未达标 | `AGENTS.md`、`docs/current-state.md` 仍混用 WSL/bash 与 MSYS2 命令,且命令不可运行 |
|
||||
| `.env.example` 说明容易误导 | 已达标 | 已说明 `.env` 不会自动加载,需要通过 shell / systemd / hosting environment 注入 |
|
||||
|
||||
因此当前仍不能进入 Phase 1。
|
||||
|
||||
Wagtail / Django 项目骨架、Python 3.12 venv、SQLite 数据库、依赖 pin、基础测试和 `manage.py check` / `manage.py test` 基线基本可用。但标准入口 `init.sh` 在仓库规定的 bash / WSL 环境下失败,这是阻断项。
|
||||
|
||||
在继续 Phase 1 前,建议先修复:
|
||||
@@ -20,6 +31,8 @@ Wagtail / Django 项目骨架、Python 3.12 venv、SQLite 数据库、依赖 pin
|
||||
|
||||
### 1. High:标准启动入口 `init.sh` 在 bash 下不可用
|
||||
|
||||
**复查状态:未达标。**
|
||||
|
||||
仓库规则规定标准环境是 WSL2 / Linux + bash,且 `init.sh` 是标准启动与验证入口:
|
||||
|
||||
- `AGENTS.md`:标准开发环境是 WSL2 / Linux。
|
||||
@@ -66,8 +79,52 @@ bash -lc './init.sh'
|
||||
- 优先按 WSL / Linux 重新创建 `.venv`,确保 `.venv/bin/python` 和 `.venv/bin/pip` 存在。
|
||||
- 或者正式修改项目开发环境决策为 MSYS2,但这会偏离当前仓库文档,不建议。
|
||||
|
||||
2026-07-06 复查结果:
|
||||
|
||||
`init.sh` 已改为调用:
|
||||
|
||||
```bash
|
||||
.venv/bin/pip3.12
|
||||
.venv/bin/python3.12
|
||||
```
|
||||
|
||||
但实际 `.venv/bin/` 下仍只有:
|
||||
|
||||
```text
|
||||
pip3.12.exe
|
||||
python3.12.exe
|
||||
```
|
||||
|
||||
脚本虽然检查了 `.exe` 是否存在,但执行命令时仍使用无后缀路径。
|
||||
|
||||
验证命令:
|
||||
|
||||
```bash
|
||||
bash -lc './init.sh'
|
||||
```
|
||||
|
||||
结果:
|
||||
|
||||
```text
|
||||
./init.sh: line 28: .venv/bin/pip3.12: No such file or directory
|
||||
```
|
||||
|
||||
手动执行文档中的标准命令也失败:
|
||||
|
||||
```bash
|
||||
bash -lc '.venv/bin/python3.12 manage.py check'
|
||||
```
|
||||
|
||||
结果:
|
||||
|
||||
```text
|
||||
/bin/bash: .venv/bin/python3.12: No such file or directory
|
||||
```
|
||||
|
||||
### 2. High:production settings 会回退到开发 `SECRET_KEY`
|
||||
|
||||
**复查状态:已达标。**
|
||||
|
||||
当前 `skelet/settings/base.py` 中:
|
||||
|
||||
```python
|
||||
@@ -104,8 +161,38 @@ ALLOWED_HOSTS ['']
|
||||
- 缺少或仍为开发默认值时抛出 `ImproperlyConfigured`。
|
||||
- 同时清理 `ALLOWED_HOSTS=['']` 的空字符串问题。
|
||||
|
||||
2026-07-06 复查结果:
|
||||
|
||||
`skelet/settings/production.py` 已改为:
|
||||
|
||||
- 缺少 `SECRET_KEY` 或仍以 `django-insecure-` 开头时抛出 `ImproperlyConfigured`。
|
||||
- `ALLOWED_HOSTS` 会过滤空字符串。
|
||||
|
||||
验证命令:
|
||||
|
||||
```bash
|
||||
DJANGO_SETTINGS_MODULE=skelet.settings.production .venv/bin/python3.12.exe manage.py check --deploy
|
||||
```
|
||||
|
||||
在未设置 `SECRET_KEY` 时,结果为预期失败:
|
||||
|
||||
```text
|
||||
django.core.exceptions.ImproperlyConfigured: SECRET_KEY 环境变量缺失或仍为开发默认值。
|
||||
```
|
||||
|
||||
设置合法环境变量后读取结果:
|
||||
|
||||
```text
|
||||
DEBUG False
|
||||
ALLOWED_HOSTS ['example.com', 'www.example.com']
|
||||
```
|
||||
|
||||
原 `security.W009` 风险已消除。剩余 `SECURE_HSTS_SECONDS`、`SECURE_SSL_REDIRECT` 警告属于上线前 HTTPS 策略,不是本项原问题。
|
||||
|
||||
### 3. Medium:当前状态文档存在过期和自相矛盾内容
|
||||
|
||||
**复查状态:未达标。**
|
||||
|
||||
`AGENTS.md` 仍写:
|
||||
|
||||
```text
|
||||
@@ -135,8 +222,26 @@ ALLOWED_HOSTS ['']
|
||||
- 更新 `AGENTS.md` 当前阶段和下一步任务。
|
||||
- 更新 `docs/current-state.md` 当前 blocker / 下一步,使其与 `docs/06-tasks.md` 一致。
|
||||
|
||||
2026-07-06 复查结果:
|
||||
|
||||
部分已修复:
|
||||
|
||||
- `AGENTS.md` 已改为 Phase 0 已完成,下一步 T-101。
|
||||
- `docs/current-state.md` 的下一步已改为 T-101。
|
||||
|
||||
但仍有未达标内容:
|
||||
|
||||
- `AGENTS.md` 仍声明标准环境是 WSL2 / Linux + bash。
|
||||
- `AGENTS.md` 验证命令仍写 `.venv/bin/python3.12 manage.py check`,但该命令在 bash 下不可运行。
|
||||
- `docs/current-state.md` 仍写开发环境为 MSYS2/MinGW,并写“标准开发命令(在 MSYS2 bash 中运行)”。
|
||||
- `docs/current-state.md` 的命令仍为 `.venv/bin/python manage.py check`,实际不存在 `.venv/bin/python`。
|
||||
|
||||
因此文档仍会误导后续 agent。
|
||||
|
||||
### 4. Low:`.env.example` 说明容易误导
|
||||
|
||||
**复查状态:已达标。**
|
||||
|
||||
`.env.example` 写:
|
||||
|
||||
```text
|
||||
@@ -150,6 +255,16 @@ ALLOWED_HOSTS ['']
|
||||
- 接入 dotenv,并明确加载路径。
|
||||
- 或者修改说明,写明这些变量需要通过 shell / systemd / hosting environment 注入。
|
||||
|
||||
2026-07-06 复查结果:
|
||||
|
||||
`.env.example` 已明确说明:
|
||||
|
||||
- 本文件不直接加载到 Django settings。
|
||||
- 部署时需通过 shell、systemd、托管平台或 Docker 注入环境变量。
|
||||
- 真实 `.env` 被 `.gitignore` 忽略。
|
||||
|
||||
该项已达标。
|
||||
|
||||
## 已通过项
|
||||
|
||||
以下内容经检查或命令验证通过:
|
||||
@@ -185,5 +300,4 @@ ALLOWED_HOSTS ['']
|
||||
2. 修复 production `SECRET_KEY` 默认值风险。
|
||||
3. 同步 `AGENTS.md` 和 `docs/current-state.md`,确保下一步任务明确为 T-101。
|
||||
|
||||
完成以上三项后,Phase 0 可以视为达标,再进入 T-101。
|
||||
|
||||
当前仍未满足最低修复门槛中的第 1 项和第 3 项。完成后,Phase 0 才可以视为达标,再进入 T-101。
|
||||
|
||||
Reference in New Issue
Block a user