﻿# UC-003 报价管理系统 V1.2 功能用例

## 文档信息

| 字段 | 内容 |
|------|------|
| 文档编号 | UC-003 |
| 文档类型 | 功能用例 |
| 功能名称 | quotation-management-system |
| 关联 PRD | PRD-003 总览、PRD-003A 前台、PRD-003B 后台 |
| 版本 | V1.2 |
| 状态 | 草稿 |
| 存放位置 | documents/use-cases |
| 说明 | 本文档基于最新拆分后的前台 PRD 与后台 PRD 更新，重点同步前后台边界、项目状态、报价状态、快照、追加报价、打折、导出与操作日志规则。 |

## 用例索引

| 用例编号 | 用例名称 | 关联 PRD 功能 |
|---------|---------|---------------|
| UC-003-001 | 前台登录并完成首次改密 | FE-001、FE-007 |
| UC-003-002 | 前台查看、创建与编辑项目 | FE-002 |
| UC-003-003 | 前台新建报价并配置报价计算器 | FE-003 |
| UC-003-004 | 前台配置楼宇模块并应用最低价保护 | FE-003 |
| UC-003-005 | 前台配置产品类模块、色彩切换与系统收费 | FE-003 |
| UC-003-006 | 前台保存报价、继续编辑与提交审核 | FE-003、FE-004 |
| UC-003-007 | 前台查看报价详情与报价历程 | FE-004 |
| UC-003-008 | 前台维护报价单资料并导出报价 | FE-005、FE-006 |
| UC-003-009 | 前台发起追加报价 | FE-004、BE-003 |
| UC-003-010 | 后台登录并管理全部项目 | BE-001、BE-002 |
| UC-003-011 | 后台审核报价 | BE-003 |
| UC-003-012 | 后台追加报价、打折与删除报价 | BE-003 |
| UC-003-013 | 后台维护账号、角色与权限开关 | BE-004 |
| UC-003-014 | 后台维护报价配置、税项与分成比例 | BE-005 |
| UC-003-015 | 前后台修改密码与会话控制 | FE-001、FE-007、BE-001、BE-006 |
| UC-003-016 | 后台查看操作日志 | BE-006 |

---

## 功能用例 UC-003-001

**用例编号**：UC-003-001

**用例名称**：前台登录并完成首次改密

**关联用户故事**：US-待补充（来源：PRD-003A / FE-001、FE-007）

**参与者（Actor）**：普通用户

### 前置条件

1. 普通用户账号已由管理员或超级管理员在后台创建。
2. 账号处于启用状态。
3. 用户访问前端报价平台登录页。

### 后置条件（成功时）

1. 普通用户登录前台成功，并进入项目列表页。
2. 首次登录或密码被重置后的用户完成强制改密。
3. 系统保存该前台账号的语言偏好。

### 基础流（正常路径）

| 步骤 | 参与者操作 | 系统响应 |
|------|-----------|---------|
| 1 | 用户打开前台登录页 | 系统按浏览器语言自动匹配中文、日文或英文 |
| 2 | 用户输入账号和密码 | 系统接收登录信息 |
| 3 | 用户点击登录 | 系统校验账号、密码、账号状态、账号角色 |
| 4 | 校验通过且角色为普通用户 | 系统建立前台会话 |
| 5 | 用户首次登录或密码曾被重置 | 系统强制跳转到 `系统管理 - 修改密码` |
| 6 | 用户填写当前密码、新密码、确认新密码并提交 | 系统校验密码规则并保存新密码 |
| 7 | 用户完成改密 | 系统进入前台项目列表页 |
| 8 | 用户手动切换语言 | 系统立即切换前台界面语言，并保存当前前台账号语言偏好 |

### 异常流

**EX-1: 账号或密码为空**
- 触发条件：用户未填写账号或密码即提交。
- 系统行为：提示 `请输入账号和密码`。
- 恢复路径：回到基础流第 2 步。

**EX-2: 账号不存在或密码错误**
- 触发条件：账号不存在，或密码与账号不匹配。
- 系统行为：统一提示 `账号不存在或密码错误`。
- 恢复路径：回到基础流第 2 步。

**EX-3: 账号已停用**
- 触发条件：账号状态为停用。
- 系统行为：提示 `账号已停用，请联系管理员`。
- 恢复路径：终止登录。

**EX-4: 管理员或超级管理员访问前台**
- 触发条件：管理员或超级管理员账号登录前台。
- 系统行为：拒绝进入前台，并提示 `当前账号无前台访问权限`。
- 恢复路径：终止前台访问。

**EX-5: 密码规则不合规**
- 触发条件：新密码长度不在 `8-20` 位、未同时包含字母和数字、包含中文或空格，或与当前密码相同。
- 系统行为：提示密码不符合规则，不保存新密码。
- 恢复路径：回到基础流第 6 步。

### 业务规则

| 规则编号 | 描述 |
|---------|------|
| BR-001 | 前端报价平台仅对普通用户开放，管理员和超级管理员不允许登录前台。 |
| BR-002 | 前台不提供注册和自助找回密码。 |
| BR-003 | 密码长度为 `8-20` 位，需同时包含字母和数字，区分大小写，允许常见英文特殊字符，不允许中文或空格。 |
| BR-004 | 密码前后空格不自动 trim，直接按非法输入处理。 |
| BR-005 | 用户再次登录前台时，优先使用该前台账号上次保存的语言偏好。 |
| BR-006 | 导出页面预览语言独立于系统语言，仅跟随导出语言配置。 |

### 补充说明

前台和后台分别独立保存语言偏好，互不覆盖。

---

## 功能用例 UC-003-002

**用例编号**：UC-003-002

**用例名称**：前台查看、创建与编辑项目

**关联用户故事**：US-待补充（来源：PRD-003A / FE-002）

**参与者（Actor）**：普通用户

### 前置条件

1. 普通用户已登录前端报价平台。
2. 用户拥有至少一个项目权限，或准备创建新项目。

### 后置条件（成功时）

1. 用户可查看其有权限访问的项目列表与历史报价记录。
2. 新建项目成功后，系统生成项目编号，项目状态为 `进行中`。
3. 项目创建人默认拥有项目及其全部报价的查看与编辑权限。

### 基础流（正常路径）

| 步骤 | 参与者操作 | 系统响应 |
|------|-----------|---------|
| 1 | 用户进入项目列表页 | 系统展示当前用户有权限访问的项目 |
| 2 | 用户按项目名称、客户名称、项目负责人或创建时间筛选 | 系统按条件刷新列表，默认按创建时间倒序 |
| 3 | 用户点击 `新建项目` | 系统打开项目创建弹窗 |
| 4 | 用户填写项目名称、客户名称、项目负责人、备注 | 系统接收项目基础信息，项目负责人默认取项目创建人 |
| 5 | 用户提交创建 | 系统创建项目，生成 `P-YYYYMMDD-XXXX` 格式项目编号，项目状态设为 `进行中` |
| 6 | 用户点击 `编辑项目` | 系统展示项目基础信息与默认报价单信息编辑表单 |
| 7 | 用户保存项目基础信息或默认报价单信息 | 系统保存项目级数据，仅影响项目当前展示与后续新建报价 |
| 8 | 用户展开项目 | 系统展示该项目下历史报价记录 |
| 9 | 用户点击 `新建报价` | 若项目状态为 `进行中`，系统进入空白报价计算器 |

