# 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 用量追踪。
