# PM **Repository Path**: MerlinRong/pm ## Basic Information - **Project Name**: PM - **Description**: PM 项目管理系统 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-10-08 - **Last Updated**: 2026-10-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README
# 📋 PM 项目管理系统 **企业级全生命周期项目管理平台** 覆盖 **立项 → 计划 → 执行 → 监控 → 收尾** 五大过程组 [![Python](https://img.shields.io/badge/Python-3.11+-3776AB?style=flat-square&logo=python&logoColor=white)](https://www.python.org/) [![FastAPI](https://img.shields.io/badge/FastAPI-0.115-009688?style=flat-square&logo=fastapi&logoColor=white)](https://fastapi.tiangolo.com/) [![Vue](https://img.shields.io/badge/Vue-3.5-4FC08D?style=flat-square&logo=vuedotjs&logoColor=white)](https://vuejs.org/) [![TypeScript](https://img.shields.io/badge/TypeScript-5.7-3178C6?style=flat-square&logo=typescript&logoColor=white)](https://www.typescriptlang.org/) [![Tests](https://img.shields.io/badge/Tests-45%20passed-success?style=flat-square&logo=pytest&logoColor=white)](backend/tests) [![License](https://img.shields.io/badge/License-MIT-green?style=flat-square)](LICENSE)
--- ## ✨ 功能特性 | 模块 | 说明 | |------|------| | 📌 **项目立项** | 立项申请、多级审批流(加签 / 转签 / 退回)、状态机管理 | | 🌳 **WBS 分解** | 无限层级任务树、拖拽排序、WBS 编号、四种依赖关系(FS/FF/SS/SF) | | 📊 **甘特图** | CPM 关键路径算法、里程碑、进度跟踪、拖拽调整 | | 👥 **资源管理** | 资源库、任务分配、负载热力图、冲突检测 | | ⏱️ **工时管理** | 日报填报(硬/软限制校验)、审批流、多维统计 | | ⚠️ **风险管理** | 概率×影响评估矩阵、等级分档、风险矩阵图 | | 📁 **文档管理** | 文件夹、上传下载、版本管理、一键回滚 | | 📈 **报表中心** | 全局概览、EVM 挣值分析(SPI/CPI/EAC)、燃尽图 | | 🔔 **站内通知** | 审批实时通知、未读提醒 | ## 🧰 技术栈 | 层级 | 技术选型 | |------|---------| | 后端框架 | Python + FastAPI | | ORM | SQLAlchemy 2.0(异步)+ Pydantic v2 | | 数据库 | SQLite(默认,零依赖) / PostgreSQL(可切换) | | 认证 | JWT + bcrypt + RBAC 权限模型 | | 前端框架 | Vue 3 + TypeScript(Composition API) | | UI 组件 | Element Plus | | 状态管理 | Pinia | | 可视化 | ECharts 5 | | 构建工具 | Vite + pnpm | ## 🚀 快速开始 ### 环境要求 - Python 3.11+ - Node.js 18+ 与 pnpm ### 1️⃣ 启动后端 ```bash cd backend pip install -r requirements.txt python -m scripts.seed_data # 初始化管理员与权限 uvicorn app.main:app --reload # → http://localhost:8000 ``` ### 2️⃣ 启动前端 ```bash cd frontend pnpm install pnpm dev # → http://localhost:5173 ``` ### 3️⃣ 登录 访问 ,使用默认账号: | 账号 | 密码 | |------|------| | `admin` | `admin123` | ## 📁 目录结构 ``` PM/ ├── backend/ # FastAPI 后端 │ ├── app/ │ │ ├── api/ # 路由层(接口编排) │ │ ├── services/ # 业务逻辑层(状态机/算法) │ │ ├── models/ # SQLAlchemy 数据模型 │ │ ├── schemas/ # Pydantic 请求/响应模型 │ │ └── core/ # 认证/权限/异常/中间件 │ ├── tests/ # pytest 测试 │ └── scripts/ # 种子数据脚本 ├── frontend/ # Vue3 前端 │ └── src/ │ ├── api/ # API 封装层 │ ├── views/ # 页面视图 │ ├── components/ # 公共组件 │ └── stores/ # Pinia 状态 ├── docker-compose.yml # 容器编排 └── .codebuddy/ # 项目文档(不纳入 git) ``` ## ✅ 运行测试 ```bash # 后端测试 cd backend python -m pytest tests/ -q # 前端类型检查 cd frontend pnpm type-check ``` ## 🐳 Docker 部署 ```bash docker compose up -d --build ``` > 生产环境请修改 `docker-compose.yml` 中的 `SECRET_KEY` 与数据库口令。 ## ⚙️ 配置说明 后端通过环境变量或 `.env` 文件配置(参考 `backend/.env.example`): | 配置项 | 默认值 | 说明 | |--------|--------|------| | `DATABASE_URL` | `sqlite:///./pm.db` | 生产环境切换为 PostgreSQL | | `SECRET_KEY` | — | JWT 签名密钥(生产务必修改) | | `UPLOAD_DIR` | — | 文件上传目录 | ## 📄 License [MIT](LICENSE) © 2026