### 异常流

**EX-1: 项目名称为空**
- 触发条件：用户未填写项目名称即提交。
- 系统行为：阻止提交，并提示项目名称为必填项。
- 恢复路径：回到基础流第 4 步。

**EX-2: 项目创建失败**
- 触发条件：接口业务失败、网络异常或系统异常。
- 系统行为：不生成项目记录、不生成项目编号，不关闭表单；当前填写内容保留。
- 恢复路径：用户修正或重试。

**EX-3: 项目状态不允许新建报价**
- 触发条件：项目状态为 `已完成` 或 `已取消`，用户尝试新建报价。
- 系统行为：阻止创建报价，并提示当前项目不可继续报价。
- 恢复路径：终止新建报价流程。

**EX-4: 用户权限被回收**
- 触发条件：用户已从项目可见人员名单中移除后继续访问项目或报价。
- 系统行为：不再展示该项目，对查看、编辑、保存、提交审核、追加等请求按无权限处理。
- 恢复路径：终止访问。

### 业务规则

| 规则编号 | 描述 |
|---------|------|
| BR-001 | 项目列表展示项目编号、项目名称、客户名称、项目负责人、项目状态、报价次数、创建时间、操作。 |
| BR-002 | 项目状态包括 `进行中 / 已完成 / 已取消`。 |
| BR-003 | 普通用户可创建项目，创建人默认拥有该项目及其全部报价的查看与编辑权限。 |
| BR-004 | 项目创建人和项目可见人员均可编辑项目基础信息与默认报价单信息。 |
| BR-005 | 普通用户前台不可编辑项目状态、可见人员、项目级分成比例，也不展示项目级分成比例入口。 |
| BR-006 | 项目基础信息与默认报价单信息允许在任意阶段编辑，不因已有历史报价或审核状态而禁用。 |
| BR-007 | 项目基础信息与默认报价单信息变更不反向覆盖已保存报价的快照。 |
| BR-008 | 当前版本暂不支持复制报价；历史报价列表前台仅展示 `查看` 操作。 |

### 补充说明

追加报价与打折不生成新的历史报价记录，相关记录展示在当前报价详情与报价历程中。

---

## 功能用例 UC-003-003

**用例编号**：UC-003-003

**用例名称**：前台新建报价并配置报价计算器

**关联用户故事**：US-待补充（来源：PRD-003A / FE-003）

**参与者（Actor）**：普通用户

### 前置条件

1. 用户已登录前端报价平台。
2. 用户对当前项目拥有查看与编辑权限。
3. 当前项目状态为 `进行中`。
4. 后台已维护当前有效的报价配置、税项配置与分成比例。

### 后置条件（成功时）

1. 用户完成报价计算器配置，系统实时展示报价预览。
2. 报价首次保存后，在项目下生成一条历史报价记录。
3. 系统固化当前报价的参数、计价规则、模块金额、税项、分成比例、整单金额与报价单资料快照。

### 基础流（正常路径）

| 步骤 | 参与者操作 | 系统响应 |
|------|-----------|---------|
| 1 | 用户在项目中点击 `新建报价` | 系统进入空白报价计算器 |
| 2 | 用户查看页面 | 系统展示左侧配置区与右侧报价预览区 |
| 3 | 用户切换模块页签 | 系统在 `楼宇 / 专有部 / 色彩切换 / 共用部 / 办公室 / 动画 / 平面家具摆放 / 系统收费` 间切换 |
| 4 | 用户填写模块参数 | 系统按后台当前有效配置实时刷新模块小计、税项、含税总价和分成结果 |
| 5 | 用户滚动左侧或右侧区域 | 系统保持左右两侧独立滚动，互不干扰 |
| 6 | 用户查看报价预览 | 系统展示各模块总价、不含税总价、税项明细、含税总价、模块级分成结果、整单级分成汇总 |
| 7 | 用户点击 `保存报价` | 系统校验已启用、已新增或已勾选模块的必填项 |
| 8 | 校验通过 | 系统保存报价，状态标记为 `待提交审核`，并生成历史报价记录 |

### 异常流

**EX-1: 必填项缺失**
- 触发条件：已启用、已新增或已勾选的模块存在必填项未完成。
- 系统行为：阻止保存或提交审核，并明确提示对应模块与缺失字段。
- 恢复路径：回到基础流第 4 步。

**EX-2: 数值越界或格式非法**
- 触发条件：楼层、面积、户数、张数、秒数、月数、链接数、点位数、金额、比例等输入超出范围或格式非法。
- 系统行为：阻止保存，并提示对应字段边界要求。
- 恢复路径：用户修正字段。

**EX-3: 保存失败**
- 触发条件：接口业务失败、网络异常或系统异常。
- 系统行为：不得展示保存成功；当前编辑内容保留；报价状态不变。
- 恢复路径：用户重试保存。

### 业务规则

| 规则编号 | 描述 |
|---------|------|
| BR-001 | 新建报价只支持空白报价初始态，当前版本暂不支持复制报价。 |
| BR-002 | 新建报价首次保存时生成一条历史报价记录。 |
| BR-003 | 对 `待提交审核` 或 `审核不通过` 状态的已有报价编辑并保存时，覆盖当前报价记录，不生成新的历史报价记录。 |
| BR-004 | 已保存报价后续继续编辑时，沿用该报价首次保存时固化的参数快照，不切换到后台最新参数配置。 |
| BR-005 | 税项来自后台当前生效税项配置，并在新建报价首次保存时生成税项快照。 |
| BR-006 | 所有金额按日元整数展示；小数金额统一四舍五入到个位日元。 |
| BR-007 | 分成尾差归入日本金额，确保日本金额 + 南京金额 = 模块总价。 |

### 补充说明

右侧报价预览展示结果必须与最终保存报价记录保持一致。

---

## 功能用例 UC-003-004

**用例编号**：UC-003-004

**用例名称**：前台配置楼宇模块并应用最低价保护

**关联用户故事**：US-待补充（来源：PRD-003A / FE-003）

**参与者（Actor）**：普通用户

### 前置条件

1. 用户已进入报价计算器。
2. 楼宇模块处于启用或已新增状态。
3. 后台已维护楼宇价格配置、工时配置和示例说明。

### 后置条件（成功时）

1. 用户完成至少一栋有效大楼实例配置。
2. 每栋大楼至少选择一个大楼交付项。
3. 楼宇模块总价按配置结果与最低价保护规则保存。

### 基础流（正常路径）

