feat: add import template download link
This commit is contained in:
+24
-1
@@ -1554,7 +1554,7 @@
|
||||
- 安全:该资源公开匿名下载,不需要 API Key、不读取用户、不扣点;页面不得暴露 `MEDIA_ROOT` 或服务器本地路径;当前模板互斥用应用层事务处理,不使用 MySQL 不支持的条件唯一约束。
|
||||
- 接口:不新增对外 JSON API,首页 SSR 直接渲染当前模板下载链接即可。
|
||||
- 文档变更:
|
||||
- `docs/06-tasks.md`:新增 T-610「首页导入模板下载入口」,状态 TODO,并增加 M9 里程碑。
|
||||
- `docs/06-tasks.md`:新增 T-610「首页导入模板下载入口」,并增加 M9 里程碑。
|
||||
- `docs/02-requirements.md`:新增 P1「导入模板下载」功能行,游客权限加入公开模板下载入口。
|
||||
- `docs/04-architecture.md`:新增 `ImportTemplate` 目标 schema 和首页 / admin / media 托管口径。
|
||||
- `docs/routes.md`:更新 `/` 首页职责与 admin 管理项。
|
||||
@@ -1562,3 +1562,26 @@
|
||||
- `docs/00-ai-start-here.md`、`docs/current-state.md`:记录 T-610 为下一个可领取任务。
|
||||
- 验证:纯文档修改;`git diff --check` 通过。
|
||||
- 下一步:领取 T-610,先实现 `ImportTemplate` 模型/admin/迁移,再更新 `HomeView` 与首页模板,补目标测试并验证迁移、check、portal 首页测试。
|
||||
|
||||
## 2026-07-08 实施:T-610 首页导入模板下载入口
|
||||
|
||||
- 状态:DONE。
|
||||
- 代码变更:
|
||||
- `apps/portal/models.py`:新增 `ImportTemplate`,字段包含 `name`、`file`、`external_url`、`sha256`、`is_current`、`notes`、`created_at`、`updated_at`;保存当前模板时在事务内把其他 current 置为 false,不使用 MySQL 条件唯一约束。
|
||||
- `apps/portal/admin.py`:注册导入模板后台,支持上传模板文件、填写外部下载地址、标记当前模板、查看 SHA256 与下载来源。
|
||||
- `apps/portal/views.py`:`HomeView` 同时读取当前 Windows 客户端版本与当前导入模板;本地模板 `file.url` 会转成当前站点绝对 URL,`external_url` 优先。
|
||||
- `apps/portal/templates/portal/home.html`:在首页 hero 与下载区的“下载客户端”旁展示“下载导入模板”;无当前模板或无下载地址时不展示,不影响首页 200。
|
||||
- `apps/portal/migrations/0003_importtemplate.py`:新增 `import_template` 表。
|
||||
- `apps/portal/tests.py`:补充首页模板链接、外部 URL 优先、本地文件绝对 URL、本地路径不泄露、当前模板互斥、admin 字段可见的目标测试。
|
||||
- 文档变更:
|
||||
- `docs/06-tasks.md`:T-610 标记为 DONE。
|
||||
- `docs/00-ai-start-here.md`、`docs/current-state.md`、`docs/04-architecture.md`、`docs/routes.md`、`docs/api.md`:同步 T-610 已落地口径。
|
||||
- 验证:
|
||||
- `py -3.12 manage.py makemigrations portal`:生成 `portal.0003_importtemplate`。
|
||||
- `py -3.12 -m py_compile apps\portal\models.py apps\portal\admin.py apps\portal\views.py apps\portal\tests.py`:通过。
|
||||
- `py -3.12 manage.py makemigrations --check --dry-run`:通过,No changes detected。
|
||||
- `py -3.12 manage.py check`:通过,0 issues。
|
||||
- `py -3.12 manage.py test apps.portal.tests.PortalAccountFlowTests.test_homepage_is_public_and_shows_anonymous_onboarding_without_release apps.portal.tests.PortalAccountFlowTests.test_homepage_shows_current_import_template_download_link apps.portal.tests.PortalAccountFlowTests.test_homepage_builds_absolute_import_template_file_url_without_local_path apps.portal.tests.PortalAccountFlowTests.test_homepage_prefers_import_template_external_url_over_file apps.portal.tests.PortalAccountFlowTests.test_import_template_only_keeps_one_current apps.portal.tests.PortalAccountFlowTests.test_import_template_admin_exposes_download_fields --keepdb --noinput --verbosity 2`:通过,6 tests OK,并在测试库应用 `portal.0003_importtemplate`。
|
||||
- `py -3.12 manage.py test apps.portal --keepdb --noinput --verbosity 1`:跑到后段时远程 MySQL `43.128.3.240` 连接被重置(2013 / WinError 10054);前 27 条已通过,后续 8 errors 为连接断开后的事务错误。
|
||||
- `git diff --check`:通过,仅 Windows CRLF 提示。
|
||||
- 下一步:提交后可部署到 185.216.248.75,执行迁移并在 django-admin 新增当前导入模板记录;配置模板后线上首页才会显示“下载导入模板”。
|
||||
|
||||
Reference in New Issue
Block a user