# PRD 计划执行：服务管理模块

## 项目概述

### 背景
基于 `PRD_需求文档_服务管理模块.md`，实现服务管理模块的静态页面开发。参考 `https://192.168.5.44` 统一管理平台的设计风格，与现有 service-monitor 模块完全隔离。

### 目标
| 目标 | 说明 |
|------|------|
| 模块隔离 | 新模块 service-manage 与 service-monitor 物理隔离，互不影响 |
| 静态页面 | 实现三个页面：服务授权、服务升级、服务信息 |
| 权限控制 | 仅管理员可访问 |
| 响应式设计 | 适配桌面/平板/移动端 |

### 开发周期
- 预计总工时: 7h
- 开发周期: 1-2 天

---

## 技术方案

### 目录结构

```
skill/code/web/
├── service_manage/              # 新增目录
│   ├── __init__.py              # Blueprint 暴露
│   └── routes.py                # 路由定义
└── templates/service_manage/    # 新增目录
    ├── base.html                # 基础模板（侧边栏 + 顶栏 + 内容区）
    ├── authorization.html       # 服务授权页
    ├── upgrade.html             # 服务升级页
    └── info.html                # 服务信息页
```

### Blueprint 定义

**文件**: `skill/code/web/service_manage/__init__.py`

```python
"""
service_manage — 服务管理模块（自包含子包）

对外仅暴露 Blueprint：
    from service_manage import bp
    app.register_blueprint(bp)
"""
from .routes import bp

__all__ = ["bp"]
```

**文件**: `skill/code/web/service_manage/routes.py`

```python
from flask import Blueprint, render_template
from web.decorators import page_login_required

bp = Blueprint('service-manage', __name__, url_prefix='/service-manage')

@bp.route('/')
@bp.route('/authorization')
@page_login_required
def authorization():
    """服务授权页面"""
    return render_template('service_manage/authorization.html')

@bp.route('/upgrade')
@page_login_required
def upgrade():
    """服务升级页面"""
    return render_template('service_manage/upgrade.html')

@bp.route('/info')
@page_login_required
def info():
    """服务信息页面"""
    return render_template('service_manage/info.html')
```

### 模板继承关系

```
templates/base.html (主应用基础模板)
    └── templates/service_manage/base.html (模块基础模板)
            ├── authorization.html
            ├── upgrade.html
            └── info.html
```

### 样式方案

复用主应用 CSS（`/static/css/style.css`），并在 `service_manage/base.html` 中定义模块私有样式：

- 步骤卡片样式
- Tab 切换样式
- 服务列表表格样式
- 信息卡片样式

---

## 实施计划

### 阶段 1: 模块基础结构（1h）

| 序号 | 任务 | 预计时间 | 依赖 |
|------|------|----------|------|
| 1.1 | 创建 `skill/code/web/service_manage/` 目录 | 5min | - |
| 1.2 | 编写 `__init__.py`（Blueprint 暴露） | 10min | 1.1 |
| 1.3 | 编写 `routes.py`（路由定义） | 20min | 1.2 |
| 1.4 | 在 `server.py` 注册 Blueprint | 10min | 1.3 |
| 1.5 | 创建 `templates/service_manage/` 目录 | 5min | - |
| 1.6 | 编写 `base.html` 基础模板 | 10min | 1.5 |

### 阶段 2: 服务授权页面（2h）

| 序号 | 任务 | 预计时间 | 依赖 |
|------|------|----------|------|
| 2.1 | 编写 `authorization.html` 页面框架 | 30min | 1.6 |
| 2.2 | 实现 4 个步骤卡片布局 | 45min | 2.1 |
| 2.3 | 实现步骤 2 表单（5 个字段） | 30min | 2.2 |
| 2.4 | 样式调整和细节优化 | 15min | 2.3 |

### 阶段 3: 服务升级页面（2h）

| 序号 | 任务 | 预计时间 | 依赖 |
|------|------|----------|------|
| 3.1 | 编写 `upgrade.html` 页面框架 | 20min | 1.6 |
| 3.2 | 实现 Tab 切换功能（服务重启/服务回滚） | 30min | 3.1 |
| 3.3 | 实现顶部操作按钮栏 | 20min | 3.2 |
| 3.4 | 实现服务列表表格 | 40min | 3.3 |
| 3.5 | 样式调整和细节优化 | 10min | 3.4 |

### 阶段 4: 服务信息页面（1h）

| 序号 | 任务 | 预计时间 | 依赖 |
|------|------|----------|------|
| 4.1 | 编写 `info.html` 页面框架 | 15min | 1.6 |
| 4.2 | 实现监控类型下拉选择 | 15min | 4.1 |
| 4.3 | 实现 3 个信息卡片（CPU/内存/硬盘） | 20min | 4.2 |
| 4.4 | 样式调整和细节优化 | 10min | 4.3 |

### 阶段 5: 集成与验收（1h）

| 序号 | 任务 | 预计时间 | 依赖 |
|------|------|----------|------|
| 5.1 | 更新 `utils/modules.py` 模块元数据 | 10min | 1.4 |
| 5.2 | 验证三个页面路由正常 | 10min | 5.1 |
| 5.3 | 验证与 service-monitor 模块隔离 | 10min | 5.2 |
| 5.4 | 响应式布局测试和调整 | 20min | 5.3 |
| 5.5 | 管理员权限验证 | 10min | 5.4 |

---

## 测试验证

### 功能测试项

| 序号 | 测试项 | 预期结果 |
|------|--------|----------|
| 1 | 访问 `/service-manage/authorization` | 正确显示服务授权页面 |
| 2 | 访问 `/service-manage/upgrade` | 正确显示服务升级页面 |
| 3 | 访问 `/service-manage/info` | 正确显示服务信息页面 |
| 4 | 点击 Tab 切换（服务重启/服务回滚） | Tab 正确切换 |
| 5 | 服务升级页表格复选框全选 | 所有行被选中 |
| 6 | 响应式布局（移动端） | 页面自适应 |

### 隔离验证

| 序号 | 测试项 | 预期结果 |
|------|--------|----------|
| 1 | service-manage 代码不导入 service_monitor | 无交叉导入 |
| 2 | service-monitor 代码不导入 service_manage | 无交叉导入 |
| 3 | 两个模块数据目录独立 | 无共享数据 |

### 权限验证

| 序号 | 测试项 | 预期结果 |
|------|--------|----------|
| 1 | 未登录访问 `/service-manage/*` | 重定向到登录页 |
| 2 | 普通用户访问 `/service-manage/*` | 无权限提示（待定） |
| 3 | 管理员访问 `/service-manage/*` | 正常访问 |

---

## 执行记录

### 2026-07-22

| 时间 | 完成项 | 备注 |
|------|--------|------|
| - | 需求文档编写 | 完成 |
| - | 计划执行文档编写 | 完成 |

---

## 注意事项

### 隔离原则
- **代码隔离**: `service_manage/` 目录独立，不与 `service_monitor/` 共享代码
- **模板隔离**: `templates/service_manage/` 目录独立
- **数据隔离**: 暂无数据存储需求

### 样式复用
- 复用主应用 CSS，避免重复定义
- 遵循现有设计规范（颜色、字体、间距）

### 响应式设计
- 参考现有 `service_monitor` 的响应式实现
- 使用 CSS Grid/Flexbox 布局

---

## 相关文档

- [[PRD_需求文档_服务管理模块]]
- [[PRD_需求文档_服务监测模块]]
- [[PRD_计划执行_平台化改造与模块切换]]