| 步骤 | 参与者操作 | 系统响应 |
|------|-----------|---------|
| 1 | 用户切换到 `楼宇` 模块 | 系统展示 `大楼 / 项目场地条件 / 大楼交付` 二级页签 |
| 2 | 用户新增或切换大楼实例 | 系统展示当前大楼实例配置卡片 |
| 3 | 用户填写楼宇名称、层数、体型类型、外立面、屋顶类型等参数 | 系统按楼宇配置刷新实例小计 |
| 4 | 用户在参数 `?` 或单选项上悬停 | 系统展示对应示例说明 |
| 5 | 用户配置项目场地条件 | 系统展示标准制作包含、景观、异形件、配套设施、边界与排水、占地外、地面高差等参数 |
| 6 | 用户配置占地外 | 系统提供地铁站、红绿灯两个步进器输入项 |
| 7 | 用户进入大楼交付页签 | 系统按每栋大楼实例展示 BUILDING VISTA 3D、BUILDING VISTA Lite、大楼追加静态图交付 |
| 8 | 用户选择交付项与选配项 | 系统实时计算楼宇模块小计 |
| 9 | 用户保存报价 | 若楼宇模块总价低于 500,000 日元，系统弹出最低价确认 |
| 10 | 用户点击 `确定保存` | 系统按 500,000 日元保存楼宇模块金额，并继续保存报价 |

### 异常流

**EX-1: 未新增有效大楼**
- 触发条件：楼宇模块启用后不存在有效大楼实例。
- 系统行为：阻止保存，并提示至少新增 1 栋有效大楼。
- 恢复路径：回到基础流第 2 步。

**EX-2: 大楼必填项缺失**
- 触发条件：任意已新增大楼未填写楼宇名称、层数、体型类型、外立面或屋顶类型。
- 系统行为：阻止保存，并提示对应字段。
- 恢复路径：回到基础流第 3 步。

**EX-3: 未选择大楼交付项**
- 触发条件：任意一栋大楼未选择交付项。
- 系统行为：阻止保存，并提示每栋大楼至少选择 1 个大楼交付项。
- 恢复路径：回到基础流第 7 步。

**EX-4: 用户选择去修改**
- 触发条件：楼宇模块低于 500,000 日元时，用户点击最低价弹窗中的 `去修改`。
- 系统行为：关闭弹窗，返回当前报价继续编辑。
- 恢复路径：回到基础流第 3 步至第 8 步。

### 业务规则

| 规则编号 | 描述 |
|---------|------|
| BR-001 | 楼宇模块二级页签为 `大楼 / 项目场地条件 / 大楼交付`。 |
| BR-002 | 体型类型选项为 `一字 / L型`。 |
| BR-003 | `占地外` 与 `地面高差` 为同级参数，`占地外` 下包含地铁站、红绿灯。 |
| BR-004 | 楼宇模块总价不得低于 500,000 日元。 |
| BR-005 | 保存时低于 500,000 日元，提示文案为 `当前报价楼宇低于50万日元，如继续保存楼宇将按最低价50万元保存，请确认是否继续`。 |
| BR-006 | 弹窗按钮为 `去修改`、`确定保存`。 |
| BR-007 | 大楼追加静态图交付可单独选择并继续保存。 |

### 补充说明

大楼和项目场地条件中的参数价格不在前台主 PRD 中逐项写死，具体计价由后台当前生效楼宇价格配置驱动。

---

## 功能用例 UC-003-005

**用例编号**：UC-003-005

**用例名称**：前台配置产品类模块、色彩切换与系统收费

**关联用户故事**：US-待补充（来源：PRD-003A / FE-003）

**参与者（Actor）**：普通用户

### 前置条件

1. 用户已进入报价计算器。
2. 后台已维护产品类模块报价配置。

### 后置条件（成功时）

1. 用户完成专有部、色彩切换、共用部、办公室、动画、平面家具摆放、系统收费中所需模块配置。
2. 系统按当前有效配置实时计算各模块小计。

### 基础流（正常路径）

| 步骤 | 参与者操作 | 系统响应 |
|------|-----------|---------|
| 1 | 用户在专有部、共用部、办公室或动画模块点击 `新增同类模块` | 系统新增实例卡片，并展示实例名称、小计、删除操作 |
| 2 | 用户选择展示方式、家具/配置、面积/规格或场景类型 | 系统更新套餐摘要与小计金额 |
| 3 | 用户勾选追加项并填写数量 | 系统按当前有效配置计算追加项金额 |
| 4 | 用户进入色彩切换模块 | 系统展示 `2D / 3D` 展示方式 |
| 5 | 用户选择 2D 出图类型、场景、部件和数量 | 系统按 2D 系统费、场景基础价、部件价和 VR 折扣规则计算 |
| 6 | 用户选择 3D 出图类型、场景、LDK 洋室配置和风格套系数量 | 系统按 3D 场景基础价与数量计算 |
| 7 | 用户配置平面家具摆放 | 系统按固定档位或 `6270 × 张数^0.856` 公式计算 |
| 8 | 用户配置系统收费 | 系统仅对已勾选的系统使用费、外观模型、视点式 URL 链接费、HOMESTAGING 计价 |
| 9 | 用户查看报价预览区 | 系统展示各模块小计、税项、含税总价和分成结果 |

### 异常流

**EX-1: 产品类实例必填项缺失**
- 触发条件：已新增专有部、共用部、办公室实例未完成展示方式、家具/配置或面积/规格。
- 系统行为：阻止保存，并提示缺失字段。
- 恢复路径：用户补齐实例配置。

**EX-2: 色彩切换必填项缺失**
- 触发条件：展示方式、出图类型、场景未选择；或 3D LDK 未选择洋室配置。
- 系统行为：阻止保存，并提示缺失字段。
- 恢复路径：用户补齐色彩切换配置。

**EX-3: 动画时长非法**
- 触发条件：动画秒数小于 1 或大于 300。
- 系统行为：阻止保存，并提示秒数范围为 `1-300`。
- 恢复路径：用户修正秒数。

**EX-4: 系统收费未勾选**
- 触发条件：用户未勾选任何系统收费项。
- 系统行为：系统收费模块不参与必填校验，不计价。
- 恢复路径：继续正常报价。

### 业务规则

| 规则编号 | 描述 |
|---------|------|
| BR-001 | 专有部、共用部、办公室、动画支持多实例。 |
| BR-002 | 平面家具摆放为独立模块，不支持多实例。 |
| BR-003 | 系统收费为项目级模块，不区分大楼实例，不随大楼数量变化。 |
| BR-004 | 系统收费不是必选项，仅校验已勾选收费项的必填参数。 |
| BR-005 | 色彩切换 2D 与 3D 均必须选择 CCG / CQCG 出图类型。 |
| BR-006 | 2D 色彩切换系统费为 200,000 日元，且不参与专有部 VR 折扣。 |
| BR-007 | 若当前报价已选择专有部 VR，2D 色彩切换模块按原价 8 折计算。 |
| BR-008 | 3D 色彩切换不收取系统费。 |

### 补充说明

各模块的最终价格以后台当前生效报价配置为准；PRD 中价格示例用于初始整理和对照说明。

