Zhengen
|
2b60c0d5e0
|
feat: add 18 independent industry demo templates
|
2026-11-03 22:33:03 +08:00 |
|
Zhengen
|
e28364e061
|
Merge remote-tracking branch 'origin/master'
|
2026-10-27 21:37:26 +08:00 |
|
Zhengen
|
d33174192d
|
feat: add company site setup wizard and software service template
|
2026-10-27 21:36:22 +08:00 |
|
Zhengen
|
c602a26d1b
|
feat: 新增 seed_own_showcase 命令,创建产品页“世耀CMS”与官网自身案例页
- apps/core/management/commands/seed_own_showcase.py:幂等地在生产已有的
ProductIndexPage/CaseStudyIndexPage 下创建/更新“世耀CMS”产品页与衡水世耀
科技官网建设案例页;产品/栏目页缺失时 CommandError 退出,不自动创建栏目。
- apps/core/tests.py:新增 3 个用例(缺栏目页报错、创建成功、重复执行幂等),
pytest 75 -> 78,全部通过。
|
2026-10-16 21:19:43 +08:00 |
|
Zhengen
|
f2927bae8e
|
feat: expose column intros, page covers and blog tags
|
2026-10-11 19:44:48 +08:00 |
|
Zhengen
|
858f35cf62
|
fix: expose page SEO fields and invalidate shared page cache
|
2026-10-11 18:02:12 +08:00 |
|
Zhengen
|
eab27b3454
|
修复 /contact 404:新增 ContactPage 模型 + 线索表单区块
- 新增 apps.core.ContactPage(SEOablePage),复用 COMMON_BLOCKS StreamField,
挂载于 HomePage 下;同步补充 HomePage.subpage_types 使后台可创建该子页面。
- 新增迁移 apps/core/migrations/0003_contactpage.py。
- 新增幂等管理命令 seed_contact_page:创建"联系我们"线索表单定义
(姓名/公司/电话/邮箱/需求描述)+ 创建/更新 slug=contact 的页面,
接入 bootstrap_deployment 部署引导流程。
- apps/home/tests.py 补充 ContactPage 相关回归测试(subpage_types 集合、
管理后台可创建性参数化用例),全仓库 pytest 65 -> 68 全部通过。
- 设计文档 §2.16 进度清单同步更新。
|
2026-09-23 10:24:38 +08:00 |
|
Zhengen
|
c52e3a3ff5
|
修复 Wagtail API v2 fields= 参数请求自定义字段返回 400 的问题
所有 Page 模型(SEOablePage 及其子类 HomePage/BlogPage/BlogIndexPage/
ProductPage/CaseStudyPage/SolutionPage)此前均未声明 api_fields,导致
前端 fields=body,seo_title_override,... 等请求被 Wagtail API v2 拒绝并
返回 400(Wagtail 默认只暴露 id/meta/title,其余字段必须显式加入
api_fields 才能通过 ?fields= 查询)。这正是生产环境首页显示"尚未连接到
Wagtail CMS"的根因。
- apps/core/models.py: SEOablePage 增加 api_fields(seo_title_override/
seo_description_override);SimpleContentPage 追加 body
- apps/home/models.py: HomePage 追加 body
- apps/blog/models.py: BlogIndexPage 追加 intro;BlogPage 追加
published_at/intro/body
- apps/products/models.py: ProductPage 追加 summary/body
- apps/cases/models.py: CaseStudyPage 追加 client_name/industry/
published_at/summary/body
- apps/solutions/models.py: SolutionPage 追加 industry/summary/body
api_fields 是纯 Wagtail 类属性,不是 Django 模型字段,因此不产生新的
migration(makemigrations --check 确认 No changes detected)。
验证:pytest 67 个用例全部通过;manage.py check 无新增错误(仅已知
treebeard.E001 警告)。
|
2026-09-14 16:22:01 +08:00 |
|
Zhengen
|
599483c3f2
|
部署引导联动首页初始化:bootstrap_deployment 自动调用 seed_homepage/seed_privacy_policy
- bootstrap_deployment 在 setup_rbac_groups 之后依次调用 seed_homepage、
seed_privacy_policy,容器每次启动(entrypoint.sh: migrate -> collectstatic ->
bootstrap_deployment)会自动创建首页并绑定 Site.root_page,再创建隐私政策页面,
无需人工登录后台手动操作。
- 新增测试验证联动创建效果与幂等性(pytest 65 -> 67,全部通过)。
|
2026-09-10 16:15:27 +08:00 |
|
Zhengen
|
ca1e63e973
|
新增 seed_homepage 管理命令:初始化首页内容
- apps/home/migrations/0001_initial.py 只创建了 HomePage 表结构,未像
`wagtail start` 项目模板那样附带创建首页实例的数据迁移,全新环境
migrate 后后台看到的仍是 Wagtail 自带占位欢迎页
- 新命令 `python manage.py seed_homepage`(幂等,可重复执行/放入部署
脚本):
- 创建 home.HomePage 实例并填充默认 StreamField 区块(Hero/数据
展示/能力网格/CTA),供运营在此基础上编辑
- 将默认 Site.root_page 指向新首页
- 清理 Wagtail 自带占位页
- 注意 Site.root_page 外键 on_delete=CASCADE,需先切换 Site 指向再
删除占位页,避免级联删除 Site 记录
|
2026-08-19 17:18:40 +08:00 |
|
Zhengen
|
147107501b
|
补充测试覆盖率 + 新增部署引导命令 bootstrap_deployment
- 新增 apps/blog、apps/solutions、apps/home、apps/api 测试文件,覆盖标签/排序/
草稿过滤、HomePage.subpage_types 回归测试、page_preview 预览接口
- apps/core/tests.py 新增健康检查端点、发布 webhook 信号、bootstrap_deployment
命令的测试用例,pytest 用例数从 40 增至 65,全部通过
- 修复 apps/api/urls.py 中 PagePreviewAPIViewSet.get_object() 未捕获
DoesNotExist 导致 500 而非文档承诺 404 的 bug
- 新增 apps/core/management/commands/bootstrap_deployment.py:部署时按环境变量
幂等创建首个超级管理员账号并联动初始化 RBAC 权限组,.env.example 补充对应
环境变量说明
- 新增 OpenSearch + 中文分词本地 PoC 脚手架(docker-compose.opensearch.yml +
docker/opensearch/Dockerfile),调研结论详见设计文档 §2.10
- 更新设计文档 §2.16 Phase 1 进度清单
|
2026-08-11 14:47:10 +08:00 |
|
Zhengen
|
f37571f395
|
feat(rbac): 落地 Wagtail Group + GroupPagePermission/GroupCollectionPermission/Snippet 权限体系
新增 setup_rbac_groups 幂等管理命令,按设计方案 §2.8 矩阵创建 5 个 Group(站点管理员/编辑/审核员/作者/查看者),配置页面/图片文档/Snippet/用户管理权限;Author 仅编辑自己页面利用 Wagtail 内置 OwnershipPermissionPolicy 实现,无需自定义 hook;新增 7 个单元测试,pytest 33→40 全部通过。
|
2026-08-07 17:07:39 +08:00 |
|
Zhengen
|
3944e11330
|
feat(core): 补全剩余 6 个 StreamField Block (ProductCard/Pricing/Timeline/Team/TechStack/Video)
- apps/core/blocks.py 新增 ProductCardBlock/PricingBlock/TimelineBlock/TeamBlock/TechStackBlock/VideoBlock,COMMON_BLOCKS 扩充至 14 个内容 Block
- TeamBlock 新增 TeamMemberChooserBlock(SnippetChooserBlock),复用 FormBlock 已有的 get_api_representation 展开模式,展开 TeamMember 完整字段(含 serialize_image 复用)
- 为 blog/cases/home/products/solutions 五个 Page 模型生成并应用 alter field body 迁移(StreamField block 定义变更会写入迁移 state)
- apps/core/tests.py 新增 TeamMemberChooserBlock 空值/展开单元测试,pytest 33 个用例全部通过
- 设计文档 §2.6/§2.16 同步更新为已实现
|
2026-08-07 15:58:44 +08:00 |
|
Zhengen
|
8d440b9e4a
|
feat: 实现预览模式(wagtail-headless-preview + Next.js Draft Mode)
|
2026-08-07 15:34:46 +08:00 |
|
Zhengen
|
16e4f97e74
|
国内可访问服务替换排查:新增蜜罐反垃圾字段 + CDN 加速域名配置
|
2026-08-07 14:49:00 +08:00 |
|
Zhengen
|
d6503bb46f
|
feat: 实现PIPL数据主体删除权支持功能
- 新增 LeadDeletionRequest 模型,支持邮箱验证的删除申请/确认流程
- POST /api/v1/custom/leads/deletion-requests/ 发起申请(通用响应避免探测邮箱是否存在)
- POST /api/v1/custom/leads/deletion-requests/confirm/ 确认删除(24小时token有效期)
- 按邮箱在 Lead.data 中匹配并删除对应记录,跨SQLite/Postgres使用Python级匹配
- LeadDeletionRequest 通过 Django Admin 只读展示供合规审计
- 新增 FRONTEND_BASE_URL 设置用于拼接邮件确认链接
- apps/forms/tests.py 新增6个测试用例(含节流缓存隔离修复),全仓库30个用例通过
- 更新设计文档 §2.15/§2.16 勾选项
|
2026-08-07 13:29:20 +08:00 |
|
Zhengen
|
8fbbd2e6b0
|
feat: 新增Snippet全局内容模型(TeamMember/Testimonial/Partner/NavigationMenu/SiteSettings)
- 新增 apps.core.TeamMember/Testimonial/Partner:简单 register_snippet,含 order 排序字段
- 新增 apps.core.NavigationMenu+NavigationMenuItem:ClusterableModel+Orderable+InlinePanel,
支持内部页面或外部链接二选一
- 新增 apps.core.SiteSettings:接入 wagtail.contrib.settings + BaseSiteSetting,
存放公司信息/ICP备案号/社交账号等全局配置
- 新增只读 API:/api/v1/custom/core/{team,testimonials,partners,navigation,site-settings}/
- 补充 apps/core/tests.py 单元测试,pytest 用例由 11 个增至 24 个,全部通过
- 更新设计文档 §2.16 Phase 1 进度清单
|
2026-08-07 13:06:22 +08:00 |
|
Zhengen
|
b05d2b7f52
|
feat: 新增隐私政策内容页(apps.core.SimpleContentPage)及seed命令,更新设计文档
|
2026-08-06 17:17:07 +08:00 |
|
Zhengen
|
052fff1a40
|
feat: add solutions app, fix HomePage subpage_types, add pytest test suite
- apps/solutions: SolutionIndexPage/SolutionPage (mirrors products/cases)
- apps/home: HomePage.subpage_types now includes products/solutions/cases index pages (previously only blog, blocking admin page creation)
- pytest.ini + conftest.py (root_page/home_page fixtures)
- unit tests for core (SEOablePage, FormBlock API repr), products, cases, forms (lead submit API)
|
2026-08-06 16:23:49 +08:00 |
|
Zhengen
|
12f7caa158
|
feat: add products/cases page models and forms lead-capture app
- apps/products: ProductIndexPage/ProductPage
- apps/cases: CaseStudyIndexPage/CaseStudyPage
- apps/forms: FormDefinition/FormDefinitionField/Lead + submit API
- core/blocks: CaseStudyBlock, FormBlock (with API representation)
- register new apps, custom leads API route, migrations
|
2026-08-06 16:04:21 +08:00 |
|
Zhengen
|
7f51a31150
|
chore: initial commit of Wagtail backend scaffold
|
2026-08-06 15:56:14 +08:00 |
|