Files
eryao/.trellis/tasks/04-16-starter-package-purchase-tracking/task.json
T
qzl ff40ff9dd8 feat: 新人初始礼包购买追踪功能
- 数据库:添加 has_purchased_starter_pack 字段到 register_bonus_claims
- 后端:创建静态配置管理套餐信息,支持按国家/地区区分
- 后端:新增 GET /api/v1/points/packages API 返回可用套餐
- 后端:创建 utils/paths.py 统一路径管理
- 前端:动态获取套餐信息,移除硬编码
- 前端:添加 ProductCode 枚举约束,前后端类型安全
- 配置:Profile 默认国家改为 US(ISO 3166-1 alpha-2)
- 文档:更新协议文档说明新 API 和字段
2026-04-16 16:11:09 +08:00

154 lines
4.2 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"id": "starter-package-purchase-tracking",
"name": "starter-package-purchase-tracking",
"title": "新人初始礼包购买追踪 + 动态套餐配置",
"description": "在 register_bonus_claims 表添加字段追踪是否购买新人初始礼包,创建静态配置文件管理套餐,提供统一的套餐信息 API",
"status": "planning",
"dev_type": "fullstack",
"scope": ["backend", "apps"],
"priority": "P2",
"creator": "zl-q",
"assignee": "zl-q",
"createdAt": "2026-04-16",
"completedAt": null,
"branch": "worktree/feat-starter-package-purchase-tracking",
"base_branch": "dev",
"worktree_path": "/home/qzl/Code/eryao/.worktrees/feat-starter-package-purchase-tracking",
"current_phase": 0,
"next_action": [
{
"phase": 1,
"action": "implement"
},
{
"phase": 2,
"action": "check"
},
{
"phase": 3,
"action": "finish"
},
{
"phase": 4,
"action": "create-pr"
}
],
"commit": null,
"pr_url": null,
"subtasks": [
{
"id": "static-config",
"title": "静态配置:创建套餐配置文件(us.yaml, default.yaml",
"status": "completed",
"phase": 1
},
{
"id": "config-loader",
"title": "配置加载层:创建 packages loader/schema/registry",
"status": "pending",
"phase": 1
},
{
"id": "db-migration",
"title": "数据库迁移:添加 has_purchased_starter_pack 字段",
"status": "pending",
"phase": 1
},
{
"id": "backend-model",
"title": "后端 Model 层:更新 RegisterBonusClaims",
"status": "pending",
"phase": 1
},
{
"id": "backend-repository",
"title": "后端 Repository 层:添加查询方法",
"status": "pending",
"phase": 1
},
{
"id": "backend-service",
"title": "后端 Service 层:实现套餐获取与资格检查逻辑",
"status": "pending",
"phase": 1
},
{
"id": "backend-schema",
"title": "后端 Schema 层:定义 PackagesResponse/PackageInfo",
"status": "pending",
"phase": 1
},
{
"id": "backend-router",
"title": "后端 Router 层:添加统一 GET /packages 路由",
"status": "pending",
"phase": 1
},
{
"id": "profile-default-country",
"title": "Profile 默认值:country 从 CN 改为 US(前后端)",
"status": "pending",
"phase": 1
},
{
"id": "backend-tests",
"title": "后端单元测试",
"status": "pending",
"phase": 1
},
{
"id": "frontend-models",
"title": "前端数据模型:PackageInfo/PackagesResult",
"status": "pending",
"phase": 1
},
{
"id": "frontend-api",
"title": "前端 API 调用层",
"status": "pending",
"phase": 1
},
{
"id": "frontend-ui",
"title": "前端 UICoinCenterScreen 动态渲染套餐",
"status": "pending",
"phase": 1
},
{
"id": "docs-protocol",
"title": "更新协议文档",
"status": "pending",
"phase": 1
},
{
"id": "integration-test",
"title": "集成测试验证",
"status": "pending",
"phase": 2
}
],
"children": [],
"parent": null,
"relatedFiles": [
"backend/src/core/config/static/packages/us.yaml",
"backend/src/core/config/static/packages/default.yaml",
"backend/src/core/config/packages/loader.py",
"backend/src/core/config/packages/schema.py",
"backend/src/core/config/packages/registry.py",
"backend/src/models/register_bonus_claims.py",
"backend/src/v1/points/repository.py",
"backend/src/v1/points/service.py",
"backend/src/v1/points/schemas.py",
"backend/src/v1/points/router.py",
"apps/lib/features/settings/data/models/profile_settings.dart",
"apps/lib/features/settings/presentation/screens/coin_center_screen.dart",
"docs/protocols/common/user-points-chat-data-protocol.md"
],
"notes": "本期不实现支付流程,仅提供套餐信息查询 API。采用 ISO 3166-1 alpha-2 国家代码。",
"meta": {
"country_code_standard": "ISO 3166-1 alpha-2",
"default_country": "US",
"packages_count": 4
}
}