---

## 功能用例 UC-003-006

**用例编号**：UC-003-006

**用例名称**：前台保存报价、继续编辑与提交审核

**关联用户故事**：US-待补充（来源：PRD-003A / FE-003、FE-004）

**参与者（Actor）**：普通用户

### 前置条件

1. 用户对当前项目和报价拥有编辑权限。
2. 当前报价处于允许编辑或提交审核的状态。

### 后置条件（成功时）

1. 报价保存成功后处于 `待提交审核` 状态。
2. 用户提交审核成功后，报价进入 `待审核` 状态。
3. 报价状态变化写入报价历程与操作日志。

### 基础流（正常路径）

| 步骤 | 参与者操作 | 系统响应 |
|------|-----------|---------|
| 1 | 用户点击 `保存报价` | 系统执行必填项、数值边界、业务状态与权限校验 |
| 2 | 当前为新建报价首次保存 | 系统生成报价记录、报价编号、历史报价版本，并标记为 `待提交审核` |
| 3 | 当前为 `待提交审核` 或 `审核不通过` 的已有报价 | 系统覆盖当前报价记录，不新增历史报价记录、不递增版本号 |
| 4 | 用户从历史报价点击 `查看` | 系统进入报价详情页 |
| 5 | 报价状态为 `待提交审核`，用户点击 `申请报价审核` | 系统发起审核申请，将状态更新为 `待审核` |
| 6 | 后台审核不通过后，用户修改并保存 | 系统将报价重新变更为 `待提交审核` |

### 异常流

**EX-1: 待审核状态下继续修改**
- 触发条件：报价状态为 `待审核`，普通用户尝试编辑保存。
- 系统行为：拒绝修改，并提示需等待管理员审核。
- 恢复路径：终止编辑。

**EX-2: 审核通过状态下直接修改原记录**
- 触发条件：报价状态为 `审核通过`，普通用户尝试直接修改原报价。
- 系统行为：拒绝直接修改，提示如需变更应发起追加报价。
- 恢复路径：进入追加报价流程。

**EX-3: 提交审核失败**
- 触发条件：接口业务失败、网络异常或系统异常。
- 系统行为：当前报价状态保持原状态，不进入 `待审核`，并提示提交审核失败。
- 恢复路径：用户重试提交。

**EX-4: 当前报价已有待审核变更**
- 触发条件：同一报价已有待审核中的变更流程，用户继续提交新的追加或变更。
- 系统行为：提示 `当前报价已有待审核中的变更，请等待审核完成后再继续操作`。
- 恢复路径：等待审核完成。

### 业务规则

| 规则编号 | 描述 |
|---------|------|
| BR-001 | 报价状态包括 `待提交审核 / 待审核 / 审核通过 / 审核不通过`。 |
| BR-002 | `待提交审核` 允许修改并提交审核。 |
| BR-003 | `待审核` 普通用户不可继续修改。 |
| BR-004 | `审核通过` 允许查看和导出，普通用户如需变更应通过追加报价。 |
| BR-005 | `审核不通过` 允许修改；修改并保存后重新变更为 `待提交审核`。 |
| BR-006 | 同一条报价任一时刻仅允许存在 1 个进行中的待审核变更流程。 |
| BR-007 | 只有服务端明确返回成功，前端才可视为保存、提交审核或状态变更成功。 |

### 补充说明

报价编辑保存失败时，系统不得错误变更报价状态、写入操作记录或展示成功结果。

---

## 功能用例 UC-003-007

**用例编号**：UC-003-007

**用例名称**：前台查看报价详情与报价历程

**关联用户故事**：US-待补充（来源：PRD-003A / FE-004）

**参与者（Actor）**：普通用户

### 前置条件

1. 用户对当前项目拥有查看权限。
2. 项目下已存在至少一条报价记录。

### 后置条件（成功时）

1. 用户查看当前报价的报价详情、报价历程、审核记录、追加报价明细与打折明细。
2. 用户可从报价详情进入报价单资料或导出页面。

### 基础流（正常路径）

| 步骤 | 参与者操作 | 系统响应 |
|------|-----------|---------|
| 1 | 用户在历史报价列表点击 `查看` | 系统进入当前报价详情页 |
| 2 | 用户查看左侧 `报价详情` | 系统展示报价编号、项目编号、项目名称、客户名称、项目负责人、项目状态、报价状态、创建人、时间、模块金额、税项、分成结果、变更结果区 |
| 3 | 用户查看追加报价明细 | 系统逐条展示追加时间、追加人、追加方式、追加比例、追加金额、追加备注、追加模块和金额变化结果 |
| 4 | 用户查看打折明细 | 系统逐条展示打折时间、打折人、打折方式、打折比例、打折金额、打折备注、打折模块和金额变化结果 |
| 5 | 用户查看右侧 `报价历程` | 系统以自然语言时间线展示创建、修改、提交审核、审核、追加报价、打折、导出等事件 |
| 6 | 用户点击 `报价单资料` 或 `导出` | 系统进入当前报价对应页面 |

### 异常流

**EX-1: 无权限查看报价**
- 触发条件：用户已失去项目权限后访问报价详情。
- 系统行为：拒绝访问。
- 恢复路径：返回项目列表。

**EX-2: 报价详情打开失败**
- 触发条件：接口业务失败、网络异常或系统异常。
- 系统行为：提示页面加载失败，不展示旧数据冒充成功结果。
- 恢复路径：用户重试。

### 业务规则

| 规则编号 | 描述 |
|---------|------|
| BR-001 | 报价详情页桌面端采用左侧 `报价详情`、右侧 `报价历程` 的双栏布局，宽度建议约 `7:3`。 |
| BR-002 | 项目状态与报价状态必须分开展示。 |
| BR-003 | `追加报价明细` 与 `打折明细` 作为业务结果统一展示在左侧报价详情中。 |
| BR-004 | 追加报价与打折的发生过程统一展示在右侧报价历程中。 |
| BR-005 | 审核通过与审核不通过事件需同时记录在报价历程与审核记录中。 |
| BR-006 | 报价历程仅展示高层业务动作摘要，不展示详细导出选项、追加字段或打折字段。 |
| BR-007 | 在线预览不进入报价历程。 |

### 补充说明

报价生命周期内的全部操作记录均挂在当前报价下长期保留，不因后续参数、税项或分成比例配置调整而丢失。

---

## 功能用例 UC-003-008

**用例编号**：UC-003-008

**用例名称**：前台维护报价单资料并导出报价

**关联用户故事**：US-待补充（来源：PRD-003A / FE-005、FE-006）

**参与者（Actor）**：普通用户

### 前置条件

1. 用户对当前报价拥有查看权限。
2. 当前报价已保存为报价记录。

### 后置条件（成功时）

1. 报价单资料保存为当前报价自己的资料快照。
2. 用户按配置生成在线预览或导出 PDF / Excel。
3. 导出成功后写入报价历程摘要与操作日志。

### 基础流（正常路径）

