From 7b9edc2fed944590f8fa70922d72024718fb7df1 Mon Sep 17 00:00:00 2001 From: zzh Date: Mon, 8 Dec 2025 14:59:59 +0800 Subject: [PATCH] =?UTF-8?q?=20=E6=96=B0=E5=A2=9E=20readme?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 211 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 211 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..a2e0e56 --- /dev/null +++ b/README.md @@ -0,0 +1,211 @@ +# 生产管理系统 + +一个基于 Flask + 原生 JavaScript 的轻量级生产管理系统,用于管理生产流程、物料采购、发货跟踪和质量控制。 + +## 功能特性 + +### 📊 仪表盘 +- 实时显示生产良品率、直通良品率 +- 发货数量统计 +- 不良品数量监控 + +### 📦 生产管理 +- **工单管理** - 创建、跟踪生产工单 +- **BOM 物料清单** - 定义产品的物料组成 +- **期初库存** - 管理物料初始库存 +- **采购需求** - 自动计算采购需求 + +### 🚚 发货管理 +- **发货记录** - 记录发货信息 +- **发货查询** - 按 SN/MAC 查询发货记录 +- **发货汇总** - 发货数据统计分析 + +### 📋 订单与对账 +- **客户订单** - 管理客户订单信息 +- **对账管理** - 订单对账功能 +- **物料采购** - 采购单管理 + +### 👥 系统管理 +- **用户管理** - 支持超级管理员、管理员、普通用户角色 +- **通知系统** - 操作通知推送 +- **操作日志** - 记录用户操作历史 +- **SOP 文件管理** - 上传和管理标准作业程序文件 + +## 技术栈 + +### 后端 +- **Flask** - Python Web 框架 +- **SQLite** - 轻量级数据库 +- **Redis** - 缓存和实时数据存储(可选) + +### 前端 +- **原生 JavaScript** - 无框架依赖 +- **CSS3** - 现代化 UI 样式 +- **组件化架构** - 模块化的 JS 组件 + +## 项目结构 + +``` +生产管理系统/ +├── server/ # 后端服务 +│ ├── app.py # Flask 应用主文件 +│ ├── data.db # SQLite 数据库 +│ └── requirements.txt # Python 依赖 +├── frontend/ # 前端资源 +│ ├── index.html # 主页面 +│ ├── login.html # 登录页面 +│ ├── assets/ # 静态资源(CSS、图片) +│ ├── js/ +│ │ ├── app.js # 应用入口 +│ │ ├── api.js # API 请求封装 +│ │ ├── router.js # 前端路由 +│ │ └── components/ # 页面组件 +│ └── sop_files/ # SOP 文件存储 +├── deploy/ # 部署配置 +│ ├── nginx/ # Nginx 配置 +│ └── systemd/ # Systemd 服务配置 +├── .env.example # 环境变量示例 +└── README.md +``` + +## 快速开始 + +### 环境要求 +- Python 3.8+ +- Redis(可选,用于缓存和实时数据) + +### 安装步骤 + +1. **克隆项目** + ```bash + cd 生产管理系统 + ``` + +2. **创建虚拟环境** + ```bash + python3 -m venv venv + source venv/bin/activate # Linux/macOS + # 或 venv\Scripts\activate # Windows + ``` + +3. **安装依赖** + ```bash + pip install -r server/requirements.txt + ``` + +4. **配置环境变量** + ```bash + cp .env.example .env + # 编辑 .env 文件,配置 Redis 和管理员密码 + ``` + +5. **启动服务** + ```bash + cd server + python app.py + ``` + +6. **访问系统** + + 打开浏览器访问 `http://localhost:5000` + +### 默认账户 +- **用户名**: `admin` +- **密码**: `admin123`(或通过环境变量 `ADMIN_PASSWORD` 配置) + +## 环境变量配置 + +| 变量名 | 说明 | 默认值 | +|--------|------|--------| +| `REDIS_HOST` | Redis 服务器地址 | `127.0.0.1` | +| `REDIS_PORT` | Redis 端口 | `6379` | +| `REDIS_DB` | Redis 数据库编号 | `0` | +| `REDIS_PASSWORD` | Redis 密码 | - | +| `ADMIN_PASSWORD` | 默认管理员密码 | `admin123` | +| `SUPERADMIN_USERNAME` | 超级管理员用户名 | - | +| `SUPERADMIN_PASSWORD` | 超级管理员密码 | - | +| `APP_SECRET` | Flask Session 密钥 | `change-me` | +| `HOST` | 服务监听地址 | `0.0.0.0` | +| `PORT` | 服务监听端口 | `5000` | + +## 生产部署 + +### 使用 Systemd + +1. 复制服务配置文件: + ```bash + sudo cp deploy/systemd/production-system.service /etc/systemd/system/ + ``` + +2. 启动服务: + ```bash + sudo systemctl enable production-system + sudo systemctl start production-system + ``` + +### 使用 Nginx 反向代理 + +1. 复制 Nginx 配置: + ```bash + sudo cp deploy/nginx/production-system.conf /etc/nginx/sites-available/ + sudo ln -s /etc/nginx/sites-available/production-system.conf /etc/nginx/sites-enabled/ + ``` + +2. 重载 Nginx: + ```bash + sudo nginx -t + sudo systemctl reload nginx + ``` + +## API 接口 + +### 认证 +- `POST /api/auth/login` - 用户登录 +- `GET /api/auth/me` - 获取当前用户信息 +- `POST /api/auth/logout` - 用户登出 +- `GET /api/auth/captcha` - 获取验证码 + +### 仪表盘 +- `GET /api/dashboard` - 获取仪表盘数据 + +### 工单管理 +- `GET /api/work-orders` - 获取工单列表 +- `POST /api/work-orders` - 创建工单 + +### 发货管理 +- `GET /api/shipments` - 获取发货记录 +- `POST /api/shipments` - 创建发货记录 + +更多 API 详见 `server/app.py`。 + +## 开发说明 + +### 前端组件开发 + +前端采用组件化架构,每个页面对应一个 JS 组件文件: + +```javascript +// frontend/js/components/example.js +export function render() { + return `
...
`; +} + +export function init() { + // 初始化逻辑 +} +``` + +### 添加新路由 + +在 `frontend/js/router.js` 中添加路由配置: + +```javascript +const routes = { + '/example': () => import('./components/example.js'), + // ... +}; +``` + +## 许可证 + +MIT License