Files
ftb-project-management/docs/superpowers/specs/2026-06-08-project-structure-design.md
Script Generator 8de1f93fd3 feat: 初始化 FTB 智能项目管理系统 monorepo 项目结构
包含 Turborepo 配置、Next.js 前端骨架、NestJS 后端骨架、Prisma Schema、
共享类型包、Docker Compose 和环境变量模板。

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-08 10:31:35 +08:00

135 lines
5.3 KiB
Markdown
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.

# FTB 智能项目管理系统 — 项目结构设计
## 概述
基于 AI 能力的项目管理平台,核心层级:产品 → 项目 → 迭代 → 任务。采用 Turborepo monorepo + Next.js + NestJS + PostgreSQL 技术栈。
## 数据层级
```
产品 (Product) — 顶层容器
├── 需求池 (Requirement) — 需求管理、评审流转
├── 发布版本 (Version) — v1.0/v2.0,关联多个任务追踪发布范围
└── 项目 (Project) — 归属于产品
├── 迭代 (Sprint) — 时间盒开发周期
└── 任务 (Task) — 归属迭代,可关联版本
```
## 后端模块划分
| 模块 | 职责 | 关键实体 |
|------|------|---------|
| product | 产品 CRUD、需求池管理、需求评审状态流转 | Product, Requirement |
| version | 产品发布版本、版本规划、关联任务范围 | Version |
| project | 项目 CRUD、项目设置 | Project |
| sprint | 迭代管理、迭代规划、燃尽图数据源 | Sprint |
| task | 任务 CRUD、状态机、看板、甘特图、子任务 | Task, Comment, Attachment |
| member | 用户管理、角色分配RBAC、项目成员 | User, Role, ProjectMember |
| dashboard | "与我相关"聚合视图 | 无独立实体,聚合查询 |
| ai | 任务智能分解、风险预警、排期建议 | AiLog |
| common | 守卫、拦截器、管道、装饰器 | — |
## 目录结构
```
ftb-project-management/
├── apps/
│ ├── web/ # Next.js 14+ (App Router)
│ │ ├── app/
│ │ │ ├── (auth)/ # 登录、注册
│ │ │ ├── workspace/ # "与我相关"
│ │ │ ├── products/ # 产品列表 + 详情
│ │ │ │ └── [id]/
│ │ │ │ ├── requirements/ # 需求池
│ │ │ │ └── versions/ # 版本管理
│ │ │ ├── projects/
│ │ │ │ └── [id]/
│ │ │ │ ├── board/ # 看板
│ │ │ │ ├── gantt/ # 甘特图
│ │ │ │ ├── sprints/ # 迭代
│ │ │ │ └── settings/ # 项目设置+成员
│ │ │ └── admin/ # 全局管理
│ │ ├── components/
│ │ │ ├── ui/ # Shadcn 基础组件
│ │ │ ├── board/ # 看板组件
│ │ │ ├── gantt/ # 甘特图组件
│ │ │ └── shared/ # 通用业务组件
│ │ ├── hooks/
│ │ ├── stores/ # Zustand stores
│ │ └── lib/ # 工具函数、API client
│ └── server/ # NestJS 后端
│ ├── src/
│ │ ├── modules/
│ │ │ ├── product/
│ │ │ ├── version/
│ │ │ ├── project/
│ │ │ ├── sprint/
│ │ │ ├── task/
│ │ │ ├── member/
│ │ │ ├── dashboard/
│ │ │ └── ai/
│ │ ├── common/ # 守卫、拦截器、管道
│ │ └── prisma/ # Schema + Migrations
│ └── test/
├── packages/
│ └── shared/ # 前后端共享类型、枚举、常量
├── docker-compose.yml
├── docker-compose.prod.yml
└── turbo.json
```
## 前端路由
| 路由 | 页面 |
|------|------|
| `/login` | 登录 |
| `/workspace` | "与我相关"(我的任务、我创建的、我关注的) |
| `/products` | 产品列表 |
| `/products/[id]` | 产品详情 |
| `/products/[id]/requirements` | 需求池 |
| `/products/[id]/versions` | 版本管理 |
| `/projects/[id]/board` | 看板 |
| `/projects/[id]/gantt` | 甘特图 |
| `/projects/[id]/sprints` | 迭代管理 |
| `/projects/[id]/settings` | 项目设置 + 成员管理 |
| `/admin/members` | 全局人员管理 |
## 任务状态机
```
todo → in_progress → in_review → done → closed
```
看板列对应状态,支持自定义列名但不改变底层状态枚举。
## 关键数据关系
- Product 1:N Project产品下有多个项目
- Product 1:N Requirement产品有需求池
- Product 1:N Version产品有发布版本
- Project 1:N Sprint项目有多个迭代
- Sprint 1:N Task迭代包含多个任务
- Task N:1 Version任务可关联到某个发布版本
- Task 自引用parent_id无限层级子任务
- Requirement → Task需求可一键转为任务
- Task 有 assignee、creator、watchers
## 权限模型
项目级 RBAC四个角色
- **Owner** — 项目所有者,全部权限
- **Admin** — 管理成员、修改项目设置
- **Member** — 创建/编辑任务、评论
- **Viewer** — 只读访问
全局管理员可管理所有产品和人员。
## AI 模块
独立 NestJS Module统一通过 AiGateway 调用:
- 任务智能分解:输入需求描述,输出结构化子任务列表
- 风险预警:分析项目延期风险,基于历史数据和当前进度
- 排期建议:基于成员负载和任务依赖给出时间安排
所有 AI 调用记录到 AiLog 表,支持审计和 token 用量追踪。