| 步骤 | 参与者操作 | 系统响应 |
|------|-----------|---------|
| 1 | 用户在报价详情点击 `报价单资料` | 系统进入当前报价单资料页面 |
| 2 | 用户查看字段 | 系统展示报价编号、报价日期、有效期限、主合同编号、项目名称、来源公司、客户名称、报价单位、金额口径、项目类型、付款币种、周期、交付形式、部署方式、节点、前提说明 |
| 3 | 用户编辑可编辑字段并保存 | 系统保存到当前报价自己的报价单资料快照 |
| 4 | 用户点击 `导出` | 系统进入当前报价的独立导出页面 |
| 5 | 用户配置导出语言、版本、是否包含分成比例、格式 | 系统实时刷新排版预览 |
| 6 | 用户执行在线预览 | 系统按当前导出配置生成在线预览 |
| 7 | 用户点击 `导出` | 系统生成 PDF 或 Excel，导出成功后写入报价历程摘要与操作日志 |

### 异常流

**EX-1: 报价单资料未补齐**
- 触发条件：当前报价自己的报价单资料未补齐，用户尝试导出。
- 系统行为：不允许导出，提示用户先补齐 `报价单资料`。
- 恢复路径：回到基础流第 1 步至第 3 步。

**EX-2: 项目缺少默认报价单信息**
- 触发条件：新建报价时项目尚未维护默认报价单信息。
- 系统行为：不自动带入报价单资料；提示当前项目缺少默认报价单信息；不阻断新建、保存、提交审核或审核通过。
- 恢复路径：用户后续手动补充当前报价单资料。

**EX-3: 导出失败**
- 触发条件：接口业务失败、网络异常或系统异常。
- 系统行为：不得展示导出成功；不写入报价历程；当前导出页不关闭，当前导出配置保留；可写入失败操作日志。
- 恢复路径：用户重试导出。

**EX-4: 关闭在线预览返回导出页**
- 触发条件：用户关闭在线预览。
- 系统行为：不保留当前导出配置，恢复默认导出值。
- 恢复路径：用户重新配置导出选项。

### 业务规则

| 规则编号 | 描述 |
|---------|------|
| BR-001 | 新建报价时，系统复制项目默认报价单信息生成当前报价单资料快照。 |
| BR-002 | 项目默认报价单信息后续变化不反向覆盖已生成报价单资料快照。 |
| BR-003 | 报价税项不由项目带入，统一按后台当前生效税项配置生成税项快照。 |
| BR-004 | 后台税项配置后续变化不反向覆盖已保存报价税项快照。 |
| BR-005 | 报价编号、报价日期、项目名称、报价单位为只读字段。 |
| BR-006 | 导出默认值为：简洁版、跟随当前系统语言、不包含分成比例、PDF。 |
| BR-007 | 导出语言支持中文、日文、英文；导出格式支持 PDF / Excel。 |
| BR-008 | 仅当导出成功时，才在报价历程中新增导出摘要记录。 |

### 补充说明

在线预览如需审计，作为 `在线预览` 类型写入操作日志，但不进入报价历程，也不算导出成功记录。

---

## 功能用例 UC-003-009

**用例编号**：UC-003-009

**用例名称**：前台发起追加报价

**关联用户故事**：US-待补充（来源：PRD-003A / FE-004、PRD-003B / BE-003）

**参与者（Actor）**：普通用户

### 前置条件

1. 用户对当前项目和报价拥有权限。
2. 当前报价允许发起追加报价。
3. 当前报价不存在待审核中的变更流程。

### 后置条件（成功时）

1. 当前报价上新增一条追加记录。
2. 当前报价状态变更为 `待审核`。
3. 追加记录展示在报价详情与报价历程中。

### 基础流（正常路径）

| 步骤 | 参与者操作 | 系统响应 |
|------|-----------|---------|
| 1 | 用户在报价详情点击 `追加报价` | 系统打开追加报价弹窗 |
| 2 | 用户查看可追加模块 | 系统展示楼宇、专有部、色彩切换、共用部、办公室、动画、平面家具摆放、系统收费各大项总价 |
| 3 | 用户勾选需要追加的模块 | 系统展示追加备注、追加方式、追加比例或追加金额 |
| 4 | 用户选择 `按比例追加` | 系统允许输入 `0-200` 的整数比例，并自动生成只读追加金额 |
| 5 | 或用户选择 `按金额追加` | 系统允许输入整数日元追加金额 |
| 6 | 用户点击 `确认追加` | 系统在当前报价记录中新增追加记录，并将当前报价状态标记为 `待审核` |
| 7 | 系统完成追加 | 追加记录展示在当前报价详情与报价历程中，并视为同时发起审核申请 |

### 异常流

**EX-1: 未勾选任何追加模块**
- 触发条件：用户未勾选任何模块即提交。
- 系统行为：阻止提交，并提示至少选择一个追加项。
- 恢复路径：回到基础流第 3 步。

**EX-2: 已存在待审核变更**
- 触发条件：同一报价已有待审核中的追加或变更流程。
- 系统行为：拦截新的追加请求，并提示 `当前报价已有待审核中的变更，请等待审核完成后再继续操作`。
- 恢复路径：等待审核完成。

**EX-3: 追加输入非法**
- 触发条件：追加比例不是 `0-200` 的整数，或追加金额不是整数日元。
- 系统行为：阻止提交，并提示输入规则。
- 恢复路径：回到基础流第 4 步或第 5 步。

**EX-4: 追加提交失败**
- 触发条件：接口业务失败、网络异常或系统异常。
- 系统行为：不得写入追加记录；当前报价状态保持原状态；当前填写内容保留。
- 恢复路径：用户重试。

### 业务规则

| 规则编号 | 描述 |
|---------|------|
| BR-001 | 普通用户追加报价在当前报价基础上执行，不生成新的历史报价记录。 |
| BR-002 | 普通用户点击 `确认追加` 后，即视为同时发起该次追加的审核申请，不再提供额外提交审核步骤。 |
| BR-003 | 普通用户追加记录需管理员审核通过后方可生效。 |
| BR-004 | 追加报价次数本身不设上限，但必须在上一轮待审核流程处理完成后才允许下一次追加。 |
| BR-005 | 切换追加方式时，另一种方式下已填写的值需清空。 |
| BR-006 | 保存追加记录时，系统记录追加方式、追加比例（如有）、最终追加金额、追加备注。 |

### 补充说明

管理员或超级管理员也可在后台发起追加报价；后台追加直接生效，详见 UC-003-012。

---

## 功能用例 UC-003-010

**用例编号**：UC-003-010

**用例名称**：后台登录并管理全部项目

**关联用户故事**：US-待补充（来源：PRD-003B / BE-001、BE-002）

**参与者（Actor）**：管理员、超级管理员

### 前置条件

1. 管理员或超级管理员账号已创建并启用。
2. 用户访问后端管理平台。

### 后置条件（成功时）

1. 用户进入后端管理平台。
2. 用户可查看并维护其后台权限范围内的全部项目。
3. 项目基础信息、项目状态、可见人员、默认报价单信息、项目级分成比例保存成功。

