包含 Turborepo 配置、Next.js 前端骨架、NestJS 后端骨架、Prisma Schema、 共享类型包、Docker Compose 和环境变量模板。 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
135 lines
5.3 KiB
Markdown
135 lines
5.3 KiB
Markdown
# 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 用量追踪。
|