T-001: 初始化 Wagtail 项目骨架

This commit is contained in:
ila
2026-07-06 17:30:34 +08:00
parent abfe00103c
commit feb662da67
42 changed files with 997 additions and 76 deletions
+3 -5
View File
@@ -8,7 +8,7 @@
| --- | --- | --- | --- |
| CMS / Web 框架 | Wagtail + Django | 已定 | 内容模型、后台、页面、SEO、搜索和后续扩展都适合目录评测站。 |
| Python | Python 3.12 | 已定 | Wagtail 当前支持 Python 3.12;部署环境更稳。 |
| 版本钉死 | `requirements.txt` 按实际安装版本 pin | T-001 落实 | 初始化时安装 pip 当前稳定版 Wagtail,用 `pip show wagtail` 确认版本后写成 `wagtail==X.Y.Z`,并回写本表。 |
| 版本钉死 | `requirements.txt` 按实际安装版本 pin | 已落实 | Wagtail 7.4.2 / Django 6.0.6,已 pin 全部依赖版本。 |
| 数据库 | SQLite with JSON1 | 已定 | 开发和第一版上线成本低;MVP 写入少。 |
| 后续数据库 | PostgreSQL | 条件触发 | 出现用户写入、高并发、后台多人编辑、锁冲突或会员功能后迁移。 |
| 前端模板 | Django Templates / Wagtail Templates | 已定 | 第一版以内容站为主,避免引入前后端分离复杂度。 |
@@ -17,7 +17,7 @@
| 鉴权方式 | Wagtail Admin Session | 已定 | 第一版只有后台编辑账号。 |
| 媒体存储 | 本地 media 目录 | 已定 | 2 核 2G VPS 第一版足够;后续可迁移 S3/R2/OSS。 |
| 部署方式 | 单 VPS,Gunicorn + Nginx | 待实现 | 面向 2 核 2G VPS;先不引入 Docker 作为必需项。 |
| 测试 | Django test / pytest 待定 | 待定 | T-001 初始化后以项目实际生成结构为准。 |
| 测试 | Django test | 已定 | T-001 初始化后以各 app `tests.py` 为准。 |
| 开发环境 | WSL2 / Linux + bash | 已定 | 仓库根目录 `/mnt/d/opc_project/skelet`;`init.sh` 为标准入口,`init.ps1` 可选。 |
| 访问统计 | Plausible / Umami 或等价轻量方案 | 待实现 | 上线前接入(任务 T-305);自然搜索和外链点击是 M3/M4 商业验证的前置数据。 |
@@ -32,9 +32,7 @@
## 三、构建与运行命令
生产代码尚未初始化。完成 `T-001` 后必须把本节替换为真实命令。
目标命令形态:
已完成初始化,以下为真实可用命令:
| 用途 | 命令 |
| --- | --- |
+2 -2
View File
@@ -216,9 +216,9 @@ skelet/
└── README.md
```
**结构决策**:保留 `wagtail start` 生成的 `home` 和 `search` app,不重命名(手改默认迁移容易出错);业务模型全部放在新建的 `core` app;测试放各 app 的 `tests.py`,暂不建独立 `tests/` 目录;生成的 `Dockerfile` 删除(第一版不用 Docker,见 `03-tech-stack.md`)。
**结构决策**:保留 `wagtail start` 生成的 `home` 和 `search` app;业务模型全部放在新建的 `core` app;测试放各 app 的 `tests.py`,暂不建独立 `tests/` 目录;`Dockerfile` 已删除。
实际路径以初始化后的 Wagtail 项目为准;初始化完成后必须更新本文和 `current-state.md`。
已初始化:Wagtail 7.4.2 + Django 6.0.6,SQLite 可用,superuser `admin` 已创建。
## 七、架构纪律
+1 -1
View File
@@ -22,7 +22,7 @@
| ID | 任务 | 依赖 | 验收要点 | 状态 |
| --- | --- | --- | --- | --- |
| T-000 | 初始化 harness 文档 | - | 根目录入口、需求、技术栈、架构、规则、任务和当前状态文档已建立 | DONE |
| T-001 | 初始化 Wagtail 项目骨架 | T-000 | Python 3.12 虚拟环境可用;Wagtail/Django 项目生成;SQLite 配置可 migrate;首页或默认 Wagtail 页面可访问;`init.ps1` / `init.sh` 替换为真实命令 | TODO |
| T-001 | 初始化 Wagtail 项目骨架 | T-000 | Python 3.12 虚拟环境可用;Wagtail/Django 项目生成;SQLite 配置可 migrate;首页或默认 Wagtail 页面可访问;`init.ps1` / `init.sh` 替换为真实命令 | DONE |
| T-002 | 建立基础配置与环境样例 | T-001 | 存在 `requirements.txt`、`.env.example` 或等价配置说明;不包含真实密钥;`DEBUG`、`ALLOWED_HOSTS`、media/static 配置清楚 | TODO |
| T-003 | 建立最小验证基线 | T-001 | `manage.py check` 和基础测试命令可运行;验证结果写入 `progress.md` | TODO |
+19 -26
View File
@@ -11,16 +11,16 @@
## 当前快照
- 日期:2026-07-06
- 阶段:MVP 起步前,harness 文档已初始化并完成瘦身(元文档合并为 `90-harness-reference.md`,入口统一为 `AGENTS.md`);任务看板已加固(任务详单、验证命令、筛选参数契约、字段必填/默认附注)
- 开发环境:WSL2 / Linux,仓库根目录 `/mnt/d/opc_project/skelet`,bash 为标准命令形态;Python 命令统一使用 `python3.12`(系统已安装 3.12.12)
- git:已初始化,主分支 `main`;`.gitignore` 已生效(`deploy/` 及凭证类文件不入库),`.gitattributes` 统一 LF 行尾
- 技术栈:目标为 Wagtail + Django + Python 3.12 + SQLite;第一版英文单语言站点
- 生产代码:尚未初始化
- 测试:尚未初始化
- 数据:尚未建立 seed 数据;未来通过 Wagtail 后台录入首批项目
- 标准启动路径:`init.sh` 尚未配置真实命令(`init.ps1` 为可选辅助)
- 标准验证路径:生产代码初始化后补齐
- 当前 blocker:未初始化 Wagtail 项目骨架;下一步执行 `T-001`
- 阶段:T-001 已完成,Wagtail 7.4.2 + Django 6.0.6 项目已初始化;生产代码可运行
- 开发环境:MSYS2/MinGW Python 3.12.12,venv 使用 `--system-site-packages`(Pillow 由 MSYS2 预编译包提供)
- git:分支 `ds`;`.gitignore` 已生效(`.venv/`、`db.sqlite3`、`media/` 等被忽略)
- 技术栈:Wagtail 7.4.2 + Django 6.0.6 + Python 3.12 + SQLite;第一版英文单语言站点
- 生产代码:已初始化,`manage.py`、`skelet/`、`home/`、`search/`、`core/` 已建
- 测试:尚未初始化(T-003 待建)
- 数据:已创建 superuser `admin`;尚未建立 seed 数据
- 标准启动路径:`init.sh` 已配置 `pip install` / `manage.py check` / `manage.py runserver` 命令
- 标准验证路径:`.venv/bin/python manage.py check` 通过(3 个 treebeard 兼容警告非阻塞)
- 当前 blocker:无;下一步执行 `T-002`
## 当前目录要点
@@ -34,31 +34,24 @@
| `deploy/` | 已有,不入库 | 本机部署凭证(SSH 私钥等),被 `.gitignore` 整目录忽略。 |
| `.gitignore` / `.gitattributes` | 已有 | 忽略凭证与运行产物;统一 LF 行尾。 |
| `init.ps1` / `init.sh` | 已有,占位 | T-001 初始化生产代码后替换真实命令。 |
| `manage.py` | 待建 | Wagtail/Django 入口。 |
| `requirements.txt` | 待建 | Python 依赖。 |
| `skelet/` | 待建 | Django 配置包(`wagtail start` 生成 base/dev/production settings)。 |
| `home/` / `search/` | 待建 | `wagtail start` 默认 app,保留不改名;`HomePage` 在 `home`。 |
| `core/` | 待建 | 业务 app:Snippet、场景页、项目页、文章模型、模板和静态资源。 |
| `manage.py` | 已有 | Wagtail/Django 入口。 |
| `requirements.txt` | 已有 | Python 依赖,全部 pin 精确版本。 |
| `skelet/` | 已有 | Django 配置包(`wagtail start` 生成 base/dev/production settings)。 |
| `home/` / `search/` | 已有 | `wagtail start` 默认 app,保留不改名;`HomePage` 在 `home`。 |
| `core/` | 已有 | 业务 app,已加入 `INSTALLED_APPS`;模型、模板、测试待建。 |
| `.venv/` | 已有(不入库) | Python 3.12 虚拟环境,`--system-site-packages`(Pillow 12.0 来自 MSYS2)。 |
| 各 app `tests.py` | 待建 | smoke 与模型测试(T-003 起),暂不建独立 `tests/` 目录。 |
## 任务看板状态
- 已完成:`T-000 初始化 harness 文档`。
- 已完成:`T-000 初始化 harness 文档`、`T-001 初始化 Wagtail 项目骨架`。
- 正在进行:无。
- 下一个可领取任务:`T-001 初始化 Wagtail 项目骨架`。
- 下一个可领取任务:`T-002 建立基础配置与环境样例`。
## 当前可运行内容
```bash
# 当前只能做文档检查
git status
find . -type f -not -path "./.git/*"
```
生产应用命令待 T-001 初始化后补齐:
```bash
# 目标形态
# 标准开发命令(在 MSYS2 bash 中运行)
.venv/bin/python manage.py check
.venv/bin/python manage.py test
.venv/bin/python manage.py runserver