### 基础流（正常路径）

| 步骤 | 参与者操作 | 系统响应 |
|------|-----------|---------|
| 1 | 管理员或超级管理员登录后台 | 系统校验角色并进入后台首页 |
| 2 | 用户进入项目管理页 | 系统展示仪表盘、筛选区和一级项目列表 |
| 3 | 用户按项目名称、项目负责人、项目状态、报价状态或创建时间筛选 | 系统按条件刷新列表 |
| 4 | 用户新建或编辑项目 | 系统展示项目基础信息、项目状态、可见人员、默认报价单信息、项目级分成比例 |
| 5 | 用户保存项目 | 系统校验并保存项目配置 |
| 6 | 用户调整可见人员名单 | 系统保存后立即使新增用户获得权限、移除用户失去权限 |
| 7 | 用户展开项目 | 系统展示该项目下二级历史报价列表 |

### 异常流

**EX-1: 普通用户访问后台**
- 触发条件：普通用户账号访问后台。
- 系统行为：拒绝访问后台。
- 恢复路径：终止后台访问。

**EX-2: 项目保存失败**
- 触发条件：接口业务失败、网络异常或系统异常。
- 系统行为：不展示保存成功，不关闭编辑界面；已填写内容或勾选结果保留。
- 恢复路径：用户修正或重试。

**EX-3: 删除存在历史报价的项目**
- 触发条件：项目下已存在历史报价记录，管理员尝试删除项目。
- 系统行为：允许执行逻辑删除；该项目及其下历史报价记录不再出现在前后台业务列表中，但操作日志、必要审计信息与关键留痕继续保留。
- 恢复路径：项目删除完成后返回项目列表。

### 业务规则

| 规则编号 | 描述 |
|---------|------|
| BR-001 | 后台仅对管理员和超级管理员开放。 |
| BR-002 | 管理员和超级管理员的后台项目管理权限覆盖全部项目，不受创建人、负责人、可见人员限制。 |
| BR-003 | 项目编号格式为 `P-YYYYMMDD-XXXX`，全局唯一，创建后不可编辑，删除后不复用。 |
| BR-004 | 项目状态仅管理员和超级管理员可维护。 |
| BR-005 | 后台项目列表仪表盘至少展示项目总数、报价总数、待提交审核报价数、待审核报价数。 |
| BR-006 | V1.2 不提供批量操作，项目与报价均按单条记录管理。 |

### 补充说明

管理员和超级管理员暂不参与前台首轮报价录入，只在后台执行项目管理、审核、追加报价、打折、配置与审计。

---

## 功能用例 UC-003-011

**用例编号**：UC-003-011

**用例名称**：后台审核报价

**关联用户故事**：US-待补充（来源：PRD-003B / BE-003）

**参与者（Actor）**：管理员、超级管理员

### 前置条件

1. 用户已登录后台管理平台。
2. 项目下存在 `待审核` 报价或待审核追加变更。

### 后置条件（成功时）

1. 报价状态更新为 `审核通过` 或 `审核不通过`。
2. 审核事件写入报价历程、审核记录和操作日志。

### 基础流（正常路径）

| 步骤 | 参与者操作 | 系统响应 |
|------|-----------|---------|
| 1 | 用户进入后台项目管理并展开项目 | 系统展示二级历史报价列表 |
| 2 | 用户点击 `审核` 或进入报价详情页底部审核按钮 | 系统打开审核弹窗 |
| 3 | 用户选择 `审核通过` 或 `审核不通过` 并填写审核备注 | 系统接收审核结果 |
| 4 | 用户提交审核 | 系统更新报价状态，写入审核记录与报价历程 |
| 5 | 用户查看报价详情 | 系统展示审核时间、审核人、报价版本号、价格、审核状态、审核备注 |

### 异常流

**EX-1: 报价状态不可审核**
- 触发条件：报价不处于 `待审核` 状态。
- 系统行为：拒绝审核，并提示当前状态不可审核。
- 恢复路径：终止审核。

**EX-2: 未选择审核结论**
- 触发条件：用户未选择通过或不通过即提交。
- 系统行为：阻止提交，并提示必须选择审核结论。
- 恢复路径：回到基础流第 3 步。

**EX-3: 审核提交失败**
- 触发条件：接口业务失败、网络异常或系统异常。
- 系统行为：当前报价状态保持原状态，不写入新的审核结果记录，并提示审核失败可重试。
- 恢复路径：用户重试。

### 业务规则

| 规则编号 | 描述 |
|---------|------|
| BR-001 | 待审核状态下，管理员与超级管理员仅执行审核结论，不直接修改报价内容。 |
| BR-002 | 审核通过与审核不通过事件需同时记录到报价历程与审核记录。 |
| BR-003 | 若普通用户发起的追加报价进入审核流，审核记录仅记录审核动作本身，可关联该次追加，不重复承载追加明细。 |
| BR-004 | 审核类动作统一进入操作日志，不提供单独的审核日志页面。 |

### 补充说明

后台报价详情页主要承载审核、追溯与导出辅助查看，不承担首轮报价录入。

---

## 功能用例 UC-003-012

**用例编号**：UC-003-012

**用例名称**：后台追加报价、打折与删除报价

**关联用户故事**：US-待补充（来源：PRD-003B / BE-003）

**参与者（Actor）**：管理员、超级管理员

### 前置条件

1. 用户已登录后台管理平台。
2. 项目下存在历史报价记录。
3. 当前报价不存在待审核中的变更流程。

### 后置条件（成功时）

1. 后台追加报价在当前报价上新增追加记录并直接生效。
2. 后台打折在当前报价上新增打折记录并直接生效。
3. 删除报价成功后，该报价记录从列表中移除。

### 基础流（正常路径）

| 步骤 | 参与者操作 | 系统响应 |
|------|-----------|---------|
| 1 | 用户在二级历史报价列表点击 `追加报价` | 系统展示各大项总价与追加弹窗 |
| 2 | 用户选择追加模块与追加方式 | 系统支持按比例追加或按金额追加 |
| 3 | 用户确认追加 | 系统在当前报价记录中新增追加记录，直接生效，当前报价状态保持 `审核通过` |
| 4 | 用户点击 `打折` | 系统展示各大项总价与打折弹窗 |
| 5 | 用户选择打折模块与打折方式 | 系统支持按比例打折或按金额打折 |
| 6 | 用户确认打折 | 系统在当前报价记录中新增打折记录，直接生效，当前报价状态保持 `审核通过` |
| 7 | 用户点击 `删除` | 系统弹出确认对话框 |
| 8 | 用户确认删除 | 系统删除该报价记录 |

### 异常流

**EX-1: 当前报价存在待审核变更**
- 触发条件：当前报价已有待审核中的变更流程，用户发起后台追加或打折。
- 系统行为：不允许发起新的追加或打折。
- 恢复路径：等待审核处理完成。

