diff --git a/specs/001-ai-project-navigator/tasks.md b/specs/001-ai-project-navigator/tasks.md index 1f1d8d8..6c978b4 100644 --- a/specs/001-ai-project-navigator/tasks.md +++ b/specs/001-ai-project-navigator/tasks.md @@ -21,12 +21,12 @@ **目的**: 项目初始化和基本结构 -- [ ] T001 创建 Next.js 14+ 项目并配置 TypeScript 严格模式 -- [ ] T002 安装核心依赖包 -- [ ] T003 [P] 配置 ESLint 和 Prettier -- [ ] T004 [P] 配置 Tailwind CSS -- [ ] T005 [P] 配置 shadcn/ui 组件库 -- [ ] T006 [P] 配置 next-intl 国际化 +- [x] T001 创建 Next.js 14+ 项目并配置 TypeScript 严格模式 +- [x] T002 安装核心依赖包 +- [x] T003 [P] 配置 ESLint 和 Prettier +- [x] T004 [P] 配置 Tailwind CSS +- [x] T005 [P] 配置 shadcn/ui 组件库 +- [x] T006 [P] 配置 next-intl 国际化 --- @@ -36,15 +36,15 @@ **⚠️ 关键**: 在此阶段完成之前, 无法开始任何用户故事工作 -- [ ] T007 设置 PostgreSQL 数据库 -- [ ] T008 创建 Prisma schema 定义 -- [ ] T009 执行 Prisma 初始迁移 -- [ ] T010 生成 Prisma Client -- [ ] T011 创建 Zod 验证 schemas -- [ ] T012 创建 Prisma 客户端单例 -- [ ] T013 创建种子数据脚本 -- [ ] T014 配置 Next.js 国际化路由结构 -- [ ] T015 创建环境变量配置文件 +- [x] T007 设置 PostgreSQL 数据库 +- [x] T008 创建 Prisma schema 定义 +- [x] T009 执行 Prisma 初始迁移 +- [x] T010 生成 Prisma Client +- [x] T011 创建 Zod 验证 schemas +- [x] T012 创建 Prisma 客户端单例 +- [x] T013 创建种子数据脚本 +- [x] T014 配置 Next.js 国际化路由结构 +- [x] T015 创建环境变量配置文件 **检查点**: 基础就绪 - 现在可以开始并行实施用户故事 @@ -58,20 +58,20 @@ ### 用户故事 1 的实施 -- [ ] T016 [P] [US1] 创建首页布局组件 src/app/[locale]/layout.tsx -- [ ] T017 [P] [US1] 创建 Header 导航组件 src/components/layout/Header.tsx -- [ ] T018 [P] [US1] 创建 Footer 组件 src/components/layout/Footer.tsx -- [ ] T019 [P] [US1] 创建 Navigation 组件 src/components/layout/Navigation.tsx -- [ ] T020 [P] [US1] 创建 TagCloud 组件 src/components/project/TagCloud.tsx -- [ ] T021 [P] [US1] 创建 ProjectCard 组件 src/components/project/ProjectCard.tsx -- [ ] T022 [P] [US1] 创建 ProjectList 组件 src/components/project/ProjectList.tsx -- [ ] T023 [P] [US1] 创建 SearchBar 组件 src/components/search/SearchBar.tsx -- [ ] T024 [US1] 实现首页 src/app/[locale]/page.tsx(依赖于 T016-T023) -- [ ] T025 [US1] 实现项目列表页路由 src/app/[locale]/projects/page.tsx -- [ ] T026 [US1] 创建 useSearch hook src/hooks/useSearch.ts -- [ ] T027 [US1] 创建 useProjects hook src/hooks/useProjects.ts -- [ ] T028 [US1] 添加国际化翻译文件 src/messages/zh.json 和 src/messages/en.json -- [ ] T029 [US1] 配置 ISR 缓存策略优化页面性能 +- [x] T016 [P] [US1] 创建首页布局组件 src/app/[locale]/layout.tsx +- [x] T017 [P] [US1] 创建 Header 导航组件 src/components/layout/Header.tsx +- [x] T018 [P] [US1] 创建 Footer 组件 src/components/layout/Footer.tsx +- [x] T019 [P] [US1] 创建 Navigation 组件 src/components/layout/Navigation.tsx +- [x] T020 [P] [US1] 创建 TagCloud 组件 src/components/project/TagCloud.tsx +- [x] T021 [P] [US1] 创建 ProjectCard 组件 src/components/project/ProjectCard.tsx +- [x] T022 [P] [US1] 创建 ProjectList 组件 src/components/project/ProjectList.tsx +- [x] T023 [P] [US1] 创建 SearchBar 组件 src/components/search/SearchBar.tsx +- [x] T024 [US1] 实现首页 src/app/[locale]/page.tsx(依赖于 T016-T023) +- [x] T025 [US1] 实现项目列表页路由 src/app/[locale]/projects/page.tsx +- [x] T026 [US1] 创建 useSearch hook src/hooks/useSearch.ts +- [x] T027 [US1] 创建 useProjects hook src/hooks/useProjects.ts +- [x] T028 [US1] 添加国际化翻译文件 src/messages/zh.json 和 src/messages/en.json +- [x] T029 [US1] 配置 ISR 缓存策略优化页面性能 **检查点**: 此时, 用户应该能够访问首页、浏览项目、使用搜索和标签筛选功能 @@ -85,11 +85,11 @@ ### 用户故事 2 的实施 -- [ ] T030 [P] [US2] 创建 ProjectDetail 组件 src/components/project/ProjectDetail.tsx -- [ ] T031 [P] [US2] 创建 ExternalLinkCard 组件 src/components/project/ExternalLinkCard.tsx -- [ ] T032 [US2] 实现项目详情页路由 src/app/[locale]/projects/[id]/page.tsx(依赖于 T030、T031) -- [ ] T033 [US2] 添加项目详情页的国际化翻译 -- [ ] T034 [US2] 实现外部链接的 target="_blank" 安全属性 +- [x] T030 [P] [US2] 创建 ProjectDetail 组件 src/components/project/ProjectDetail.tsx +- [x] T031 [P] [US2] 创建 ExternalLinkCard 组件 src/components/project/ExternalLinkCard.tsx +- [x] T032 [US2] 实现项目详情页路由 src/app/[locale]/projects/[id]/page.tsx(依赖于 T030、T031) +- [x] T033 [US2] 添加项目详情页的国际化翻译 +- [x] T034 [US2] 实现外部链接的 target="_blank" 安全属性 **检查点**: 此时, 用户故事 1 和用户故事 2 都应该完全功能化且可独立测试 @@ -124,15 +124,15 @@ ### 用户故事 4 的实施 -- [ ] T043 [P] [US4] 创建 WebhookAuthSchema 验证 -- [ ] T044 [P] [US4] 创建 WebhookPayloadSchema 验证 -- [ ] T045 [P] [US4] 创建 ProjectInputSchema 验证 -- [ ] T046 [US4] 实现 webhook API 端点 src/app/api/webhook/projects/route.ts(依赖于 T043-T045) -- [ ] T047 [US4] 实现 API Key 身份验证中间件 -- [ ] T048 [US4] 实现部分成功模式的批量数据处理逻辑 -- [ ] T049 [US4] 添加 webhook 请求日志记录 -- [ ] T050 [US4] 添加 webhook 错误处理和响应格式 -- [ ] T051 [US4] 配置 webhook API 的环境变量 +- [x] T043 [P] [US4] 创建 WebhookAuthSchema 验证 +- [x] T044 [P] [US4] 创建 WebhookPayloadSchema 验证 +- [x] T045 [P] [US4] 创建 ProjectInputSchema 验证 +- [x] T046 [US4] 实现 webhook API 端点 src/app/api/webhook/projects/route.ts(依赖于 T043-T045) +- [x] T047 [US4] 实现 API Key 身份验证中间件 +- [x] T048 [US4] 实现部分成功模式的批量数据处理逻辑 +- [x] T049 [US4] 添加 webhook 请求日志记录 +- [x] T050 [US4] 添加 webhook 错误处理和响应格式 +- [x] T051 [US4] 配置 webhook API 的环境变量 - [ ] T052 [US4] 编写 webhook API 使用文档 **检查点**: 此时, 所有用户故事现在应该完全功能化