Initial commit: 智能项目定价模型
This commit is contained in:
488
docs/用户操作手册.md
Normal file
488
docs/用户操作手册.md
Normal file
@@ -0,0 +1,488 @@
|
||||
# 智能项目定价模型 - 用户操作手册
|
||||
|
||||
> **版本**:v1.0
|
||||
> **更新日期**:2026-01-20
|
||||
> **适用对象**:运营总监、财务人员、市场人员、店长
|
||||
|
||||
---
|
||||
|
||||
## 目录
|
||||
|
||||
1. [系统概述](#1-系统概述)
|
||||
2. [登录与导航](#2-登录与导航)
|
||||
3. [基础数据管理](#3-基础数据管理)
|
||||
4. [成本核算](#4-成本核算)
|
||||
5. [市场行情](#5-市场行情)
|
||||
6. [智能定价](#6-智能定价)
|
||||
7. [利润模拟](#7-利润模拟)
|
||||
8. [仪表盘](#8-仪表盘)
|
||||
9. [常见问题](#9-常见问题)
|
||||
|
||||
---
|
||||
|
||||
## 1. 系统概述
|
||||
|
||||
### 1.1 系统功能
|
||||
|
||||
智能项目定价模型是一套帮助医美机构科学定价的智能系统,主要功能包括:
|
||||
|
||||
| 功能模块 | 描述 | 主要用户 |
|
||||
|----------|------|----------|
|
||||
| **成本核算** | 精准计算项目成本,明确最低成本线 | 财务人员 |
|
||||
| **市场行情** | 收集竞品价格,分析市场定价区间 | 市场人员 |
|
||||
| **智能定价** | AI 智能分析,生成定价建议 | 运营总监 |
|
||||
| **利润模拟** | 模拟不同定价的利润情况 | 运营总监、店长 |
|
||||
|
||||
### 1.2 浏览器要求
|
||||
|
||||
- Chrome 90+(推荐)
|
||||
- Firefox 88+
|
||||
- Edge 90+
|
||||
- Safari 14+
|
||||
|
||||
建议使用 1280px 及以上宽度的屏幕。
|
||||
|
||||
---
|
||||
|
||||
## 2. 登录与导航
|
||||
|
||||
### 2.1 系统登录
|
||||
|
||||
1. 打开浏览器,访问系统地址
|
||||
2. 使用瑞小美 SCRM 账号登录
|
||||
3. 登录成功后进入系统首页(仪表盘)
|
||||
|
||||
### 2.2 主导航菜单
|
||||
|
||||
| 菜单 | 功能 |
|
||||
|------|------|
|
||||
| 仪表盘 | 系统概览、关键指标展示 |
|
||||
| 成本核算 → 服务项目 | 项目成本明细管理 |
|
||||
| 市场行情 → 竞品管理 | 竞品机构与价格管理 |
|
||||
| 市场行情 → 标杆价格 | 标杆机构价格参考 |
|
||||
| 市场行情 → 市场分析 | 市场价格分析 |
|
||||
| 智能定价 | AI 定价建议与方案管理 |
|
||||
| 利润模拟 | 利润测算与敏感性分析 |
|
||||
| 基础设置 | 分类、耗材、设备等基础数据 |
|
||||
|
||||
---
|
||||
|
||||
## 3. 基础数据管理
|
||||
|
||||
基础数据是系统运行的基础,请在使用核心功能前先维护好基础数据。
|
||||
|
||||
### 3.1 项目分类管理
|
||||
|
||||
**路径**:基础设置 → 项目分类
|
||||
|
||||
用于对服务项目进行分类,如:皮肤管理、注射类、光电类、手术类。
|
||||
|
||||
**操作步骤**:
|
||||
|
||||
1. 点击「新增分类」按钮
|
||||
2. 填写分类名称
|
||||
3. 选择父分类(可选,用于创建子分类)
|
||||
4. 设置排序号
|
||||
5. 点击「确定」保存
|
||||
|
||||
### 3.2 耗材管理
|
||||
|
||||
**路径**:基础设置 → 耗材管理
|
||||
|
||||
维护项目所需的耗材信息。
|
||||
|
||||
**操作步骤**:
|
||||
|
||||
1. 点击「新增耗材」
|
||||
2. 填写信息:
|
||||
- **耗材编码**:唯一标识,如 MAT001
|
||||
- **耗材名称**:如"冷凝胶"
|
||||
- **单位**:如"ml"、"支"、"个"
|
||||
- **单价**:单位采购价格
|
||||
- **类型**:耗材/针剂/产品
|
||||
- **供应商**:供应商名称(可选)
|
||||
3. 点击「确定」保存
|
||||
|
||||
**批量导入**:
|
||||
|
||||
1. 点击「导入」按钮
|
||||
2. 下载 Excel 模板
|
||||
3. 按模板格式填写数据
|
||||
4. 上传文件完成导入
|
||||
|
||||
### 3.3 设备管理
|
||||
|
||||
**路径**:基础设置 → 设备管理
|
||||
|
||||
维护设备信息及折旧计算。
|
||||
|
||||
**关键字段**:
|
||||
|
||||
| 字段 | 说明 |
|
||||
|------|------|
|
||||
| 设备原值 | 购买价格 |
|
||||
| 残值率 | 设备报废时的残余价值比例,默认 5% |
|
||||
| 预计使用年限 | 设备使用寿命 |
|
||||
| 预计使用次数 | 整个生命周期的使用次数 |
|
||||
| 单次折旧成本 | 自动计算:(原值 - 残值) / 总次数 |
|
||||
|
||||
### 3.4 人员级别
|
||||
|
||||
**路径**:基础设置 → 人员级别
|
||||
|
||||
配置不同岗位的时薪标准。
|
||||
|
||||
| 级别 | 示例时薪 |
|
||||
|------|----------|
|
||||
| 初级美容师 | 30 元/小时 |
|
||||
| 中级美容师 | 50 元/小时 |
|
||||
| 高级美容师 | 80 元/小时 |
|
||||
| 主治医师 | 200 元/小时 |
|
||||
|
||||
### 3.5 固定成本
|
||||
|
||||
**路径**:基础设置 → 固定成本
|
||||
|
||||
录入每月固定成本,用于分摊到项目成本中。
|
||||
|
||||
**成本类型**:
|
||||
|
||||
- 房租
|
||||
- 水电费
|
||||
- 物业费
|
||||
- 其他
|
||||
|
||||
**分摊方式**:
|
||||
|
||||
| 方式 | 说明 |
|
||||
|------|------|
|
||||
| 按项目数量 | 固定成本平均分摊到每个项目 |
|
||||
| 按营收占比 | 根据项目营收比例分摊 |
|
||||
| 按时长占比 | 根据项目操作时长比例分摊 |
|
||||
|
||||
---
|
||||
|
||||
## 4. 成本核算
|
||||
|
||||
### 4.1 创建服务项目
|
||||
|
||||
**路径**:成本核算 → 服务项目 → 新增项目
|
||||
|
||||
1. 点击「新增项目」
|
||||
2. 填写基本信息:
|
||||
- **项目编码**:唯一标识
|
||||
- **项目名称**:如"光子嫩肤"
|
||||
- **所属分类**:选择分类
|
||||
- **操作时长**:单次服务时长(分钟)
|
||||
- **项目描述**:可选
|
||||
3. 点击「确定」创建
|
||||
|
||||
### 4.2 配置成本明细
|
||||
|
||||
创建项目后,需要配置具体的成本构成。
|
||||
|
||||
**添加耗材成本**:
|
||||
|
||||
1. 在项目列表点击「成本明细」
|
||||
2. 切换到「耗材成本」标签
|
||||
3. 点击「添加耗材」
|
||||
4. 选择耗材,填写用量
|
||||
5. 系统自动计算:总成本 = 单价 × 用量
|
||||
|
||||
**添加设备折旧**:
|
||||
|
||||
1. 切换到「设备折旧」标签
|
||||
2. 点击「添加设备」
|
||||
3. 选择设备,填写使用次数(通常为 1)
|
||||
4. 系统自动使用设备的单次折旧成本
|
||||
|
||||
**配置人工成本**:
|
||||
|
||||
1. 切换到「人工成本」标签
|
||||
2. 点击「添加人工」
|
||||
3. 选择人员级别
|
||||
4. 填写操作时长(分钟)
|
||||
5. 系统自动计算:人工成本 = 时长 × 时薪
|
||||
|
||||
### 4.3 计算成本汇总
|
||||
|
||||
配置完所有成本项后:
|
||||
|
||||
1. 点击「计算成本」按钮
|
||||
2. 选择固定成本分摊方式
|
||||
3. 系统计算并显示成本汇总:
|
||||
- 耗材成本
|
||||
- 设备折旧成本
|
||||
- 人工成本
|
||||
- 固定成本分摊
|
||||
- **最低成本线**(总成本)
|
||||
|
||||
> **提示**:最低成本线是项目定价的下限,低于此价格销售将亏损。
|
||||
|
||||
### 4.4 成本分析
|
||||
|
||||
成本汇总页面提供:
|
||||
|
||||
- **成本构成饼图**:直观展示各类成本占比
|
||||
- **成本明细表**:详细的成本项列表
|
||||
- **成本建议**:针对成本结构的优化建议
|
||||
|
||||
---
|
||||
|
||||
## 5. 市场行情
|
||||
|
||||
### 5.1 竞品机构管理
|
||||
|
||||
**路径**:市场行情 → 竞品管理
|
||||
|
||||
**添加竞品机构**:
|
||||
|
||||
1. 点击「新增竞品」
|
||||
2. 填写信息:
|
||||
- **机构名称**:竞品机构名称
|
||||
- **地址**:机构地址
|
||||
- **距离**:与本店距离(公里)
|
||||
- **定位**:高端/中端/大众
|
||||
- **是否重点关注**:标记重点竞品
|
||||
3. 点击「确定」保存
|
||||
|
||||
### 5.2 竞品价格录入
|
||||
|
||||
**录入价格**:
|
||||
|
||||
1. 在竞品列表点击「价格管理」
|
||||
2. 点击「添加价格」
|
||||
3. 填写信息:
|
||||
- **项目名称**:竞品的项目名称
|
||||
- **关联本店项目**:可选,便于对比
|
||||
- **原价**:标价
|
||||
- **促销价**:活动价格(可选)
|
||||
- **会员价**:会员价格(可选)
|
||||
- **价格来源**:官网/美团/大众点评/实地调研
|
||||
- **采集日期**:价格获取日期
|
||||
4. 点击「确定」保存
|
||||
|
||||
> **建议**:定期更新竞品价格,保持数据时效性。
|
||||
|
||||
### 5.3 标杆价格
|
||||
|
||||
**路径**:市场行情 → 标杆价格
|
||||
|
||||
维护行业标杆机构的价格参考。
|
||||
|
||||
**添加标杆价格**:
|
||||
|
||||
1. 点击「新增标杆」
|
||||
2. 填写标杆机构名称
|
||||
3. 选择项目分类
|
||||
4. 填写价格区间(最低价、最高价、均价)
|
||||
5. 选择价格档位(低端/中端/高端/奢华)
|
||||
6. 设置生效日期
|
||||
|
||||
### 5.4 市场分析
|
||||
|
||||
**路径**:市场行情 → 市场分析
|
||||
|
||||
**执行分析**:
|
||||
|
||||
1. 选择要分析的项目
|
||||
2. 选择参与分析的竞品(可多选)
|
||||
3. 点击「执行分析」
|
||||
4. 查看分析结果:
|
||||
- **价格统计**:最低价、最高价、均价、中位价
|
||||
- **价格分布**:低/中/高价位占比
|
||||
- **建议区间**:市场定价参考区间
|
||||
- **竞品对比**:各竞品价格详情
|
||||
|
||||
---
|
||||
|
||||
## 6. 智能定价
|
||||
|
||||
### 6.1 创建定价方案
|
||||
|
||||
**路径**:智能定价
|
||||
|
||||
**操作步骤**:
|
||||
|
||||
1. 点击「新建方案」
|
||||
2. 选择项目
|
||||
3. 填写方案名称(如"2026年Q1定价方案")
|
||||
4. 选择定价策略:
|
||||
- **引流款**:低价吸引新客,利润率 10%-20%
|
||||
- **利润款**:日常定价,利润率 40%-60%
|
||||
- **高端款**:高端定位,利润率 60%+
|
||||
5. 设置目标毛利率
|
||||
|
||||
### 6.2 获取 AI 定价建议
|
||||
|
||||
1. 在定价方案中点击「AI 建议」
|
||||
2. 系统自动整合:
|
||||
- 项目成本数据
|
||||
- 市场行情数据
|
||||
- 目标利润率
|
||||
3. AI 分析并生成建议,包括:
|
||||
- **建议价格区间**
|
||||
- **推荐定价及理由**
|
||||
- **不同策略的建议价格**
|
||||
- **风险提示**
|
||||
- **优化建议**
|
||||
|
||||
### 6.3 策略模拟
|
||||
|
||||
对比不同定价策略的效果:
|
||||
|
||||
| 策略 | 定价逻辑 | 适用场景 |
|
||||
|------|----------|----------|
|
||||
| 引流款 | 成本 + 10%-20% 利润 | 新店开业、淡季促销 |
|
||||
| 利润款 | 成本 + 40%-60% 利润 | 日常经营 |
|
||||
| 高端款 | 市场高位或成本 + 高利润 | 高端客群、稀缺项目 |
|
||||
|
||||
### 6.4 确定最终定价
|
||||
|
||||
1. 参考 AI 建议和策略模拟结果
|
||||
2. 填写最终定价
|
||||
3. 保存方案
|
||||
4. 可导出定价报告(PDF/Excel)
|
||||
|
||||
---
|
||||
|
||||
## 7. 利润模拟
|
||||
|
||||
### 7.1 创建利润模拟
|
||||
|
||||
**路径**:利润模拟
|
||||
|
||||
**操作步骤**:
|
||||
|
||||
1. 选择定价方案
|
||||
2. 点击「新建模拟」
|
||||
3. 填写模拟参数:
|
||||
- **模拟名称**:如"乐观预期"
|
||||
- **模拟价格**:可使用方案价格或自定义
|
||||
- **预估客量**:预期服务人数
|
||||
- **周期类型**:日/周/月
|
||||
4. 点击「计算」
|
||||
|
||||
### 7.2 查看模拟结果
|
||||
|
||||
| 指标 | 说明 |
|
||||
|------|------|
|
||||
| 预估收入 | 价格 × 客量 |
|
||||
| 预估成本 | 单位成本 × 客量 |
|
||||
| 预估利润 | 收入 - 成本 |
|
||||
| 利润率 | 利润 / 收入 × 100% |
|
||||
| 盈亏平衡客量 | 达到盈亏平衡需要的最小客量 |
|
||||
| 安全边际 | 当前客量超出盈亏平衡点的数量 |
|
||||
|
||||
### 7.3 敏感性分析
|
||||
|
||||
分析价格变动对利润的影响:
|
||||
|
||||
1. 点击「敏感性分析」
|
||||
2. 系统自动计算价格 ±5%、±10%、±15%、±20% 时的利润变化
|
||||
3. 查看分析结果:
|
||||
- **敏感性表格**:不同价格下的利润
|
||||
- **利润曲线图**:可视化价格-利润关系
|
||||
- **风险评估**:价格弹性分析
|
||||
|
||||
### 7.4 多场景对比
|
||||
|
||||
创建多个模拟方案进行对比:
|
||||
|
||||
- **乐观预期**:客量较高
|
||||
- **正常预期**:客量适中
|
||||
- **保守预期**:客量较低
|
||||
|
||||
通过对比帮助制定更稳健的定价决策。
|
||||
|
||||
---
|
||||
|
||||
## 8. 仪表盘
|
||||
|
||||
**路径**:仪表盘(首页)
|
||||
|
||||
### 8.1 概览数据
|
||||
|
||||
| 指标 | 说明 |
|
||||
|------|------|
|
||||
| 项目总数 | 系统管理的服务项目数量 |
|
||||
| 已定价项目 | 已创建定价方案的项目数 |
|
||||
| 平均成本 | 所有项目的平均成本 |
|
||||
| 跟踪竞品数 | 监控的竞品机构数量 |
|
||||
|
||||
### 8.2 成本趋势
|
||||
|
||||
展示项目成本的变化趋势,帮助发现成本波动。
|
||||
|
||||
### 8.3 市场趋势
|
||||
|
||||
展示市场价格的变化趋势,了解行业动态。
|
||||
|
||||
### 8.4 最近活动
|
||||
|
||||
显示系统最近的操作记录,如定价方案创建、成本更新等。
|
||||
|
||||
---
|
||||
|
||||
## 9. 常见问题
|
||||
|
||||
### Q1: 成本计算结果与预期不符?
|
||||
|
||||
**可能原因**:
|
||||
- 耗材用量填写错误
|
||||
- 设备折旧参数不准确
|
||||
- 人员时薪未及时更新
|
||||
- 固定成本数据过期
|
||||
|
||||
**解决方法**:
|
||||
1. 检查各项成本明细数据
|
||||
2. 确认基础数据是否最新
|
||||
3. 重新计算成本汇总
|
||||
|
||||
### Q2: AI 定价建议响应慢?
|
||||
|
||||
**说明**:AI 分析需要综合大量数据,通常需要 5-10 秒。
|
||||
|
||||
**建议**:
|
||||
- 耐心等待,系统会显示加载状态
|
||||
- 如超过 30 秒无响应,刷新页面重试
|
||||
|
||||
### Q3: 如何导出定价报告?
|
||||
|
||||
1. 进入定价方案详情页
|
||||
2. 点击右上角「导出」按钮
|
||||
3. 选择格式(PDF 或 Excel)
|
||||
4. 下载保存
|
||||
|
||||
### Q4: 竞品价格数据从哪里获取?
|
||||
|
||||
建议来源:
|
||||
- 竞品官网
|
||||
- 美团/大众点评等平台
|
||||
- 实地调研
|
||||
- 行业报告
|
||||
|
||||
录入时请标注价格来源,便于评估数据可靠性。
|
||||
|
||||
### Q5: 固定成本分摊方式如何选择?
|
||||
|
||||
| 方式 | 适用场景 |
|
||||
|------|----------|
|
||||
| 按项目数量 | 项目差异小,适合均摊 |
|
||||
| 按营收占比 | 高价值项目承担更多成本 |
|
||||
| 按时长占比 | 长时间项目承担更多成本 |
|
||||
|
||||
建议根据机构实际情况选择,或咨询财务人员。
|
||||
|
||||
---
|
||||
|
||||
## 技术支持
|
||||
|
||||
如遇问题,请联系:
|
||||
|
||||
- **系统管理员**:[联系方式]
|
||||
- **技术支持**:瑞小美技术团队
|
||||
|
||||
---
|
||||
|
||||
*瑞小美技术团队 · 2026-01-20*
|
||||
620
docs/系统管理手册.md
Normal file
620
docs/系统管理手册.md
Normal file
@@ -0,0 +1,620 @@
|
||||
# 智能项目定价模型 - 系统管理手册
|
||||
|
||||
> **版本**:v1.0
|
||||
> **更新日期**:2026-01-20
|
||||
> **适用对象**:系统管理员、运维人员
|
||||
|
||||
---
|
||||
|
||||
## 目录
|
||||
|
||||
1. [系统架构](#1-系统架构)
|
||||
2. [部署指南](#2-部署指南)
|
||||
3. [配置管理](#3-配置管理)
|
||||
4. [日常运维](#4-日常运维)
|
||||
5. [备份与恢复](#5-备份与恢复)
|
||||
6. [监控与告警](#6-监控与告警)
|
||||
7. [故障排查](#7-故障排查)
|
||||
8. [安全规范](#8-安全规范)
|
||||
9. [附录](#9-附录)
|
||||
|
||||
---
|
||||
|
||||
## 1. 系统架构
|
||||
|
||||
### 1.1 技术栈
|
||||
|
||||
| 组件 | 技术 | 版本 |
|
||||
|------|------|------|
|
||||
| 后端 | Python + FastAPI | 3.11 |
|
||||
| 前端 | Vue 3 + TypeScript | 3.x |
|
||||
| 数据库 | MySQL | 8.0 |
|
||||
| 容器 | Docker + Docker Compose | 24.x |
|
||||
| 反向代理 | Nginx | 1.25 |
|
||||
|
||||
### 1.2 服务架构
|
||||
|
||||
```
|
||||
用户浏览器
|
||||
│
|
||||
│ HTTPS (443)
|
||||
▼
|
||||
┌───────────────┐
|
||||
│ Nginx │ (nginx_proxy)
|
||||
│ 反向代理 │ 端口: 80, 443
|
||||
└───────┬───────┘
|
||||
│
|
||||
┌───────────────┴───────────────┐
|
||||
│ │
|
||||
▼ ▼
|
||||
┌─────────────────┐ ┌─────────────────┐
|
||||
│ pricing-frontend│ │ pricing-backend │
|
||||
│ Vue 3 SPA │ │ FastAPI │
|
||||
│ 端口: 80 │ │ 端口: 8000 │
|
||||
└─────────────────┘ └────────┬────────┘
|
||||
│
|
||||
┌────────┴────────┐
|
||||
│ │
|
||||
▼ ▼
|
||||
┌─────────────┐ ┌─────────────┐
|
||||
│pricing-mysql│ │ 门户系统 │
|
||||
│ MySQL 8.0 │ │ AI 配置 │
|
||||
└─────────────┘ └─────────────┘
|
||||
```
|
||||
|
||||
### 1.3 网络配置
|
||||
|
||||
| 网络 | 用途 |
|
||||
|------|------|
|
||||
| `pricing_network` | 定价系统内部通信 |
|
||||
| `scrm_network` | 与门户系统通信(获取 AI 配置) |
|
||||
|
||||
### 1.4 数据卷
|
||||
|
||||
| 卷名 | 用途 |
|
||||
|------|------|
|
||||
| `pricing_mysql_data` | MySQL 数据持久化 |
|
||||
|
||||
---
|
||||
|
||||
## 2. 部署指南
|
||||
|
||||
### 2.1 环境要求
|
||||
|
||||
**硬件要求**:
|
||||
|
||||
| 资源 | 最低配置 | 推荐配置 |
|
||||
|------|----------|----------|
|
||||
| CPU | 2 核 | 4 核 |
|
||||
| 内存 | 4 GB | 8 GB |
|
||||
| 磁盘 | 40 GB | 100 GB |
|
||||
|
||||
**软件要求**:
|
||||
|
||||
- Docker 24.0+
|
||||
- Docker Compose 2.20+
|
||||
- Linux (推荐 Ubuntu 22.04 / Debian 12)
|
||||
|
||||
### 2.2 首次部署
|
||||
|
||||
#### 步骤 1:获取代码
|
||||
|
||||
```bash
|
||||
git clone <repository_url> /opt/pricing-model
|
||||
cd /opt/pricing-model
|
||||
```
|
||||
|
||||
#### 步骤 2:配置环境变量
|
||||
|
||||
```bash
|
||||
# 复制配置模板
|
||||
cp env.example .env
|
||||
|
||||
# 编辑配置(修改数据库密码、密钥等)
|
||||
vim .env
|
||||
|
||||
# 设置文件权限(重要!)
|
||||
chmod 600 .env
|
||||
```
|
||||
|
||||
**必须修改的配置项**:
|
||||
|
||||
```bash
|
||||
# 数据库密码(请使用强密码)
|
||||
MYSQL_ROOT_PASSWORD=your_strong_root_password
|
||||
MYSQL_PASSWORD=your_strong_password
|
||||
|
||||
# 应用密钥(32位以上随机字符串)
|
||||
SECRET_KEY=your_random_secret_key_at_least_32_chars
|
||||
|
||||
# 门户系统 API(确保网络可达)
|
||||
PORTAL_CONFIG_API=http://portal-backend:8000/api/ai/internal/config
|
||||
```
|
||||
|
||||
#### 步骤 3:创建外部网络
|
||||
|
||||
```bash
|
||||
# 如果 scrm_network 不存在
|
||||
docker network create scrm_network
|
||||
```
|
||||
|
||||
#### 步骤 4:执行部署
|
||||
|
||||
```bash
|
||||
./scripts/deploy.sh deploy
|
||||
```
|
||||
|
||||
#### 步骤 5:配置 Nginx 反向代理
|
||||
|
||||
将 `nginx.conf` 添加到主机 Nginx 配置:
|
||||
|
||||
```bash
|
||||
# 复制配置到 Nginx
|
||||
cp nginx.conf /etc/nginx/sites-available/pricing.conf
|
||||
|
||||
# 修改域名
|
||||
vim /etc/nginx/sites-available/pricing.conf
|
||||
# 将 pricing.example.com 替换为实际域名
|
||||
|
||||
# 启用配置
|
||||
ln -s /etc/nginx/sites-available/pricing.conf /etc/nginx/sites-enabled/
|
||||
|
||||
# 测试配置
|
||||
nginx -t
|
||||
|
||||
# 重载 Nginx
|
||||
nginx -s reload
|
||||
```
|
||||
|
||||
#### 步骤 6:配置 SSL 证书
|
||||
|
||||
```bash
|
||||
# 使用 Let's Encrypt
|
||||
DOMAIN=pricing.yourcompany.com EMAIL=admin@yourcompany.com ./scripts/setup-ssl.sh request
|
||||
```
|
||||
|
||||
### 2.3 升级部署
|
||||
|
||||
```bash
|
||||
cd /opt/pricing-model
|
||||
|
||||
# 拉取最新代码
|
||||
git pull
|
||||
|
||||
# 备份数据库(重要!)
|
||||
./scripts/backup.sh backup
|
||||
|
||||
# 重新部署
|
||||
./scripts/deploy.sh deploy
|
||||
```
|
||||
|
||||
### 2.4 开发环境
|
||||
|
||||
```bash
|
||||
# 使用开发配置
|
||||
cp env.dev.example .env.dev
|
||||
|
||||
# 启动开发环境
|
||||
docker-compose -f docker-compose.dev.yml up -d
|
||||
|
||||
# 访问
|
||||
# 前端: http://localhost:3000 (热重载)
|
||||
# 后端: http://localhost:8000
|
||||
# API 文档: http://localhost:8000/docs
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 3. 配置管理
|
||||
|
||||
### 3.1 环境变量说明
|
||||
|
||||
| 变量 | 说明 | 默认值 |
|
||||
|------|------|--------|
|
||||
| `APP_ENV` | 运行环境 | production |
|
||||
| `DEBUG` | 调试模式 | false |
|
||||
| `SECRET_KEY` | 应用密钥 | 必须配置 |
|
||||
| `DATABASE_URL` | 数据库连接 | 必须配置 |
|
||||
| `MYSQL_ROOT_PASSWORD` | MySQL root 密码 | 必须配置 |
|
||||
| `MYSQL_USER` | MySQL 用户名 | pricing_user |
|
||||
| `MYSQL_PASSWORD` | MySQL 密码 | 必须配置 |
|
||||
| `PORTAL_CONFIG_API` | 门户系统 API | http://portal-backend:8000/api/ai/internal/config |
|
||||
| `CORS_ORIGINS` | 允许的跨域来源 | ["https://pricing.example.com"] |
|
||||
| `DB_POOL_SIZE` | 数据库连接池大小 | 5 |
|
||||
| `DB_MAX_OVERFLOW` | 连接池溢出上限 | 10 |
|
||||
|
||||
### 3.2 Nginx 配置
|
||||
|
||||
主要配置项:
|
||||
|
||||
```nginx
|
||||
# 域名
|
||||
server_name pricing.yourcompany.com;
|
||||
|
||||
# SSL 证书路径
|
||||
ssl_certificate /etc/nginx/ssl/pricing.yourcompany.com.pem;
|
||||
ssl_certificate_key /etc/nginx/ssl/pricing.yourcompany.com.key;
|
||||
|
||||
# 上传文件大小限制
|
||||
client_max_body_size 10M;
|
||||
|
||||
# AI 接口超时(较长)
|
||||
proxy_read_timeout 120s;
|
||||
```
|
||||
|
||||
### 3.3 Docker 资源限制
|
||||
|
||||
```yaml
|
||||
# docker-compose.yml 中的资源限制
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
cpus: '1'
|
||||
memory: 512M # 后端
|
||||
reservations:
|
||||
cpus: '0.25'
|
||||
memory: 128M
|
||||
```
|
||||
|
||||
建议配置:
|
||||
|
||||
| 服务 | 内存限制 | CPU 限制 |
|
||||
|------|----------|----------|
|
||||
| 前端 | 256M | 0.5 |
|
||||
| 后端 | 512M | 1.0 |
|
||||
| MySQL | 1G | 1.0 |
|
||||
|
||||
---
|
||||
|
||||
## 4. 日常运维
|
||||
|
||||
### 4.1 服务管理
|
||||
|
||||
```bash
|
||||
# 查看服务状态
|
||||
./scripts/deploy.sh status
|
||||
|
||||
# 重启所有服务
|
||||
./scripts/deploy.sh restart
|
||||
|
||||
# 停止服务
|
||||
./scripts/deploy.sh stop
|
||||
|
||||
# 查看日志
|
||||
./scripts/deploy.sh logs
|
||||
|
||||
# 查看特定服务日志
|
||||
docker-compose logs -f pricing-backend
|
||||
docker-compose logs -f pricing-mysql
|
||||
```
|
||||
|
||||
### 4.2 容器管理
|
||||
|
||||
```bash
|
||||
# 进入后端容器
|
||||
docker exec -it pricing-backend /bin/bash
|
||||
|
||||
# 进入 MySQL 容器
|
||||
docker exec -it pricing-mysql mysql -u root -p
|
||||
|
||||
# 重启单个服务
|
||||
docker-compose restart pricing-backend
|
||||
```
|
||||
|
||||
### 4.3 数据库管理
|
||||
|
||||
```bash
|
||||
# 连接数据库
|
||||
docker exec -it pricing-mysql mysql -u root -p pricing_model
|
||||
|
||||
# 常用 SQL
|
||||
-- 查看表
|
||||
SHOW TABLES;
|
||||
|
||||
-- 查看项目数量
|
||||
SELECT COUNT(*) FROM projects;
|
||||
|
||||
-- 查看最近操作日志
|
||||
SELECT * FROM operation_logs ORDER BY created_at DESC LIMIT 10;
|
||||
```
|
||||
|
||||
### 4.4 日志管理
|
||||
|
||||
日志位置:
|
||||
|
||||
```bash
|
||||
# Docker 日志
|
||||
/var/lib/docker/containers/<container_id>/<container_id>-json.log
|
||||
|
||||
# 查看日志大小
|
||||
docker system df -v
|
||||
```
|
||||
|
||||
清理日志:
|
||||
|
||||
```bash
|
||||
# 清理停止的容器
|
||||
docker container prune
|
||||
|
||||
# 清理未使用的镜像
|
||||
docker image prune
|
||||
|
||||
# 清理所有未使用资源
|
||||
docker system prune
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 5. 备份与恢复
|
||||
|
||||
### 5.1 自动备份
|
||||
|
||||
配置定时备份:
|
||||
|
||||
```bash
|
||||
# 编辑 crontab
|
||||
crontab -e
|
||||
|
||||
# 添加每日备份任务(每天凌晨 2 点)
|
||||
0 2 * * * /opt/pricing-model/scripts/backup.sh backup >> /var/log/pricing-backup.log 2>&1
|
||||
```
|
||||
|
||||
### 5.2 手动备份
|
||||
|
||||
```bash
|
||||
# 执行备份
|
||||
./scripts/backup.sh backup
|
||||
|
||||
# 查看备份列表
|
||||
./scripts/backup.sh list
|
||||
|
||||
# 清理旧备份
|
||||
./scripts/backup.sh cleanup
|
||||
```
|
||||
|
||||
备份文件位置:`/data/backups/pricing_model/`
|
||||
|
||||
### 5.3 恢复数据
|
||||
|
||||
```bash
|
||||
# 恢复指定备份
|
||||
./scripts/backup.sh restore pricing_model_20260120_020000.sql.gz
|
||||
|
||||
# 或指定完整路径
|
||||
./scripts/backup.sh restore /data/backups/pricing_model/pricing_model_20260120_020000.sql.gz
|
||||
```
|
||||
|
||||
> **警告**:恢复操作会覆盖当前数据,请谨慎操作!
|
||||
|
||||
### 5.4 备份策略建议
|
||||
|
||||
| 备份类型 | 频率 | 保留期 |
|
||||
|----------|------|--------|
|
||||
| 数据库全量 | 每日 | 7 天 |
|
||||
| 配置文件 | 变更时 | 长期 |
|
||||
| 代码 | Git 管理 | 长期 |
|
||||
|
||||
---
|
||||
|
||||
## 6. 监控与告警
|
||||
|
||||
### 6.1 健康检查
|
||||
|
||||
```bash
|
||||
# 运行监控检查
|
||||
./scripts/monitor.sh report
|
||||
|
||||
# 快速检查(适合 cron)
|
||||
./scripts/monitor.sh quick
|
||||
```
|
||||
|
||||
### 6.2 监控指标
|
||||
|
||||
| 指标 | 检查方式 | 告警阈值 |
|
||||
|------|----------|----------|
|
||||
| 容器状态 | docker ps | 非 running |
|
||||
| 健康检查 | /health API | 响应失败 |
|
||||
| 磁盘使用 | df -h | > 80% 警告, > 90% 严重 |
|
||||
| 内存使用 | free | > 80% 警告, > 90% 严重 |
|
||||
| API 响应 | curl | > 2s 警告 |
|
||||
|
||||
### 6.3 配置定时监控
|
||||
|
||||
```bash
|
||||
# 每 5 分钟检查一次
|
||||
*/5 * * * * /opt/pricing-model/scripts/monitor.sh quick >> /var/log/pricing-monitor.log 2>&1
|
||||
```
|
||||
|
||||
### 6.4 告警配置
|
||||
|
||||
编辑 `scripts/monitor.sh` 配置告警方式:
|
||||
|
||||
```bash
|
||||
# 邮件告警
|
||||
ALERT_EMAIL=admin@yourcompany.com
|
||||
|
||||
# 企业微信/钉钉 webhook
|
||||
WEBHOOK_URL=https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxx
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 7. 故障排查
|
||||
|
||||
### 7.1 服务无法启动
|
||||
|
||||
**检查步骤**:
|
||||
|
||||
```bash
|
||||
# 1. 检查 Docker 服务
|
||||
systemctl status docker
|
||||
|
||||
# 2. 检查容器日志
|
||||
docker-compose logs pricing-backend
|
||||
docker-compose logs pricing-mysql
|
||||
|
||||
# 3. 检查端口占用
|
||||
netstat -tlnp | grep -E '8000|3306'
|
||||
|
||||
# 4. 检查磁盘空间
|
||||
df -h
|
||||
```
|
||||
|
||||
### 7.2 数据库连接失败
|
||||
|
||||
```bash
|
||||
# 1. 检查 MySQL 容器状态
|
||||
docker ps | grep pricing-mysql
|
||||
|
||||
# 2. 检查数据库日志
|
||||
docker logs pricing-mysql
|
||||
|
||||
# 3. 测试数据库连接
|
||||
docker exec pricing-mysql mysqladmin ping -h localhost
|
||||
|
||||
# 4. 检查 DATABASE_URL 配置
|
||||
cat .env | grep DATABASE_URL
|
||||
```
|
||||
|
||||
### 7.3 API 响应慢
|
||||
|
||||
```bash
|
||||
# 1. 检查后端容器资源
|
||||
docker stats pricing-backend
|
||||
|
||||
# 2. 检查数据库慢查询
|
||||
docker exec -it pricing-mysql mysql -e "SHOW PROCESSLIST;"
|
||||
|
||||
# 3. 检查 AI 服务连接
|
||||
curl -sf http://portal-backend:8000/api/ai/internal/config
|
||||
```
|
||||
|
||||
### 7.4 前端页面空白
|
||||
|
||||
```bash
|
||||
# 1. 检查前端容器
|
||||
docker logs pricing-frontend
|
||||
|
||||
# 2. 检查 Nginx 配置
|
||||
nginx -t
|
||||
|
||||
# 3. 检查静态文件
|
||||
docker exec pricing-frontend ls -la /usr/share/nginx/html/
|
||||
```
|
||||
|
||||
### 7.5 常见错误及解决
|
||||
|
||||
| 错误 | 可能原因 | 解决方案 |
|
||||
|------|----------|----------|
|
||||
| `Connection refused` | 服务未启动 | 重启服务 |
|
||||
| `Access denied` | 数据库密码错误 | 检查 .env 配置 |
|
||||
| `Network unreachable` | 网络配置错误 | 检查 Docker 网络 |
|
||||
| `No space left` | 磁盘满 | 清理日志/扩容 |
|
||||
| `Out of memory` | 内存不足 | 增加内存/优化限制 |
|
||||
|
||||
---
|
||||
|
||||
## 8. 安全规范
|
||||
|
||||
### 8.1 敏感信息管理
|
||||
|
||||
- `.env` 文件权限必须为 600
|
||||
- 禁止将 `.env` 提交到 Git
|
||||
- 定期轮换数据库密码
|
||||
- API Key 从门户系统获取,禁止硬编码
|
||||
|
||||
### 8.2 网络安全
|
||||
|
||||
- 仅 Nginx 暴露公网端口(80/443)
|
||||
- 后端服务仅内网访问
|
||||
- 数据库端口禁止外部访问
|
||||
- 启用 HTTPS,HTTP 自动重定向
|
||||
|
||||
### 8.3 访问控制
|
||||
|
||||
- 使用 OAuth 统一认证
|
||||
- 敏感操作记录审计日志
|
||||
- 定期审查用户权限
|
||||
|
||||
### 8.4 安全检查清单
|
||||
|
||||
- [ ] .env 文件权限为 600
|
||||
- [ ] 已修改默认密码
|
||||
- [ ] SECRET_KEY 使用随机字符串
|
||||
- [ ] HTTPS 已启用
|
||||
- [ ] 数据库端口未暴露公网
|
||||
- [ ] 定期备份已配置
|
||||
- [ ] 监控告警已启用
|
||||
|
||||
---
|
||||
|
||||
## 9. 附录
|
||||
|
||||
### 9.1 目录结构
|
||||
|
||||
```
|
||||
/opt/pricing-model/
|
||||
├── 后端服务/ # 后端代码
|
||||
├── 前端应用/ # 前端代码
|
||||
├── scripts/ # 运维脚本
|
||||
│ ├── deploy.sh # 部署脚本
|
||||
│ ├── backup.sh # 备份脚本
|
||||
│ ├── setup-ssl.sh # SSL 配置
|
||||
│ └── monitor.sh # 监控脚本
|
||||
├── docs/ # 文档
|
||||
├── docker-compose.yml # 生产环境配置
|
||||
├── docker-compose.dev.yml# 开发环境配置
|
||||
├── nginx.conf # Nginx 配置
|
||||
├── init.sql # 数据库初始化
|
||||
├── .env # 环境变量(不提交)
|
||||
└── .env.example # 环境变量模板
|
||||
```
|
||||
|
||||
### 9.2 端口说明
|
||||
|
||||
| 端口 | 服务 | 说明 |
|
||||
|------|------|------|
|
||||
| 80 | Nginx | HTTP(重定向到 HTTPS) |
|
||||
| 443 | Nginx | HTTPS |
|
||||
| 8000 | 后端 | API 服务(内网) |
|
||||
| 3306 | MySQL | 数据库(内网) |
|
||||
|
||||
### 9.3 常用命令速查
|
||||
|
||||
```bash
|
||||
# 部署
|
||||
./scripts/deploy.sh deploy
|
||||
|
||||
# 重启
|
||||
./scripts/deploy.sh restart
|
||||
|
||||
# 查看日志
|
||||
./scripts/deploy.sh logs
|
||||
|
||||
# 备份
|
||||
./scripts/backup.sh backup
|
||||
|
||||
# 监控
|
||||
./scripts/monitor.sh report
|
||||
|
||||
# 进入容器
|
||||
docker exec -it pricing-backend /bin/bash
|
||||
docker exec -it pricing-mysql mysql -u root -p
|
||||
```
|
||||
|
||||
### 9.4 相关文档
|
||||
|
||||
- 《瑞小美系统技术栈标准与字符标准》
|
||||
- 《瑞小美 AI 接入规范》
|
||||
- 《智能项目定价模型 - 产品需求文档》
|
||||
- 《智能项目定价模型 - API 接口文档》
|
||||
|
||||
---
|
||||
|
||||
## 技术支持
|
||||
|
||||
如遇问题,请联系瑞小美技术团队。
|
||||
|
||||
---
|
||||
|
||||
*瑞小美技术团队 · 2026-01-20*
|
||||
Reference in New Issue
Block a user