**EX-2: 打折金额超过可打折金额**
- 触发条件：打折金额大于当前可打折金额，或打折后最终报价小于 0。
- 系统行为：阻止提交，并提示打折金额不合法。
- 恢复路径：用户调整打折金额。

**EX-3: 比例或金额非法**
- 触发条件：追加比例不是 `0-200` 整数，打折比例不是 `0-100` 整数，金额不是整数日元。
- 系统行为：阻止提交，并提示输入规则。
- 恢复路径：用户修正输入。

**EX-4: 删除报价失败**
- 触发条件：接口业务失败、网络异常或系统异常。
- 系统行为：列表数据保持不变，不展示删除成功，并提示删除失败可重试。
- 恢复路径：用户重试或根据返回原因处理。

### 业务规则

| 规则编号 | 描述 |
|---------|------|
| BR-001 | 后台追加报价与打折均在当前报价基础上执行，不生成新的历史报价记录。 |
| BR-002 | 管理员或超级管理员追加报价直接生效，无需再次审核。 |
| BR-003 | 打折仅对管理员和超级管理员开放，普通报价人员不显示入口。 |
| BR-004 | 打折记录生成后直接生效，无需审核，且不进入审核记录。 |
| BR-005 | 切换追加或打折方式时，另一种方式下已填写的值需清空。 |
| BR-006 | 管理员或超级管理员无论报价处于任意状态，均可删除该报价记录。 |
| BR-007 | 删除报价前必须弹出确认对话框。 |

### 补充说明

追加报价与打折明细作为业务结果展示在报价详情中，其发生过程展示在报价历程中。

---

## 功能用例 UC-003-013

**用例编号**：UC-003-013

**用例名称**：后台维护账号、角色与权限开关

**关联用户故事**：US-待补充（来源：PRD-003B / BE-004）

**参与者（Actor）**：管理员、超级管理员

### 前置条件

1. 用户已登录后台管理平台。
2. 用户拥有用户管理权限。

### 后置条件（成功时）

1. 账号创建、编辑、启用或禁用成功。
2. 管理员价格权限与工时权限按开关配置控制后台报价配置访问范围。

### 基础流（正常路径）

| 步骤 | 参与者操作 | 系统响应 |
|------|-----------|---------|
| 1 | 用户进入用户管理页 | 系统展示账号列表 |
| 2 | 超级管理员点击新建用户 | 系统允许选择管理员或报价人员 |
| 3 | 管理员点击新建用户 | 系统仅允许创建报价人员 |
| 4 | 用户填写账号、密码、姓名、角色、部门、账号状态 | 系统接收账号信息 |
| 5 | 目标角色为管理员 | 系统展示价格权限与工时权限开关 |
| 6 | 目标角色为报价人员 | 系统将价格权限与工时权限默认关闭且不可开启 |
| 7 | 用户保存账号 | 系统保存账号并刷新列表 |
| 8 | 用户切换账号状态 | 系统将账号状态更新为开启或停用 |

### 异常流

**EX-1: 管理员创建管理员账号**
- 触发条件：管理员尝试创建管理员角色。
- 系统行为：不提供管理员角色选择，或保存时返回无权限。
- 恢复路径：管理员只能创建报价人员。

**EX-2: 权限关闭后直接访问配置页面**
- 触发条件：管理员价格权限或工时权限关闭，但直接访问相关页面或接口。
- 系统行为：不展示对应入口，并对直接访问返回无权限。
- 恢复路径：联系超级管理员开启权限。

**EX-3: 必填信息缺失**
- 触发条件：账号、密码、姓名、角色等必填项缺失。
- 系统行为：阻止保存，并提示缺失项。
- 恢复路径：回到基础流第 4 步。

### 业务规则

| 规则编号 | 描述 |
|---------|------|
| BR-001 | 超级管理员可查看全量账号，并管理管理员账号和报价人员账号。 |
| BR-002 | 管理员可管理自己创建的报价人员账号。 |
| BR-003 | 价格权限控制报价配置中价格规则、楼宇示例说明、税项配置、分成比例相关页面和操作。 |
| BR-004 | 工时权限控制报价配置中各模块工时配置页面和操作。 |
| BR-005 | 价格权限与工时权限不影响项目管理、报价审核与变更管理、用户管理、系统管理。 |
| BR-006 | `南京报价人员` 与 `日本报价人员` 仅为业务身份标签，不属于系统角色。 |

### 补充说明

系统角色仍仅区分报价人员、管理员、超级管理员。

---

## 功能用例 UC-003-014

**用例编号**：UC-003-014

**用例名称**：后台维护报价配置、税项与分成比例

**关联用户故事**：US-待补充（来源：PRD-003B / BE-005）

**参与者（Actor）**：管理员、超级管理员

### 前置条件

1. 用户已登录后台管理平台。
2. 超级管理员拥有全部配置权限；管理员需具备价格权限或工时权限。

### 后置条件（成功时）

1. 报价配置保存成功并生成新的配置版本记录。
2. 新配置仅应用于后续新建报价。
3. 已保存历史报价不自动回算或覆盖。

### 基础流（正常路径）

| 步骤 | 参与者操作 | 系统响应 |
|------|-----------|---------|
| 1 | 用户进入 `报价配置` | 系统展示楼宇、专有部、色彩切换、共用部、办公室、动画、平面家具摆放、系统收费、税项配置、分成比例二级菜单 |
| 2 | 用户进入楼宇页面 | 系统展示价格配置、工时配置、示例说明页签 |
| 3 | 用户进入其他模块页面 | 系统展示价格配置、工时配置页签 |
| 4 | 用户新增、编辑、删除、启停用配置 | 系统保存配置并生成版本记录 |
| 5 | 用户维护税项配置 | 系统保存税项名称、内部键、排序、状态、说明文案、税率 |
| 6 | 用户维护分成比例 | 系统按八大模块维护日本与南京比例 |
| 7 | 普通用户后续新建报价 | 系统按最新有效配置生成参数、税项、分成比例等报价快照 |

### 异常流

**EX-1: 分成比例不等于 100%**
- 触发条件：某模块日本比例与南京比例之和不等于 100%。
- 系统行为：阻止保存，并提示比例合计必须为 100%。
- 恢复路径：回到基础流第 6 步。

**EX-2: 配置保存失败**
- 触发条件：接口业务失败、网络异常或系统异常。
- 系统行为：不得生成新的配置版本，不切换当前生效配置，并提示保存失败。
- 恢复路径：用户修正或重试。

**EX-3: 无配置权限**
- 触发条件：管理员未开启价格权限或工时权限，却访问对应配置。
- 系统行为：不展示入口或返回无权限。
- 恢复路径：联系超级管理员调整权限。

### 业务规则

