Files
ocean_project_manager/docs/pid.md
T
2026-01-25 12:47:29 +08:00

29 KiB
Raw Blame History

项目信息管理系统 - 设计文档

1. 项目概述

1.1 项目背景

开发一个基于BS架构的项目信息管理系统,用于管理项目的合同、编号、名称、预算、付款等信息。系统支持多部门协作,市场部用户可以新建项目,其他部门用户可以填写和更新项目信息。

1.2 技术选型

层级 技术 说明
前端 React + React Router 前后端分离架构
UI组件库 Ant Design 企业级UI组件
HTTP客户端 Axios API请求
状态管理 Context API 简单状态管理
后端 Python Flask 轻量级Web框架
ORM SQLAlchemy 数据库ORM
数据库 MySQL 关系型数据库
认证 JWT Token 无状态认证
开发工具 Create React App, pipenv 前后端开发环境

1.3 系统特点

  • 轻量级架构,适合小并发场景
  • 无需Redis缓存,降低部署复杂度
  • 基于角色的权限控制(RBAC
  • 前后端分离,易于维护和扩展

2. 功能需求

2.1 用户管理

2.1.1 登录功能

  • 用户名/密码登录
  • JWT Token认证
  • 自动登录(Token存储在LocalStorage

2.1.2 用户管理(管理员)

  • 创建用户:设置用户名、密码、部门、角色
  • 编辑用户信息
  • 删除用户
  • 重置用户密码
  • 查看用户列表

2.1.3 权限控制

  • 管理员:所有权限
  • 市场部用户:创建项目、查看项目、编辑自己的项目
  • 其他部门用户:查看项目、编辑项目信息(如付款、状态等)

2.2 项目管理

2.2.1 市场部权限

  • 创建项目:填写项目基本信息
  • 查看项目:浏览所有项目列表和详情
  • 编辑项目:修改自己创建的项目

2.2.2 其他部门权限

  • 查看项目:浏览所有项目列表和详情
  • 更新项目:填写和更新项目信息(预算、付款、状态等)

2.2.3 项目信息字段

字段名 类型 必填 说明
project_no String 项目编号(唯一)
contract_no String 合同编号
name String 项目名称
budget Decimal 项目预算
payment_amount Decimal 已付款金额
status String 项目状态(灵活状态)
start_date Date 开始日期
end_date Date 结束日期
created_by Integer 创建人ID(外键)
department String 所属部门
description Text 项目描述
created_at DateTime 创建时间
updated_at DateTime 更新时间

2.2.4 项目状态示例

  • 新建
  • 进行中
  • 已完成
  • 已暂停
  • 已取消

(支持灵活状态,可由用户自定义)

3. 系统架构

3.1 架构图

┌─────────────────────────────────────────────────┐
│                   浏览器                          │
│  (React + Ant Design + React Router + Axios)     │
└─────────────────────────────────────────────────┘
                      │
                      │ HTTP/HTTPS
                      │ JWT Token
                      ▼
┌─────────────────────────────────────────────────┐
│              Flask 后端服务                      │
│  ┌─────────────────────────────────────────┐   │
│  │   API Layer (Flask Routes)             │   │
│  ├─────────────────────────────────────────┤   │
│  │   Business Logic (Services)            │   │
│  ├─────────────────────────────────────────┤   │
│  │   Data Access (SQLAlchemy ORM)          │   │
│  └─────────────────────────────────────────┘   │
└─────────────────────────────────────────────────┘
                      │
                      │ SQL
                      ▼
┌─────────────────────────────────────────────────┐
│              MySQL 数据库                         │
│  ┌─────────────────────────────────────────┐   │
│  │   users                                  │   │
│  │   projects                               │   │
│  └─────────────────────────────────────────┘   │
└─────────────────────────────────────────────────┘

3.2 项目目录结构

ocean_project_manager/
├── backend/                          # 后端程序员工作区
│   ├── src/                          # 源代码
│   │   ├── controllers/              # 控制器层
│   │   │   ├── auth.py               # 认证相关
│   │   │   ├── users.py              # 用户管理
│   │   │   └── projects.py           # 项目管理
│   │   ├── services/                 # 业务逻辑层
│   │   │   ├── auth_service.py
│   │   │   ├── user_service.py
│   │   │   └── project_service.py
│   │   ├── models/                   # 数据模型层
│   │   │   ├── user.py
│   │   │   └── project.py
│   │   ├── routes/                   # 路由定义
│   │   │   ├── auth.py
│   │   │   ├── users.py
│   │   │   └── projects.py
│   │   ├── middleware/               # 中间件
│   │   │   ├── jwt_middleware.py
│   │   │   └── auth_middleware.py
│   │   └── utils/                    # 工具函数
│   │       ├── jwt_utils.py
│   │       └── password_utils.py
│   ├── tests/                        # 单元测试和集成测试
│   ├── docs/                         # API文档和技术文档
│   │   └── api.md                    # API文档
│   ├── config/                       # 配置文件
│   ├── requirements.txt              # Python依赖
│   ├── run.py                        # 启动文件
│   ├── WORKSTANDARDS.md              # 后端程序员工作规范
│   └── README.md                     # 后端开发说明
│
├── frontend/                         # 前端程序员工作区
│   ├── src/                          # 源代码
│   │   ├── components/               # 可复用组件
│   │   │   ├── Layout.jsx
│   │   │   ├── Header.jsx
│   │   │   └── Sidebar.jsx
│   │   ├── pages/                    # 页面组件
│   │   │   ├── Login.jsx
│   │   │   ├── Dashboard.jsx
│   │   │   ├── UserList.jsx
│   │   │   ├── UserForm.jsx
│   │   │   ├── ProjectList.jsx
│   │   │   ├── ProjectForm.jsx
│   │   │   └── ProjectDetail.jsx
│   │   ├── hooks/                    # 自定义Hooks
│   │   │   └── useAuth.js
│   │   ├── services/                 # API服务
│   │   │   ├── api.js                # Axios配置
│   │   │   ├── auth.js
│   │   │   ├── user.js
│   │   │   └── project.js
│   │   ├── utils/                    # 工具函数
│   │   │   └── auth.js
│   │   ├── styles/                   # 样式文件
│   │   │   └── global.css
│   │   ├── types/                    # TypeScript类型定义
│   │   │   ├── user.ts
│   │   │   └── project.ts
│   │   ├── App.jsx                   # 根组件
│   │   └── index.js                  # 入口文件
│   ├── tests/                        # 组件测试
│   ├── docs/                         # 组件文档和开发文档
│   │   └── components.md             # 组件文档
│   ├── package.json
│   ├── WORKSTANDARDS.md              # 前端程序员工作规范
│   └── README.md                     # 前端开发说明
│
├── testing/                          # 测试工程师工作区
│   ├── testcases/                    # 测试用例
│   │   ├── api/                      # API测试用例
│   │   │   ├── auth_test.json
│   │   │   ├── user_test.json
│   │   │   └── project_test.json
│   │   ├── ui/                       # UI测试用例
│   │   │   ├── login_test.json
│   │   │   ├── user_list_test.json
│   │   │   └── project_list_test.json
│   │   └── integration/              # 集成测试用例
│   │       └── workflow_test.json
│   ├── reports/                      # 测试报告
│   ├── data/                         # 测试数据
│   ├── scripts/                      # 自动化测试脚本
│   │   ├── api_test.py               # API自动化测试
│   │   └── ui_test.js                # UI自动化测试
│   ├── docs/                         # 测试文档
│   │   ├── test_plan.md              # 测试计划
│   │   └── test_strategy.md          # 测试策略
│   ├── WORKSTANDARDS.md              # 测试工程师工作规范
│   └── README.md                     # 测试工作说明
│
├── docs/                             # 项目文档
│   ├── plans/                        # 设计文档
│   │   └── 2026-01-24-project-management-system-design.md
│   ├── ui-design-spec.md             # UI设计规范
│   ├── pid.md                        # 项目信息文档(本文档)
│   └── TEAM-COLLABORATION.md         # 团队协作规范
│
├── ACCESS-CONTROL.md                 # 权限控制文档
├── README.md                         # 项目说明
└── .git/                             # Git仓库

3.3 工作目录说明

后端程序员工作区 (backend/)

  • 负责: 后端API开发、数据库设计、单元测试编写
  • 主要工作: 在 backend/src/ 中编写业务代码
  • 输出文档: backend/docs/api.md - API文档
  • 测试: backend/tests/ - 单元测试和集成测试

前端程序员工作区 (frontend/)

  • 负责: 前端UI开发、组件封装、API集成
  • 主要工作: 在 frontend/src/ 中编写UI组件
  • 输出文档: frontend/docs/components.md - 组件文档
  • 测试: frontend/tests/ - 组件测试

测试工程师工作区 (testing/)

  • 负责: 测试计划编写、测试用例设计、自动化测试
  • 主要工作: 在 testing/testcases/ 中编写测试用例
  • 输出文档: testing/reports/ - 测试报告
  • 自动化: testing/scripts/ - 自动化测试脚本

3.4 权限限制

⚠️ 严格遵守工作目录限制

  • 后端程序员只能在 backend/ 目录中工作
  • 前端程序员只能在 frontend/ 目录中工作
  • 测试工程师只能在 testing/ 目录中工作

跨目录工作需要技术总监批准,详见 ACCESS-CONTROL.md

4. 团队协作

4.1 角色职责

技术总监

  • 审查设计方案和技术文档
  • Review代码质量和架构设计
  • 协调团队协作,解决技术分歧
  • 批准重大变更和跨目录访问请求

后端程序员

  • 工作目录: backend/
  • 主要职责:
    • 设计和实现后端API接口
    • 编写API文档 (backend/docs/api.md)
    • 编写单元测试,确保测试覆盖率 > 80%
    • 参与技术方案讨论和代码审查

前端程序员

  • 工作目录: frontend/
  • 主要职责:
    • 实现前端UI组件和页面
    • 编写组件文档 (frontend/docs/components.md)
    • 集成后端API,确保前后端对接
    • 遵循UI设计规范 (docs/ui-design-spec.md)

测试工程师

  • 工作目录: testing/
  • 主要职责:
    • 编写测试计划和测试用例
    • 执行功能测试、UI测试、自动化测试
    • 生成测试报告和Bug报告
    • 验证Bug修复效果

4.2 工作流程

4.2.1 需求分析阶段

  1. 技术总监编写设计方案 (docs/plans/)
  2. 后端程序员和前端程序员查看设计方案
  3. 测试工程师编写测试计划 (testing/docs/)

4.2.2 后端开发流程

  1. 后端程序员在 backend/src/ 中开发API
  2. 编写单元测试 (backend/tests/)
  3. 更新API文档 (backend/docs/api.md)
  4. 提交代码进行审查

4.2.3 前端开发流程

  1. 前端程序员查看API文档 (backend/docs/api.md)
  2. frontend/src/ 中开发UI组件
  3. 集成后端API
  4. 编写组件测试 (frontend/tests/)
  5. 提交代码进行审查

4.2.4 测试流程

  1. 测试工程师执行测试用例 (testing/testcases/)
  2. 记录Bug和问题
  3. 生成测试报告 (testing/reports/)
  4. 后端程序员和前端程序员根据Bug报告修复问题
  5. 测试工程师验证修复效果

4.2.5 代码审查流程

  1. 开发人员提交Pull Request
  2. 技术总监审查代码质量、文档完整性、测试覆盖率
  3. 如有问题,退回修改;如通过,合并到主分支

4.3 代码提交规范

提交信息格式

  • 后端程序员: [backend] <类型>: <描述>
  • 前端程序员: [frontend] <类型>: <描述>
  • 测试工程师: [testing] <类型>: <描述>

类型说明

  • feat: 新功能
  • fix: Bug修复
  • docs: 文档更新
  • style: 代码格式调整
  • refactor: 代码重构
  • test: 测试相关
  • chore: 构建或工具相关

示例

[backend] feat: 添加用户认证API
[frontend] fix: 修复项目列表分页问题
[testing] test: 添加用户登录API测试用例

4.4 文档规范

后端文档

  • API文档: backend/docs/api.md
    • 使用OpenAPI/Swagger格式
    • 包含: 接口路径、请求方法、参数、返回值、错误码

前端文档

  • 组件文档: frontend/docs/components.md
    • 包含: 组件名称、Props、使用示例、截图

测试文档

  • 测试计划: testing/docs/test_plan.md
  • 测试报告: testing/reports/ 目录
  • Bug报告: 包含标题、重现步骤、预期结果、实际结果、截图/日志

4.5 沟通机制

日常沟通

  • 各角色在各自目录中独立工作
  • 需要协作时通过技术总监协调

文档沟通

  • 后端API文档作为前后端对接的桥梁
  • 测试报告作为Bug修复的依据
  • 所有重要决策记录在项目文档中

技术总监审查

  • 所有设计方案需要技术总监批准
  • 所有代码合并需要技术总监审查
  • 重大变更需要技术总监批准

5. 数据库设计

5.1 数据库表结构

4.1.1 用户表 (users)

字段名 类型 约束 说明
id INT PRIMARY KEY, AUTO_INCREMENT 用户ID
username VARCHAR(50) UNIQUE, NOT NULL 用户名
password_hash VARCHAR(255) NOT NULL 密码哈希
real_name VARCHAR(100) NOT NULL 真实姓名
department VARCHAR(50) NOT NULL 部门(市场部/技术部/财务部等)
role ENUM NOT NULL 角色(admin/market/other
email VARCHAR(100) UNIQUE 邮箱
phone VARCHAR(20) 电话
is_active BOOLEAN DEFAULT TRUE 是否激活
created_at DATETIME DEFAULT CURRENT_TIMESTAMP 创建时间
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE 更新时间
CREATE TABLE users (
    id INT PRIMARY KEY AUTO_INCREMENT,
    username VARCHAR(50) UNIQUE NOT NULL,
    password_hash VARCHAR(255) NOT NULL,
    real_name VARCHAR(100) NOT NULL,
    department VARCHAR(50) NOT NULL,
    role ENUM('admin', 'market', 'other') NOT NULL,
    email VARCHAR(100) UNIQUE,
    phone VARCHAR(20),
    is_active BOOLEAN DEFAULT TRUE,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

-- 索引
CREATE INDEX idx_users_username ON users(username);
CREATE INDEX idx_users_department ON users(department);
CREATE INDEX idx_users_role ON users(role);

4.1.2 项目表 (projects)

字段名 类型 约束 说明
id INT PRIMARY KEY, AUTO_INCREMENT 项目ID
project_no VARCHAR(50) UNIQUE, NOT NULL 项目编号
contract_no VARCHAR(50) NOT NULL 合同编号
name VARCHAR(200) NOT NULL 项目名称
budget DECIMAL(15,2) NOT NULL 项目预算
payment_amount DECIMAL(15,2) DEFAULT 0 已付款金额
status VARCHAR(50) NOT NULL 项目状态
start_date DATE 开始日期
end_date DATE 结束日期
created_by INT NOT NULL, FOREIGN KEY 创建人ID
department VARCHAR(50) NOT NULL 所属部门
description TEXT 项目描述
created_at DATETIME DEFAULT CURRENT_TIMESTAMP 创建时间
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE 更新时间
CREATE TABLE projects (
    id INT PRIMARY KEY AUTO_INCREMENT,
    project_no VARCHAR(50) UNIQUE NOT NULL,
    contract_no VARCHAR(50) NOT NULL,
    name VARCHAR(200) NOT NULL,
    budget DECIMAL(15,2) NOT NULL,
    payment_amount DECIMAL(15,2) DEFAULT 0,
    status VARCHAR(50) NOT NULL,
    start_date DATE,
    end_date DATE,
    created_by INT NOT NULL,
    department VARCHAR(50) NOT NULL,
    description TEXT,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    FOREIGN KEY (created_by) REFERENCES users(id) ON DELETE RESTRICT
);

-- 索引
CREATE INDEX idx_projects_project_no ON projects(project_no);
CREATE INDEX idx_projects_contract_no ON projects(contract_no);
CREATE INDEX idx_projects_status ON projects(status);
CREATE INDEX idx_projects_department ON projects(department);
CREATE INDEX idx_projects_created_by ON projects(created_by);

5.2 角色权限矩阵

功能 admin market other
登录
创建用户
编辑用户
删除用户
查看用户列表
创建项目
编辑项目信息
删除项目
查看所有项目
查看项目详情

6. API设计

6.1 API规范

  • Base URL: /api/v1
  • Content-Type: application/json
  • 认证方式: JWT Token(在Header中传递:Authorization: Bearer <token>
  • 响应格式:
{
  "success": true,
  "message": "操作成功",
  "data": {}
}

6.2 认证相关API

5.2.1 用户登录

  • URL: POST /api/v1/auth/login
  • 请求体:
{
  "username": "admin",
  "password": "password123"
}
  • 响应:
{
  "success": true,
  "message": "登录成功",
  "data": {
    "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
    "user": {
      "id": 1,
      "username": "admin",
      "real_name": "管理员",
      "department": "管理部",
      "role": "admin"
    }
  }
}

5.2.2 获取当前用户信息

  • URL: GET /api/v1/auth/me
  • Header: Authorization: Bearer <token>
  • 响应:
{
  "success": true,
  "data": {
    "id": 1,
    "username": "admin",
    "real_name": "管理员",
    "department": "管理部",
    "role": "admin"
  }
}

5.2.3 登出

  • URL: POST /api/v1/auth/logout
  • Header: Authorization: Bearer <token>
  • 响应:
{
  "success": true,
  "message": "登出成功"
}

6.3 用户管理API

5.3.1 获取用户列表

  • URL: GET /api/v1/users
  • Header: Authorization: Bearer <token>
  • 权限: admin
  • 查询参数:
    • page: 页码(默认1
    • page_size: 每页数量(默认10
    • department: 部门筛选
    • role: 角色筛选
  • 响应:
{
  "success": true,
  "data": {
    "items": [
      {
        "id": 1,
        "username": "admin",
        "real_name": "管理员",
        "department": "管理部",
        "role": "admin",
        "email": "admin@example.com",
        "is_active": true,
        "created_at": "2026-01-24T10:00:00"
      }
    ],
    "total": 1,
    "page": 1,
    "page_size": 10
  }
}

5.3.2 创建用户

  • URL: POST /api/v1/users
  • Header: Authorization: Bearer <token>
  • 权限: admin
  • 请求体:
{
  "username": "zhangsan",
  "password": "password123",
  "real_name": "张三",
  "department": "市场部",
  "role": "market",
  "email": "zhangsan@example.com",
  "phone": "13800138000"
}
  • 响应:
{
  "success": true,
  "message": "用户创建成功",
  "data": {
    "id": 2,
    "username": "zhangsan",
    "real_name": "张三",
    "department": "市场部",
    "role": "market"
  }
}

5.3.3 更新用户

  • URL: PUT /api/v1/users/{id}
  • Header: Authorization: Bearer <token>
  • 权限: admin
  • 请求体:
{
  "real_name": "张三",
  "email": "zhangsan2@example.com",
  "phone": "13900139000"
}

5.3.4 删除用户

  • URL: DELETE /api/v1/users/{id}
  • Header: Authorization: Bearer <token>
  • 权限: admin

5.3.5 重置用户密码

  • URL: POST /api/v1/users/{id}/reset-password
  • Header: Authorization: Bearer <token>
  • 权限: admin
  • 请求体:
{
  "new_password": "newpassword123"
}

6.4 项目管理API

5.4.1 获取项目列表

  • URL: GET /api/v1/projects
  • Header: Authorization: Bearer <token>
  • 权限: 所有用户
  • 查询参数:
    • page: 页码(默认1
    • page_size: 每页数量(默认10
    • status: 状态筛选
    • department: 部门筛选
  • 响应:
{
  "success": true,
  "data": {
    "items": [
      {
        "id": 1,
        "project_no": "PRJ2026001",
        "contract_no": "CT2026001",
        "name": "某公司官网开发",
        "budget": 50000.00,
        "payment_amount": 25000.00,
        "status": "进行中",
        "start_date": "2026-01-01",
        "end_date": "2026-03-31",
        "department": "市场部",
        "created_by": {
          "id": 2,
          "real_name": "张三"
        },
        "created_at": "2026-01-24T10:00:00"
      }
    ],
    "total": 1,
    "page": 1,
    "page_size": 10
  }
}

5.4.2 获取项目详情

  • URL: GET /api/v1/projects/{id}
  • Header: Authorization: Bearer <token>
  • 权限: 所有用户

5.4.3 创建项目

  • URL: POST /api/v1/projects
  • Header: Authorization: Bearer <token>
  • 权限: admin, market
  • 请求体:
{
  "project_no": "PRJ2026002",
  "contract_no": "CT2026002",
  "name": "电商平台开发",
  "budget": 100000.00,
  "status": "新建",
  "start_date": "2026-02-01",
  "end_date": "2026-06-30",
  "department": "市场部",
  "description": "电商平台开发项目"
}

5.4.4 更新项目

  • URL: PUT /api/v1/projects/{id}
  • Header: Authorization: Bearer <token>
  • 权限: 所有用户
  • 请求体:
{
  "payment_amount": 50000.00,
  "status": "进行中",
  "description": "项目更新描述"
}

5.4.5 删除项目

  • URL: DELETE /api/v1/projects/{id}
  • Header: Authorization: Bearer <token>
  • 权限: admin, market(只能删除自己创建的)

7. 前端设计

7.1 页面结构

登录页 (Login)
  └─ 登录表单

主布局 (Layout)
  ├─ 顶部导航栏 (Header)
  │   ├─ Logo
  │   ├─ 用户信息
  │   └─ 登出按钮
  │
  └─ 侧边栏 (Sidebar)
      └─ 菜单
          ├─ 仪表盘 (Dashboard)
          ├─ 用户管理 (UserList) - 仅管理员
          └─ 项目管理 (ProjectList)
              ├─ 项目列表
              ├─ 创建项目
              └─ 项目详情

7.2 核心组件

6.2.1 AuthContext

全局认证状态管理:

const AuthContext = createContext({
  user: null,
  token: null,
  login: () => {},
  logout: () => {},
  isAuthenticated: false
});

6.2.2 ProtectedRoute

路由守卫组件,保护需要登录的页面。

6.2.3 API Service

统一的API调用封装:

  • 统一的错误处理
  • 自动添加Token
  • 请求拦截器
  • 响应拦截器

7.3 页面设计

6.3.1 登录页

  • 简洁的登录表单
  • 用户名/密码输入
  • 记住我选项
  • 错误提示

6.3.2 仪表盘

  • 项目统计卡片(总项目数、进行中、已完成等)
  • 最近项目列表
  • 快速操作入口

6.3.3 用户管理页

  • 用户列表表格
  • 搜索和筛选功能
  • 创建/编辑/删除/重置密码操作
  • 分页功能

6.3.4 项目列表页

  • 项目列表表格
  • 搜索和筛选(状态、部门)
  • 创建项目按钮
  • 分页功能

6.3.5 项目表单

  • 项目信息表单
  • 表单验证
  • 保存/取消按钮

6.3.6 项目详情页

  • 项目详细信息展示
  • 编辑功能
  • 操作日志(可选)

7.4 UI风格

  • 使用Ant Design默认主题
  • 响应式布局
  • 简洁、专业的企业级UI

8. 安全设计

8.1 认证安全

  • 密码使用bcrypt加密存储
  • JWT Token有效期设置(如24小时)
  • Token过期自动刷新机制

8.2 权限控制

  • 后端基于装饰器的权限验证
  • 前端路由级别的权限控制
  • 前端组件级别的权限控制

8.3 数据安全

  • SQL注入防护(使用SQLAlchemy ORM
  • XSS防护(React自动转义)
  • 输入验证(前后端双重验证)

9. 部署方案

9.1 开发环境

后端

cd backend
pipenv install
pipenv shell
python run.py
# 服务运行在 http://localhost:5000

前端

cd frontend
npm install
npm start
# 服务运行在 http://localhost:3000

数据库

  • 本地MySQL数据库
  • 数据库名:project_manager
  • 配置文件:.env

9.2 生产环境(推荐方案)

使用Docker Compose

version: '3.8'

services:
  mysql:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: rootpassword
      MYSQL_DATABASE: project_manager
    volumes:
      - mysql_data:/var/lib/mysql
    ports:
      - "3306:3306"

  backend:
    build: ./backend
    ports:
      - "5000:5000"
    depends_on:
      - mysql
    environment:
      DATABASE_URL: mysql+pymysql://root:rootpassword@mysql/project_manager
      SECRET_KEY: your-secret-key

  frontend:
    build: ./frontend
    ports:
      - "80:80"
    depends_on:
      - backend

volumes:
  mysql_data:

10. 后续优化建议

10.1 功能扩展

  • 项目附件上传
  • 操作日志记录
  • 数据导出功能
  • 报表统计功能

10.2 性能优化

  • 数据库索引优化
  • API响应缓存(如需要)
  • 前端代码分割

10.3 用户体验

  • 表单自动保存
  • 批量操作功能
  • 消息通知功能

11. 开发计划

11.1 第一阶段(MVP

  • 用户登录/登出
  • 项目CRUD基础功能
  • 简单的用户管理(仅管理员)

11.2 第二阶段

  • 权限控制完善
  • 项目列表筛选和搜索
  • 表单验证优化

11.3 第三阶段(可选)

  • 高级功能扩展
  • 性能优化
  • 用户体验优化

12. 相关文档

12.1 团队协作文档

12.2 角色工作规范

12.3 技术文档

12.4 项目文档


文档维护: 本文档由技术总监维护,如有疑问请联系技术总监。