feat(phase8-task201): EditTemplate + EditPlan 数据模型、仓储、迁移与测试 #141

Closed
xiaoxia wants to merge 1 commits from feature/phase8-task201-data-models into develop
Owner

Phase 8 模板编排引擎 — 任务 2.01 数据模型

完成内容

领域实体(六边形架构)

  • EditTemplate:模板名称、描述、类型、配置(JSON)、预览图、排序权重、状态(active/inactive)
  • EditPlan:关联 template、计划名称、状态机(draft→editing→rendering→completed/failed)、总时长、配置(JSON)

ORM 模型

  • EditTemplateModel:替换旧 schema,新增 template_type/config/preview_url/sort_weight/status 字段
  • EditPlanModel:新建表,含 template_id 关联、status 索引

仓储层

  • SQLAlchemyEditTemplateRepository:CRUD + list_active + count
  • SQLAlchemyEditPlanRepository:CRUD + list_by_template + count

数据库迁移

  • 016_phase8_edit_template_plan.py:ALTER edit_templates(删旧列+加新列)+ CREATE edit_plans

测试

  • 14 个单元测试全部通过(领域实体 + 仓储 CRUD)

验收标准

  • SQLAlchemy 模型创建
  • 数据库迁移脚本就绪
  • 基础单元测试通过
## Phase 8 模板编排引擎 — 任务 2.01 数据模型 ### 完成内容 **领域实体(六边形架构)** - `EditTemplate`:模板名称、描述、类型、配置(JSON)、预览图、排序权重、状态(active/inactive) - `EditPlan`:关联 template、计划名称、状态机(draft→editing→rendering→completed/failed)、总时长、配置(JSON) **ORM 模型** - `EditTemplateModel`:替换旧 schema,新增 template_type/config/preview_url/sort_weight/status 字段 - `EditPlanModel`:新建表,含 template_id 关联、status 索引 **仓储层** - `SQLAlchemyEditTemplateRepository`:CRUD + list_active + count - `SQLAlchemyEditPlanRepository`:CRUD + list_by_template + count **数据库迁移** - `016_phase8_edit_template_plan.py`:ALTER edit_templates(删旧列+加新列)+ CREATE edit_plans **测试** - 14 个单元测试全部通过(领域实体 + 仓储 CRUD) ### 验收标准 - [x] SQLAlchemy 模型创建 - [x] 数据库迁移脚本就绪 - [x] 基础单元测试通过
xiaoxia added 1 commit 2026-07-01 13:03:07 +08:00
feat(phase8-task201): EditTemplate + EditPlan 数据模型、仓储、迁移与测试
Deploy / Build Production Runtime Images (push) Has been skipped
Deploy / Deploy Production (push) Has been skipped
Deploy / Production Browser E2E (push) Has been skipped
CI/CD Pipeline / Frontend Lint (pull_request) Failing after 191h48m18s
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Failing after 191h48m20s
Deploy / Deploy Staging (push) Failing after 191h50m54s
CI/CD Pipeline / Frontend Lint (push) Failing after 191h51m34s
CI/CD Pipeline / Validate Code Quality And Tests (push) Failing after 191h51m40s
b5add6e402
- 新增 EditTemplate 领域实体(六边形架构,@dataclass)
- 新增 EditPlan 领域实体(含状态机:draft→editing→rendering→completed/failed)
- 更新 EditTemplateModel ORM 模型(Phase 8 新 schema)
- 新增 EditPlanModel ORM 模型
- 新增 SQLAlchemyEditTemplateRepository(CRUD + list_active)
- 新增 SQLAlchemyEditPlanRepository(CRUD + list_by_template)
- 新增 Alembic 迁移 016:ALTER edit_templates + CREATE edit_plans
- 新增 14 个单元测试(全部通过)
- 更新 domain/__init__.py 和 adapters/__init__.py 导出
Author
Owner

审查通过 — PR #141 Phase 8 数据模型

审查范围: 9 文件 (+826/-6),含领域实体、ORM 模型、仓储层、迁移脚本、14 个单元测试

亮点

  • 六边形架构规范:领域层 (edit_template.py / edit_plan.py) 与基础设施层 (repository) 清晰分离
  • EditPlan 状态机设计严谨:draft → editing → rendering → completed/failed,每个转换都有前置状态校验
  • reset_to_draft() 仅允许从 failed 状态重置,防止误操作
  • Python 3.11 兼容性处理 (StrEnum polyfill) 考虑周到
  • 迁移脚本包含完整的 downgrade 路径,可回滚
  • 14 个测试用例覆盖:实体创建、空白校验、状态流转(正常/异常路径)、仓储 CRUD

P3 建议(不阻塞合并)

  1. 迁移脚本 drop_column 未做 if exists 检查 — 若历史表结构有变动可能报错,建议在 drop 前加 op.execute("ALTER TABLE edit_templates DROP COLUMN IF EXISTS project_id") 等安全写法
  2. EditPlanModel.template_id 未设置 ForeignKey 约束到 edit_templates.id — 当前项目其他模型也未使用 FK,风格一致,但后续可统一评估是否补回
  3. updated_at 字段无 onupdate 自动更新触发器 — 当前在仓储 update() 中手动赋值可行,但若未来有直接 SQL 更新会遗漏

结论:架构规范、测试充分,可以合并。

## ✅ 审查通过 — PR #141 Phase 8 数据模型 **审查范围:** 9 文件 (+826/-6),含领域实体、ORM 模型、仓储层、迁移脚本、14 个单元测试 ### 亮点 - 六边形架构规范:领域层 (edit_template.py / edit_plan.py) 与基础设施层 (repository) 清晰分离 - EditPlan 状态机设计严谨:draft → editing → rendering → completed/failed,每个转换都有前置状态校验 - `reset_to_draft()` 仅允许从 failed 状态重置,防止误操作 - Python 3.11 兼容性处理 (StrEnum polyfill) 考虑周到 - 迁移脚本包含完整的 downgrade 路径,可回滚 - 14 个测试用例覆盖:实体创建、空白校验、状态流转(正常/异常路径)、仓储 CRUD ### P3 建议(不阻塞合并) 1. 迁移脚本 `drop_column` 未做 `if exists` 检查 — 若历史表结构有变动可能报错,建议在 drop 前加 `op.execute("ALTER TABLE edit_templates DROP COLUMN IF EXISTS project_id")` 等安全写法 2. EditPlanModel.template_id 未设置 ForeignKey 约束到 edit_templates.id — 当前项目其他模型也未使用 FK,风格一致,但后续可统一评估是否补回 3. updated_at 字段无 `onupdate` 自动更新触发器 — 当前在仓储 update() 中手动赋值可行,但若未来有直接 SQL 更新会遗漏 **结论:架构规范、测试充分,可以合并。**
xiaoxia closed this pull request 2026-07-01 13:16:01 +08:00
Some checks are pending
Deploy / Build Production Runtime Images (push) Has been skipped
Deploy / Deploy Production (push) Has been skipped
Deploy / Production Browser E2E (push) Has been skipped
CI/CD Pipeline / Frontend Lint (pull_request) Failing after 191h48m18s
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Failing after 191h48m20s
Deploy / Deploy Staging (push) Failing after 191h50m54s
CI/CD Pipeline / Frontend Lint (push) Failing after 191h51m34s
CI/CD Pipeline / Validate Code Quality And Tests (push) Failing after 191h51m40s

Pull request closed

Sign in to join this conversation.