| 规则编号 | 描述 |
|---------|------|
| BR-001 | 后台一级菜单建议命名为 `报价配置`，菜单层级控制为两级，不使用三级菜单。 |
| BR-002 | V1.2 固定八大模块及配置类型，不支持后台动态新增第 9 个模块，也不支持自定义新配置类型。 |
| BR-003 | 税项配置为全局配置，统一作用于全部项目的新建报价，不区分项目单独配置税项。 |
| BR-004 | 默认税项至少包括日本增值税（10%）与日本消费税（6%）。 |
| BR-005 | 系统默认分成比例适用于所有新建项目；项目级比例优先于系统默认比例。 |
| BR-006 | 历史版本仅用于查看和追溯，不允许直接覆盖修改。 |
| BR-007 | 价格清单文档、PRICE 文档及 PRD 中价格示例仅作为初始整理来源；系统运行时以后台当前生效配置为准。 |
| BR-008 | V1.2 不支持测试环境与预生产环境之间的配置自动同步，采用人工迁移与清单核对。 |

### 补充说明

报价配置历史记录支持按配置分类、操作人、时间范围查询。

---

## 功能用例 UC-003-015

**用例编号**：UC-003-015

**用例名称**：前后台修改密码与会话控制

**关联用户故事**：US-待补充（来源：PRD-003 总览、PRD-003A / FE-001、FE-007、PRD-003B / BE-001、BE-006）

**参与者（Actor）**：普通用户、管理员、超级管理员

### 前置条件

1. 用户已登录其可访问的平台，或正在首次登录强制改密流程中。
2. 用户账号处于启用状态。

### 后置条件（成功时）

1. 用户完成修改密码，新密码立即生效。
2. 会话状态按有效期、无操作超时、主动退出、密码重置等规则处理。

### 基础流（正常路径）

| 步骤 | 参与者操作 | 系统响应 |
|------|-----------|---------|
| 1 | 用户进入 `系统管理 - 修改密码` | 系统展示当前密码、新密码、确认新密码字段 |
| 2 | 用户填写并提交 | 系统校验当前密码、新密码规则、确认密码一致性 |
| 3 | 校验通过 | 系统保存新密码并立即生效 |
| 4 | 用户保持登录但连续无操作接近 2 小时 | 系统在超时前 5 分钟弹出提醒 |
| 5 | 用户继续操作 | 系统延长当前会话 |
| 6 | 用户主动退出登录 | 系统仅清除当前端会话并跳转登录页 |
| 7 | 管理员重置某账号密码 | 系统使该账号所有已登录端会话立即失效 |

### 异常流

**EX-1: 修改密码校验失败**
- 触发条件：当前密码错误、新密码不符合规则、两次输入不一致或新旧密码相同。
- 系统行为：提示错误，不保存新密码。
- 恢复路径：回到基础流第 1 步。

**EX-2: 会话超时**
- 触发条件：用户连续无操作满 2 小时。
- 系统行为：清除当前会话并跳转登录页。
- 恢复路径：用户重新登录。

**EX-3: 访问历史页面或浏览器回退**
- 触发条件：用户退出登录或会话失效后访问历史页面、书签页或通过浏览器回退访问受保护页面。
- 系统行为：统一跳转登录页，不展示原页面数据。
- 恢复路径：用户重新登录。

### 业务规则

| 规则编号 | 描述 |
|---------|------|
| BR-001 | 前后台登录会话有效期均为 7 天。 |
| BR-002 | 用户连续无操作 2 小时后会话超时，超时前 5 分钟弹出提醒。 |
| BR-003 | 系统允许同一账号在多个设备或浏览器端同时登录。 |
| BR-004 | 用户主动退出登录时，仅清除当前端会话，不影响其他已登录端。 |
| BR-005 | 管理员重置账号密码后，该账号所有已登录端会话立即失效。 |
| BR-006 | 被重置密码账号使用初始密码重新登录后，系统再次强制进入修改密码流程。 |

### 补充说明

前后台都提供修改密码能力；前台系统管理仅包含修改密码，后台系统管理包含修改密码与操作日志。

---

## 功能用例 UC-003-016

**用例编号**：UC-003-016

**用例名称**：后台查看操作日志

**关联用户故事**：US-待补充（来源：PRD-003B / BE-006）

**参与者（Actor）**：管理员、超级管理员

### 前置条件

1. 管理员或超级管理员已登录后台管理平台。
2. 用户进入 `系统管理 - 操作日志`。

### 后置条件（成功时）

1. 用户可查看系统级审计日志。
2. 用户可按操作类型、操作人、操作结果、时间范围、项目名称、报价编号筛选日志。
3. 用户可打开日志详情查看基础字段与专属明细字段。

### 基础流（正常路径）

| 步骤 | 参与者操作 | 系统响应 |
|------|-----------|---------|
| 1 | 用户进入操作日志页 | 系统按操作时间倒序展示日志列表，默认每页 20 条 |
| 2 | 用户设置筛选条件 | 系统按操作类型、操作人、操作结果、时间范围、项目名称、报价编号组合筛选 |
| 3 | 用户点击 `重置 / 清空` | 系统恢复默认筛选、排序、第 1 页和每页 20 条 |
| 4 | 用户点击单条日志 | 系统打开日志详情抽屉或弹窗 |
| 5 | 用户查看日志详情 | 系统展示操作时间、操作人、操作类型、操作结果、IP 地址、项目编号、报价编号、完整备注及专属明细 |
| 6 | 用户关闭详情 | 系统返回原日志列表，并保留筛选、搜索、排序、页码和每页条数 |

### 异常流

**EX-1: 日志列表无数据**
- 触发条件：系统暂无任何操作日志。
- 系统行为：展示空状态文案 `暂无操作日志`。
- 恢复路径：等待产生操作日志。

**EX-2: 筛选无匹配结果**
- 触发条件：筛选条件下无日志。
- 系统行为：展示 `暂无符合条件的操作日志`，并提供 `清空筛选` 入口。
- 恢复路径：用户清空或调整筛选。

**EX-3: 日志加载失败**
- 触发条件：接口业务失败、网络异常或系统异常。
- 系统行为：提示加载失败，不展示错误数据。
- 恢复路径：用户重试。

### 业务规则

| 规则编号 | 描述 |
|---------|------|
| BR-001 | 后台系统管理仅保留一个 `操作日志` 子菜单，不单独拆分审核日志。 |
| BR-002 | 操作结果取值为 `成功 / 失败 / 已拒绝`。 |
| BR-003 | 对于关键操作，只要请求已到达服务端，无论结果为成功、失败或已拒绝，均需写入操作日志。 |
| BR-004 | 纯前端本地校验失败且请求未发出时，不写入操作日志。 |
| BR-005 | 审核类动作通过操作类型筛选查看，不提供单独审核日志页面。 |
| BR-006 | 导出报价单动作必须写入操作日志；在线预览如需审计，也写入操作日志。 |
| BR-007 | V1.2 操作日志页面不支持导出。 |
| BR-008 | 日志编号展示规则：项目级操作仅展示项目编号；报价级操作同时展示项目编号与报价编号；系统级操作不展示项目编号与报价编号。 |

### 补充说明

导出报价单日志详情需记录报价编号、导出类型、导出语言、是否包含分成比例、导出格式、导出方式等专属字段。
