﻿# PRD-003A - 报价管理系统前台

**版本**：V1.2  
**创建日期**：2026-04-30  
**来源**：由 [PRD-003-quotation-management-system-V1.2.md](/Users/summer/Documents/AI/Yitou/quote-estimator/documents/prd/PRD-003-quotation-management-system-V1.2.md) 按前台模块拆分整理

---

### 1. 概述

#### 1.1 文档范围

本文件仅描述前端报价平台需求，面向普通报价人员使用场景，覆盖：

1. 登录
2. 项目列表
3. 报价计算器
4. 报价详情
5. 报价单资料
6. 导出
7. 系统管理

不包含后台管理平台中的项目管理、用户管理、参数配置、工时配置、操作日志等后台维护能力。

#### 1.2 产品目标

前端报价平台用于支持普通用户在被授权项目范围内完成完整报价操作，包括：

1. 查看项目与历史报价
2. 新建项目
3. 新建报价
4. 填写参数并实时计算报价
5. 保存报价并发起审核
6. 查看报价详情与报价历程
7. 维护当前报价单资料
8. 预览、导出与打印报价单

#### 1.3 角色与权限边界

- 前端报价平台仅对普通用户开放。
- 管理员与超级管理员不允许登录前端报价平台。
- 普通用户通过用户名和密码登录前端报价平台。
- 普通用户账号由管理员或超级管理员在后台创建。
- 普通用户可创建项目；项目创建后，创建人默认立即获得该项目的可见权限与报价权限。
- 项目创建人默认拥有该项目及其全部报价的查看与编辑权限。
- 被加入项目可见人员名单的普通用户，拥有该项目及其全部报价的查看与编辑权限。
- 项目创建人和项目可见人员均可编辑项目基础信息；基础信息包括：`项目名称`、`客户名称`、`项目负责人`、`备注`。
- 普通用户前端不可编辑 `可见人员` 与 `项目级分成比例`。
- 普通报价人员前端不展示 `项目级分成比例` 相关入口。

#### 1.4 国际化规则

- 前端报价平台支持 `中文`、`日文`、`英文` 三种界面语言。
- 用户可在界面中手动切换当前显示语言。
- 首次进入系统时，默认语言根据浏览器语言设置自动匹配。
- 用户手动切换语言后，系统将该语言偏好保存到当前前端账号。
- 用户再次登录前端时，优先使用当前前端账号上次保存的语言偏好；仅当该账号从未手动切换过语言时，才按浏览器语言自动匹配。
- 系统页面语言统一跟随用户当前选择的语言切换。
- 导出页面预览语言仅跟随导出语言配置实时切换，与当前打开这套报价系统界面的语言无关。

#### 1.5 文档边界

- 本文档只描述普通用户在前端平台中的可见页面、可用入口与可执行动作。
- `可见人员`、`项目级分成比例`、后台审核执行、打折执行、参数配置、税项配置、工时配置、操作日志等后台能力不在本文档中展开。
- 涉及后台动作时，以 [PRD-003B-quotation-backoffice-V1.2.md](/Users/summer/Documents/AI/Yitou/quote-estimator/documents/prd/PRD-003B-quotation-backoffice-V1.2.md) 为准。

#### 1.6 版本记录

| 版本号 | 前台更新内容 |
|--------|--------------|
| V1.0 | 首版，包含：<br>1. 用户登录<br>2. 项目列表<br>3. 报价计算器 |
| V1.1 | 包含：<br>1. 大楼交付结构与计价调整（`CITY VISITA` 调整为 `BUILDING VISTA 3D` 选配项，并同步调整基础价格与超出单价）<br>2. 色彩切换模块规则调整（补充 `2D / 3D` 配置结构、计价规则与折扣规则）<br>3. 色彩切换 `2D` 出图类型顺序调整（`CCG` 优先，`CQCG` 次之）<br>4. 系统收费模块规则调整（`homestation` 更名为 `HOMESTAGING`，并调整费用规则）<br>5. 补充 `追加报价` 能力（普通用户追加后需管理员审核，管理员追加可直接生效）<br>6. 新增 `平面家具摆放` 独立模块<br>7. 楼宇模块补充参数 `示例说明` 交互 |
| V1.2 | 版本目标：交付日方试用。包含：<br>1. 完整交付前台主流程：`项目列表 / 新建报价 / 报价详情 / 报价单资料 / 导出`<br>2. 报价详情结构升级为桌面端双栏布局：左侧 `报价详情`，右侧 `报价历程`，并将 `报价单资料` 调整为独立入口<br>3. 新增 `追加报价` 能力，支持在当前报价下记录追加明细、历程与审核流转<br>4. 新增导出能力，支持 `Excel / 在线预览 / 导出语言`，并将导出预览调整为接近最终稿面的 `见积书` 稿面式预览<br>5. 报价详情中的 `报价明细` 调整为 `序号 / 分类 / 分项 / 主要内容 / 金额` 五列结构，明细下方新增 `金额汇总` 区域，展示 `CG制作项小计 / 系统及云服务项小计 / 其他专项小计 / 契約税務調整費 / 合计 （不含税净额）`<br>6. 完善多语言国际化能力，支持 `中文 / 日文 / 英文`，且导出预览语言独立于系统语言并支持账号级语言偏好保存<br>7. 取消项目级默认报价单信息，报价单资料全部归属当前报价；新建报价仅自动带入 `报价编号 / 报价日期 / 项目名称 / 客户名称` 四个只读字段，其余字段由当前报价独立维护<br>8. 大楼报价参数新增 `占地外`：`红绿灯`、`地铁站`，并补充楼宇最低价保护机制：楼宇模块总价不得低于 `500,000 日元`<br>9. 色彩切换模块规则升级：`3D` 新增 `CCG / CQCG` 选项，`2D` 系统费按模块收取一次，且在已选择 `专有部` 模块时 `2D / 3D` 按 `8 折` 计算<br>10. 系统收费模块规则调整：系统收费改为非必选模块项，模块下展示 `系统使用费`、`外观模型`、`视点式 URL 链接费`、`HOMESTAGING` 四个可选项，按已选项计算小计<br>11. 优化报价页面交互与金额稳定性：解决 `报价配置区域` 与 `价格预览区域` 的滑动冲突，并锁定新建报价会话配置版本，避免编辑中途金额漂移；报价预览顶部主金额文案统一为 `合计 （不含税净额）`，不再显示 `含税总价`<br>12. 统一完善报价追溯能力：`追加报价`、`打折`、`审核`、`导出` 等关键记录均需在当前报价相关页面中可追溯展示 |

#### 1.7 本版范围与非功能口径

- `V1.2` 为试用交付版本。本文档中涉及的前台能力需明确标注是否纳入本版交付范围；未纳入 `V1.2` 的能力，需明确标注为 `本版不做` 或 `后续版本`。
- 前台相关性能指标按以下试用数据规模验收：项目数 `1,000`、报价记录数 `10,000`、账号数 `200`、报价配置项总量 `2,000`、操作日志总量 `100,000`。
- 在上述试用规模下，前台列表页首次加载、常规筛选/搜索结果返回、报价详情页打开等常规页面操作目标为 `3 秒内`；导出页面预览生成目标为 `5 秒内`；Excel 导出完成目标为 `10 秒内`。
- `V1.2` 以前台桌面端为主，不考虑移动端；最小支持分辨率为 `1440 x 900`，推荐设计分辨率为 `1920 x 1080`。
- 前台桌面端支持 `Chrome / Edge / Safari` 最新两个大版本，页面缩放支持范围为 `80% - 125%`。
- 页面最小内容宽度为 `1280px`；当窗口宽度小于最小内容宽度时，允许页面出现横向滚动，优先保证页面结构与信息完整，不强行压缩导致布局错位。

---

### 2. 功能需求矩阵

| 功能ID | 功能名称 | 优先级 | 说明 |
|--------|----------|--------|------|
| FE-001 | 登录 | Must | 账号登录、首次改密、多语言 |
| FE-002 | 项目列表 | Must | 项目查看、新建项目、历史报价列表 |
| FE-003 | 报价计算器 | Must | 参数配置、计算、保存、审核申请 |
| FE-004 | 报价详情 | Must | 左侧报价详情、右侧报价历程、5列报价明细、金额汇总 |
| FE-005 | 报价单资料 | Must | 当前报价单资料快照维护 |
| FE-006 | 导出 | Must | 导出语言、导出格式、见积书稿面式预览、Excel/打印 |
| FE-007 | 系统管理 | Must | 修改密码 |

---

### 3. 功能详细说明

#### FE-001 登录

**目标**：支持普通用户登录前端报价平台，并在首次登录后完成密码修改。

**交互流程**

1. 用户进入前端报价平台登录页。
2. 系统根据浏览器语言设置默认展示对应语言界面。
3. 用户输入账号和密码并提交登录。
4. 系统校验账号、密码和账号状态。
5. 若校验失败，系统提示错误信息并停留在当前登录页。
6. 若校验成功且账号角色为普通用户，则进入前端报价平台。
7. 若校验成功但账号角色为管理员或超级管理员，则系统拒绝进入前端并提示无访问权限。
8. 用户首次使用初始密码登录成功后，系统自动跳转至 `系统管理 - 修改密码` 页面。
9. 用户完成首次密码修改后，进入项目列表页，并仅展示当前角色有权限访问的页面与功能。

**规则**

- 前端报价平台采用用户名 + 密码登录方式。
- 不提供注册功能。
- 用户初始密码由管理员在后台配置。
- 用户首次登录成功后，系统应自动引导其进入修改密码流程；完成首次修改后方可进入项目列表。
- 若后续密码被管理员重置，则再次按首次登录规则处理。
- 登录失败时需给出统一错误提示。
- 前端不提供自助找回密码功能，忘记密码后需联系管理员重置。
- 密码长度限制为 `8-20` 位，需同时包含字母和数字，区分大小写。
- 密码允许使用字母、数字和常见英文特殊字符。
- 密码不允许包含中文或空格。
- 密码前后空格不做自动 trim，直接按非法输入处理。
- 新密码不得与当前密码相同。
- 前端登录会话有效期为 `7 天`。
- 用户连续无操作 `2 小时` 后，会话超时；会话活跃度以账号后续 API 请求为准。
- 会话超时前 `5 分钟`，系统需弹出提醒；若用户继续操作，则延长当前会话。
- 系统允许同一普通用户账号在多个设备或浏览器端同时登录。
- 用户主动退出登录时，仅清除当前端会话并跳转登录页。
- 用户退出登录或会话失效后，再次访问历史页面或通过浏览器回退访问受保护页面时，系统统一跳转登录页。
- 管理员重置普通用户密码后，该普通用户在所有已登录端的会话立即失效。
- 被重置密码的普通用户在各端下一次 API 请求时，系统统一按未登录处理并跳转登录页。
- 被重置密码的普通用户使用重置后的初始密码重新登录成功后，系统再次强制进入修改密码流程。
- 账号不存在或密码错误时，统一提示：`账号不存在或密码错误`。
- 账号被禁用时，提示：`账号已停用，请联系管理员`。
- 管理员或超级管理员账号访问前端时，提示：`当前账号无前台访问权限`。
- 账号或密码为空时，提示：`请输入账号和密码`。
- 系统异常时，提示：`登录失败，请稍后重试`。

#### FE-002 项目列表

##### 2.1 页面目标

项目列表用于展示当前用户有权限查看或操作的项目，并承载新建项目、查看历史报价、新建报价等前台入口。

##### 2.2 一级项目列表

- 项目列表展示字段包括：
  - 项目编号
  - 项目名称
  - 客户名称
  - 项目负责人
  - 项目状态
  - 报价次数
  - 创建时间
  - 操作
- 项目状态展示为：`进行中 / 已完成 / 已取消`。
- 支持按项目名称、客户名称、项目负责人搜索或筛选。
- 支持按创建时间范围筛选。
- 默认按创建时间倒序排列。

##### 2.3 新建项目

- 点击“新建项目”后，系统以弹窗形式展示项目创建表单。
- 项目创建字段包括：
  - 项目名称：必填
  - 客户名称：选填
  - 项目负责人：默认取项目创建人，后续允许修改
  - 备注：选填
- 普通用户可以创建项目。
- 普通用户创建项目时，默认至少仅创建人本人可见；管理员后续可补充配置其他可见人员。
- 历史项目已存在的 `HV-xxxx` 编号继续沿用，不做迁移。
- 项目创建成功时，系统自动生成全局唯一的项目编号，格式为 `P-YYYYMMDD-XXXX`，且仅对后续新建项目生效。
- 项目创建成功时，项目状态默认设为 `进行中`。
- 项目创建成功后，创建人默认立即获得该项目的可见权限与报价权限。
- 项目创建时，`项目负责人` 默认取项目创建人，后续允许在项目编辑中修改。
- 一个项目可包含多次报价记录，报价次数用于展示当前项目下已保存的报价记录总数。
- `项目负责人` 仅用于业务展示、搜索和筛选，不参与权限判断。

##### 2.3A 编辑项目

- 对有项目权限的普通用户，项目列表中提供 `编辑项目` 入口。
- 点击 `编辑项目` 后，系统以弹窗或抽屉形式展示项目编辑表单。
- 项目编辑表单仅包含 `项目基础信息`。
- 项目基础信息在任意阶段均允许编辑，不因项目下已存在历史报价、待审核报价、审核通过报价或审核不通过报价而禁用。
- 项目基础信息变更仅影响项目当前展示与后续新建报价初始化，不反向覆盖已保存报价的快照内容。
- 普通用户不可编辑项目状态。

##### 2.4 项目详情与历史报价列表

- 用户可展开查看某项目下的历史报价记录。
- 已删除项目在前台项目列表中默认不展示。
- 历史报价记录展示字段包括：
  - 报价单编号
  - 报价人
  - 报价时间
  - 报价金额
  - 状态（`待提交审核 / 待审核 / 审核通过 / 审核不通过`）
  - 备注
  - 操作（`查看`）
- 前台历史报价列表当前仅对普通用户开放 `查看` 操作，不在列表中展示 `审核`、`打折`、`删除` 等后台操作入口。
- 已删除报价在前台历史报价列表中默认不展示。
- 追加报价与打折的模块选择能力保持不变；但每次追加或打折的金额，仅针对“所选模块中的 `CG制作费用`”计算，不作用于该模块中的 `系统及云服务项`、`其他专项`、税项或分成结果本身，也不作用于其他未选择模块。
- 追加报价与打折不生成新的历史报价记录，相关记录应在当前报价详情与报价历程中统一展示。
- 追加报价仅在当前报价记录中新增一条追加记录，并在报价历程中展示。
- 用户在历史报价记录中点击 `查看` 后，应进入当前报价的详情页面。

##### 2.5 前台项目权限

- 项目创建人可查看并编辑自己创建项目的基础信息及该项目下全部报价。
- 被授予项目可见权限的普通报价人员，可查看并编辑该项目的基础信息及该项目下全部报价。
- 项目可见人员权限变更后，对该项目及其全部历史报价立即生效。
- 新增到项目可见人员名单的普通用户，立即获得该项目及其全部历史报价的查看与编辑权限。
- 从项目可见人员名单移除的普通用户，立即失去该项目及其全部历史报价的查看与编辑权限。
- 被移除权限的用户再次刷新页面或继续执行保存、提交审核、追加等操作时，系统应按无权限处理。
- 有项目权限的普通报价人员可在该项目下：
  - 查看项目
  - 查看历史报价记录
  - 新建报价
  - 编辑报价
- 普通用户前端不可编辑：
  - 可见人员
  - 项目级分成比例
- 普通报价人员前端不展示 `项目级分成比例` 入口。

##### 2.6 新建报价

- 凡是有权限查看该项目的用户，均可在该项目下新建报价。
- 点击 `新建报价` 时，进入一份空白报价。
- 若项目状态为 `已完成` 或 `已取消`，则不允许继续新建报价、追加报价或打折，但仍允许查看、导出和打印历史报价。
- 用户发起 `保存报价`、`提交审核`、`追加报价`、`打折` 等关键动作时，后端需在落库前再次校验所属项目的 `project_status`；若项目状态已变更为 `已完成` 或 `已取消`，则接口需拦截并返回不可继续操作提示。
- 当前版本暂不支持复制报价。

#### FE-003 报价计算器

**交互流程**

1. 用户从项目列表点击 `新建报价` 进入空白报价计算器。
2. 系统加载报价计算器页面，并展示左侧配置区和右侧报价预览区。
3. 用户进入报价计算器时，后端返回本次新建编辑会话所使用的 `config_version_id`，系统即锁定该配置版本；在该次会话内，金额预览、首次保存与提交审核均沿用该版本，不受后台中途新保存配置影响。
4. 左侧配置区顶部采用模块页签切换方式，用户可在 `楼宇 / 专有部 / 色彩切换 / 共用部 / 办公室 / 动画 / 平面家具摆放 / 系统收费` 之间快速切换。
5. 每个模块页签后展示当前模块的实例数量或条目数量。
6. 页面中部仅展示当前所选模块的配置内容。
7. 系统根据用户当前选择、输入内容与当前会话锁定的配置版本，实时计算各模块小计和整单报价结果。
8. 右侧报价预览区同步展示当前报价结果、模块小计和关键参数摘要。
9. 用户首次填写报价内容完成后，可点击 `取消` 或 `保存报价`。
10. 点击 `保存报价` 时，系统保存当前报价记录，并将报价状态标记为 `待提交审核`。
11. 点击 `保存报价` 前，后端比对当前会话锁定的 `config_version_id` 与当前系统最新生效的 `config_version_id`；若两者不一致，系统强提示：`报价配置已更新，建议刷新页面后按最新配置重新确认金额。`
12. 新建报价首次保存成功后，系统将该记录归档到所属项目的历史报价记录列表中。
12. 用户在报价详情页点击 `提交审核` 后，系统对该报价发起审核流程，并将报价状态更新为 `待审核`。

##### 3.1 页面结构

- 报价计算器页面分为左右两个区域：
  - 左侧为配置区
  - 右侧为报价预览区
- 左侧顶部采用模块页签切换，不使用单页长表单连续堆叠全部内容。
- 左侧配置区独立滚动。
- 左侧顶部模块页签吸顶固定。
- 右侧报价预览区固定在可视区域内，内容过长时支持独立滚动。
- 左右两侧滚动互不干扰。

##### 3.2 模块清单

左侧配置区提供以下 `8` 个模块：

1. 楼宇
2. 专有部
3. 色彩切换
4. 共用部
5. 办公室
6. 动画
7. 平面家具摆放
8. 系统收费

##### 3.3 楼宇模块

- 楼宇模块层级结构定义如下：
  - 一级模块：`楼宇`
  - 二级页签：
    - `大楼`
    - `项目场地条件`
    - `大楼交付`
- 本模块中：
  - `文本输入框` 用于名称类字段
  - `步进器输入` 用于数量、面积、层数、张数、点数等数值字段
  - `单选` 用于枚举型参数
  - `说明项` 仅用于展示“默认包含内容”，不允许编辑、不单独计价
- 删除大楼实例或其他模块产品实例前，系统需弹出二次确认提示。
- 用户确认删除后，系统立即删除该实例并同步刷新右侧报价预览区。
- `V1.2` 不提供实例删除后的撤销能力。
- 支持多栋楼实例新增、切换、删除。
- `大楼` 页签按大楼实例维度配置，每个实例的字段类型明确如下：
  - `楼宇名称`：文本输入框
  - `层数`：步进器输入，单位 `层`
  - `体型类型`：单选，选项 `一字 / L型`
  - `阳台外立面数`：步进器输入，单位 `面`
  - `错层外立面数`：步进器输入，单位 `面`
  - `退台 / 大露台数量`：步进器输入，单位 `处`
  - `屋顶类型`：单选，选项 `平屋顶 / 露台屋顶`
  - `屋顶特殊构筑物`：三级参数组
    - `立体停机坪`：步进器输入，单位 `处`
    - `设备平台`：步进器输入，单位 `处`
    - `太阳能区`：步进器输入，单位 `处`
  - `外露楼梯`：步进器输入，单位 `处`
  - `连廊`：步进器输入，单位 `处`
- `项目场地条件` 按项目整体配置并按项目整体计价一次，结构明确如下：
  - `标准制作包含`
    - `水泥及铺装地面`：说明项
    - `地面停车位`：说明项
  - `景观`
    - `景观大树`：步进器输入，单位 `颗`
    - `小灌木（包含草坪）`：步进器输入，单位 `㎡`
  - `异形件`
    - `导视柱`：步进器输入，单位 `个`
    - `景观灯柱`：步进器输入，单位 `根`
    - `景观雕塑 / 装置`：步进器输入，单位 `处`
    - `定制大树`：步进器输入，单位 `颗`
    - `定制景观雕塑`：步进器输入，单位 `处`
  - `配套设施`
    - `小管理用房`：步进器输入，单位 `㎡`
    - `机械车位`：步进器输入，单位 `㎡`
    - `自行车位`：步进器输入，单位 `㎡`
    - `停车楼`：步进器输入，单位 `个`
    - `庭院（含庭院围栏）`：步进器输入，单位 `个`
    - `硬质景观`：步进器输入，单位 `项`
    - `门岗 / 大门`：步进器输入，单位 `个`
  - `边界与排水`
    - `围墙 / 围栏`：单选，选项 `无 / 单侧 / 双侧 / 三侧 / 全围合`
    - `沟渠 / 排水沟 > 普通`：步进器输入，单位 `条`
    - `沟渠 / 排水沟 > 复杂`：步进器输入，单位 `条`
  - `占地外`
    - `地铁站`：步进器输入，单位 `个`
    - `红绿灯`：步进器输入，单位 `个`
  - `地面高差`
    - `地面高差（毫米）`：步进器输入，单位 `毫米`
- `项目场地条件` 中，`占地外` 与 `地面高差` 为同级参数。
- `占地外` 下包含 `地铁站`、`红绿灯` 两个按“个”计数的步进器输入项。
- 楼宇模块中的 `大楼实例参数` 与 `项目场地条件参数` 均支持 `示例说明`。
- 若参数为 `数量输入型单个参数`，则在 `参数名称` 后展示一个 hover 说明入口；用户鼠标悬停时，应展示该参数对应的文字示例说明。
- 若参数为 `单选项`，则不在参数名称后单独展示说明入口；用户鼠标悬停到具体选项时，应展示该选项对应的示例说明或示例图片。
- 示例说明内容可为：
  - `文字说明`
  - `示例图片`
  - `文字说明 + 示例图片`
- 前台仅负责按参数或选项展示对应示例说明；具体说明内容与图片素材统一来自后台当前生效配置。

##### 3.4 楼宇交付与最低价保护

- 每栋大楼至少选择 `1` 个大楼交付项。
- 当前交付项支持：
  - `BUILDING VISTA 3D`
  - `BUILDING VISTA Lite`
  - `大楼追加静态图交付`
- `CITY VISITA` 作为 `BUILDING VISTA 3D` 下的选配项展示。
- `大楼交付` 页签按每栋大楼实例分别配置，结构定义如下：
  - 一级交付项：
    - `BUILDING VISTA 3D`
    - `BUILDING VISTA Lite`
    - `大楼追加静态图交付`
  - 二级选配项：
    - `CITY VISITA` 挂在 `BUILDING VISTA 3D` 下
    - `户型展示 / 外景展示（眺望）/ 飞行导航` 挂在 `BUILDING VISTA 3D` 下
    - `3D住户表 / 城市数据展示 / 外景展示（眺望）/ 人视眺望 / 飞行导航` 挂在 `CITY VISITA` 下
- 当前已确认且需要在前台直接体现的楼宇交付价格口径如下：
  - `BUILDING VISTA 3D`：基础价格 `500,000 日元`
  - `CITY VISITA`：基础价格 `600,000 日元`
  - `户型展示`：基础价格 `280,000 日元`，含 `100 户`，超出后 `1,200 日元 / 户`
  - `外景展示（眺望）`：基础价格 `280,000 日元`，含 `100 张`，超出后 `1,200 日元 / 张`
  - `飞行导航`：`1,200 日元 / 导航点`
  - `CITY VISITA - 3D住户表`：基础价格 `280,000 日元`，含 `100 户`，超出后 `1,200 日元 / 户`
  - `CITY VISITA - 城市数据展示`：基础价格 `240,000 日元`
  - `CITY VISITA - 外景展示（眺望）`：基础价格 `280,000 日元`，含 `100 张`，超出后 `1,200 日元 / 张`
  - `CITY VISITA - 人视眺望`：`1,200 日元 / 眺望点`
  - `CITY VISITA - 飞行导航`：`1,200 日元 / 导航点`
  - `BUILDING VISTA Lite`：基础价格 `200,000 日元`
  - `大楼追加静态图交付`：`120,000 日元 / 张`
- `BUILDING VISTA 3D` 与 `BUILDING VISTA Lite` 均视为 `系统费`：正常计入整单报价总价，但不参与日本 / 南京分成，也不纳入打折范围。
- `大楼` 与 `项目场地条件` 中的参数项价格不在前台主 PRD 逐项写死；这些参数仅定义前台字段结构与输入方式，具体计价由后台当前生效的楼宇价格配置驱动。
- 楼宇模块的各项价格口径与初始化值统一以后台当前生效配置为准。
- 楼宇模块总价不得低于 `500,000 日元`。
- 当保存时楼宇模块总价低于 `500,000 日元`，系统应弹出二次确认提示：
  - 文案：`当前报价楼宇低于50万日元，如继续保存楼宇将按最低价50万元保存，请确认是否继续`
  - 按钮：`去修改`、`确定保存`
- 点击 `去修改`：关闭弹窗，返回当前报价继续编辑。
- 点击 `确定保存`：按 `500,000 日元` 保存楼宇模块金额，并继续后续保存流程。
- 当触发最低价保护时，系统需随当前报价快照同时记录：`原始计算金额`、`最低价保护后金额（500,000 日元）`、`触发原因`。
- `BUILDING VISTA 3D` 与 `BUILDING VISTA Lite` 的基础包内容默认收起，不自动展开显示详细内容。
- 当用户点击 `查看基础包内容` 时，系统展开显示基础包内容，并支持再次收起。
- `BUILDING VISTA 3D` 基础包当前至少展示：
  - `楼体展示`
  - `环视相机`
  - `隐藏周边`
  - `操作指南`
- `CITY VISITA` 基础包当前至少展示：
  - `楼体展示`
  - `Google 卫星地图展示`
  - `环视相机`
  - `隐藏周边`
- `BUILDING VISTA Lite` 基础包当前至少展示：
  - `场景搭建`
  - `角度调整`
  - `隐藏周边`
  - `全屏展示`
  - `回到初始视角`
  - `操作指南`
  - `重要提示`
  - `项目导入支援`
- `BUILDING VISTA Lite` 下的 `键盘操作 / 隐藏周边 / 全屏展示 / 重要提示` 当前默认选中，价格均为 `0 日元`。
- `大楼追加静态图交付` 可单独被选择，且应允许继续保存。

##### 3.5 色彩切换模块

- 展示方式支持 `2D / 3D`。
- 当选择 `3D` 时，必须选择出图类型 `CCG / CQCG`。
- `3D` 支持场景：`LDK`、`卫生间`、`浴室`、`洗面浴室`。
- 当选择 `LDK` 时，必须继续选择 `带洋室 / 不带洋室`。
- 当展示方式选择 `2D` 时，配置路径为：
  - 先选择 `出图类型（CCG / CQCG）`
  - 再选择场景：`LDK / 厕所 / 洗面室 / 浴室`
  - 再按场景配置部件与数量
  - `LDK`：`柜门 / 台面 / 高低台 / 燃气灶`
  - `厕所`：`柜门 / 台面`
  - `洗面室`：`柜门 / 三面镜下`
  - `浴室`：`浴缸形状 / 照明`
- 当展示方式选择 `3D` 时，当前仍按旧版已确认口径保留：
  - 必须先选择 `出图类型（CCG / CQCG）`
  - 当前支持场景：`LDK / 卫生间 / 浴室 / 洗面浴室`
  - 其中 `LDK` 仍必须继续选择 `带洋室 / 不带洋室`
  - `LDK` 场景需配置 `风格套系数量`
- `2D` 色彩切换额外收取 `200,000 日元` 系统费，且该费用不参与折扣，也不参与日本 / 南京分成。
- `2D` 色彩切换系统费按当前报价中的 `色彩切换` 模块收取 `1` 次，不按场景、部件或大楼实例重复收取。
- 若当前报价已选择 `专有部` 模块，则 `色彩切换` 模块中的 `2D / 3D` 均按原价 `8 折` 计算。
- `3D` 色彩切换不收取系统费。
- 当前已确认的色彩切换价格口径如下：
  - `2D + CQCG`：`55,000 日元 / 场景`
  - `2D + CCG`：`75,000 日元 / 场景`
  - `2D` 普通部件：`15,000 日元 / 部件`
  - `2D` 浴缸形状：`20,000 日元 / 项`
  - `2D` 系统费：`200,000 日元`
  - `3D + LDK + 带洋室`：`185,000 日元 / 套`
  - `3D + LDK + 不带洋室`：`150,000 日元 / 套`
- 当展示方式选择 `2D` 时，必须选择出图类型 `CCG / CQCG`，且至少选择 `1` 个场景。
- 当展示方式选择 `3D` 时，必须选择出图类型 `CCG / CQCG`，且至少选择 `1` 个场景。
- `3D` 计价口径可按“场景基础价格 * 风格套系数量”理解。
- `2D` 计价口径可按“系统费 `200,000 日元` + 各场景基础价格 + 已选部件价格之和”理解。

##### 3.6 专有部 / 共用部 / 办公室 / 动画 / 平面家具摆放 / 系统收费

- 各模块均支持独立配置与独立小计。
- 多实例模块支持新增同类模块，并分别维护实例名称、小计、删除操作。
- 专有部、共用部、办公室、动画均支持 `新增同类模块`。
- 专有部、共用部、办公室实例中，切换套餐组合后系统应更新套餐摘要与小计金额。
- 共用部追加项清单与价格口径不随套餐选择变化。
- 办公室追加项清单固定展示，不随 `家具/配置` 或 `面积/规格` 变化。
- 动画按秒计费，时长最小值为 `1` 秒。
- 动画追加项清单固定展示，不随场景类型或时长变化。
- 平面家具摆放为独立模块，与动画模块平级。
- 平面家具摆放 `50 张以上` 按公式计价，生成后的金额不支持手动修改。
- 系统收费为项目级模块，不区分大楼实例，不随大楼数量变化。
- 系统收费不是必选项。
- 系统收费模块下展示 `4` 个可选项，用户按需勾选：
  - `系统使用费`
  - `外观模型`
  - `视点式 URL 链接费`
  - `HOMESTAGING`
- 系统收费模块总小计 = `所有已选项小计之和`。
- `系统收费` 模块下全部收费项均视为 `系统费`：正常计入整单报价总价，但不参与日本 / 南京分成，也不纳入打折范围。

###### 3.6.1 专有部

- 专有部支持多实例，每个实例包含：
  - `实例名称`
  - `数量`
  - `展示方式（视点VR / Walk VR / 投影(3面) / 投影(单面)）`
  - `家具/配置（全屋有家具 / 全屋无家具 / LDK有家具 / LDK无家具）`
  - `面积/规格`
  - `追加项`
- 当前已确认的专有部套餐示例价格包括：
  - `视点VR · 全屋有家具 · 70㎡未满 · CQCG`：`387,500 日元`
  - `视点VR · 全屋有家具 · 70-100㎡ · CQCG`：`395,000 日元`
  - `视点VR · 全屋有家具 · 100-150㎡ · CQCG`：`405,000 日元`
  - `视点VR · 全屋有家具 · 150-200㎡ · CQCG`：`450,000 日元`
  - `视点VR · 全屋有家具 · 200㎡以上 · CQCG`：`500,000 日元`
  - `视点VR · 全屋无家具 · 150㎡未满 · CQCG`：`210,000 日元`
  - `视点VR · 全屋无家具 · 150㎡以上 · CQCG`：`240,000 日元`
  - `视点VR · LDK有家具 · 70㎡未满 · CQCG`：`146,000 日元`
  - `视点VR · LDK有家具 · 70-100㎡ · CQCG`：`153,000 日元`
  - `视点VR · LDK有家具 · 100-150㎡ · CQCG`：`160,000 日元`
  - `视点VR · LDK有家具 · 150㎡以上 · CQCG`：`182,000 日元`
  - `视点VR · LDK无家具 · 150㎡未满 · CQCG`：`80,000 日元`
  - `视点VR · LDK无家具 · 150㎡以上 · CQCG`：`100,000 日元`
  - `Walk VR · 全屋有家具 · 70㎡未满 · CQCG`：`398,000 日元`
  - `Walk VR · 全屋有家具 · 70-100㎡ · CQCG`：`430,000 日元`
  - `Walk VR · 全屋有家具 · 100-150㎡ · CQCG`：`450,000 日元`
  - `Walk VR · 全屋无家具 · 70㎡未满 · CQCG`：`358,800 日元`
  - `Walk VR · 全屋无家具 · 70-100㎡ · CQCG`：`418,000 日元`
  - `Walk VR · 全屋无家具 · 100-150㎡ · CQCG`：`475,200 日元`
  - `Walk VR · LDK有家具 · 70㎡未满 · CQCG`：`316,800 日元`
  - `Walk VR · LDK有家具 · 70-100㎡ · CQCG`：`338,000 日元`
  - `Walk VR · LDK有家具 · 100-150㎡ · CQCG`：`398,000 日元`
  - `Walk VR · LDK无家具 · 150㎡未满 · CQCG`：`284,480 日元`
  - `投影(3面) · 全屋有家具 · 70㎡未满 · CQCG`：`350,000 日元`
  - `投影(3面) · 全屋有家具 · 70-100㎡ · CQCG`：`370,000 日元`
  - `投影(3面) · 全屋有家具 · 100-150㎡ · CQCG`：`390,000 日元`
  - `投影(3面) · 全屋有家具 · 150㎡以上 · CQCG`：`420,000 日元`
  - `投影(3面) · 全屋无家具 · 150㎡未满 · CQCG`：`200,000 日元`
  - `投影(3面) · 全屋无家具 · 150㎡以上 · CQCG`：`230,000 日元`
  - `投影(单面) · 全屋有家具 · 70㎡未满 · CQCG`：`320,000 日元`
  - `投影(单面) · 全屋有家具 · 70-100㎡ · CQCG`：`340,000 日元`
  - `投影(单面) · 全屋有家具 · 100-150㎡ · CQCG`：`350,000 日元`
  - `投影(单面) · 全屋有家具 · 150㎡以上 · CQCG`：`390,000 日元`
  - `投影(单面) · 全屋无家具 · 150㎡未满 · CQCG`：`160,000 日元`
  - `投影(单面) · 全屋无家具 · 150㎡以上 · CQCG`：`220,000 日元`
- 当前已确认的专有部追加项共 `38` 项，前端按 `全屋 / 投影体验 / 收纳柜 / 子户型 / 模型 / 室外 / 家具 / 眺望` 八组展示；每项同时维护 `CQCG` 与 `CCG` 两套价格：
  - `全屋`
    - `追加制作房间`：`CQCG 50,000 / CCG 60,000 日元 / 房间`
    - `追加房屋展示视点`：`CQCG 28,000 / CCG 40,000 日元 / 视点`
    - `室内静态图追加（基于已做全景）`：`CQCG 20,000 / CCG 40,000 日元 / 张`
    - `室内静态图制作（独立制作）`：`CQCG 60,000 / CCG 70,000 日元 / 张`
    - `夜景追加（全景）`：`CQCG 30,000 / CCG 40,000 日元 / 张`
    - `Dollhouse追加制作（有家具）`：`CQCG 70,000 / CCG 70,000 日元 / 套`
    - `Dollhouse追加制作（无家具）`：`CQCG 45,000 / CCG 45,000 日元 / 套`
  - `投影体验`
    - `追加投影体验（全屋有家具）`：`CQCG 150,000 / CCG 200,000 日元 / 面`
    - `追加投影体验（LDK有家具）`：`CQCG 120,000 / CCG 150,000 日元 / 面`
    - `追加投影体验（全屋无家具）`：`CQCG 150,000 / CCG 190,000 日元 / 面`
    - `追加投影体验（LDK无家具）`：`CQCG 120,000 / CCG 150,000 日元 / 面`
    - `追加单面投影体验（有家具）`：`CQCG 120,000 / CCG 150,000 日元 / 面`
    - `追加单面投影体验（无家具）`：`CQCG 100,000 / CCG 120,000 日元 / 面`
    - `LDK以外追加VR制作（有家具）`：`CQCG 35,000 / CCG 65,000 日元 / 区域`
    - `LDK以外追加VR制作（无家具）`：`CQCG 25,000 / CCG 46,000 日元 / 区域`
  - `收纳柜`
    - `追加收纳柜（单个）`：`CQCG 15,000 / CCG 20,000 日元 / 个`
    - `追加收纳柜（全屋/户）`：`CQCG 50,000 / CCG 70,000 日元 / 户`
    - `追加收纳柜展示视点`：`CQCG 10,000 / CCG 15,000 日元 / 视点`
  - `子户型`
    - `追加子户型（有家具·70㎡未满）`：`CQCG 60,000 / CCG 80,000 日元 / 户型`
    - `追加子户型（有家具·70-100㎡）`：`CQCG 70,000 / CCG 90,000 日元 / 户型`
    - `追加子户型（有家具·100-150㎡）`：`CQCG 80,000 / CCG 100,000 日元 / 户型`
    - `追加子户型（有家具·150-200㎡）`：`CQCG 100,000 / CCG 110,000 日元 / 户型`
    - `追加子户型（无家具·150㎡未满）`：`CQCG 60,000 / CCG 80,000 日元 / 户型`
    - `追加子户型（无家具·150㎡以上）`：`CQCG 80,000 / CCG 100,000 日元 / 户型`
  - `模型`
    - `追加制作模型`：`CQCG 15,000 / CCG 15,000 日元 / 个`
    - `BIM模型制作`：`CQCG 56,000 / CCG 56,000 日元 / 个`
    - `硬装材质`：`CQCG 20,000 / CCG 20,000 日元 / 区域`
  - `室外`
    - `庭园/阳台/露台追加制作（50㎡未满）`：`CQCG 100,000 / CCG 200,000 日元 / 区域`
    - `庭园/阳台/露台追加制作（100㎡未满）`：`CQCG 150,000 / CCG 220,000 日元 / 区域`
  - `家具`
    - `替换家具`：`CQCG 4,000 / CCG 7,000 日元 / 个`
    - `模型制作（家具/照明等）`：`CQCG 10,000 / CCG 10,000 日元 / 个`
    - `小物制作（3-5件/组）`：`CQCG 10,000 / CCG 10,000 日元 / 组`
    - `插座开关点位`：`CQCG 80,000 / CCG 80,000 日元 / 个`
    - `硬装模型制作（门窗等）`：`CQCG 15,000 / CCG 15,000 日元 / 个`
    - `柜门/柜体开闭追加`：`CQCG 15,000 / CCG 15,000 日元 / 个`
  - `眺望`
    - `窗外/阳台景色（全景/静态图）`：`CQCG 8,000 / CCG 10,000 日元 / 户`
    - `阳台全景眺望CG图片`：`CQCG 45,000 / CCG 75,000 日元 / 视点`
    - `阳台/窗户静态图眺望CG图片`：`CQCG 30,000 / CCG 40,000 日元 / 张`

###### 3.6.2 共用部

- 共用部支持多实例，每个实例包含：
  - `实例名称`
  - `展示方式（视点VR / Walk VR）`
  - `家具/配置（室内有家具 / 室外有家具）`
  - `面积/规格`
  - `追加项`
- 当前已确认的共用部套餐示例价格包括：
  - `视点VR · 室内有家具 · 20㎡未满 · CQCG`：`170,000 日元`
  - `视点VR · 室内有家具 · 20-50㎡ · CQCG`：`220,000 日元`
  - `视点VR · 室内有家具 · 50-90㎡ · CQCG`：`250,000 日元`
  - `视点VR · 室内有家具 · 90-150㎡ · CQCG`：`280,000 日元`
  - `视点VR · 室内有家具 · 150-200㎡ · CQCG`：`320,000 日元`
  - `视点VR · 室内有家具 · 200㎡以上 · CQCG`：`374,000 日元`
  - `视点VR · 室外有家具 · 100㎡以内 · CQCG`：`200,000 日元`
  - `视点VR · 室外有家具 · 100-150㎡ · CQCG`：`270,000 日元`
  - `视点VR · 室外有家具 · 150-200㎡ · CQCG`：`340,000 日元`
  - `视点VR · 室外有家具 · 200-250㎡ · CQCG`：`400,000 日元`
  - `Walk VR · 室内有家具 · 70㎡未满 · CQCG`：`370,000 日元`
  - `Walk VR · 室内有家具 · 70-100㎡ · CQCG`：`400,000 日元`
  - `Walk VR · 室内有家具 · 100-150㎡ · CQCG`：`450,000 日元`
  - `Walk VR · 室内有家具 · 150㎡以上 · CQCG`：`510,000 日元`
  - `Walk VR · 室外有家具 · 100㎡以内 · CQCG`：`270,000 日元`
  - `Walk VR · 室外有家具 · 100-150㎡ · CQCG`：`330,000 日元`
  - `Walk VR · 室外有家具 · 150-200㎡ · CQCG`：`408,000 日元`
  - `Walk VR · 室外有家具 · 200-250㎡ · CQCG`：`470,000 日元`
- 共用部追加项清单与价格口径不随套餐选择变化，当前已确认包括：
  - `窗外植物`：`59,000 / 130,000 日元 / 视点`
  - `窗外眺望`：`15,000 / 30,000 日元 / 区域`
  - `室内静态图（基于全景）`：`39,000 / 52,000 日元 / 张`
  - `室内静态图（独立制作）`：`154,000 / 180,000 日元 / 张`
  - `室外静态图（基于全景）`：`51,000 / 64,000 日元 / 张`
  - `室外静态图（独立制作）`：`180,000 / 243,000 日元 / 张`

###### 3.6.3 办公室

- 办公室支持多实例，每个实例包含：
  - `实例名称`
  - `展示方式（当前固定为 视点VR）`
  - `家具/配置（水泥结构 / 有家具）`
  - `面积/规格（30㎡以内 / 30-50㎡ / 50-100㎡ / 100-200㎡ / 200-300㎡ / 300㎡以上）`
  - `追加项`
- 当前已确认的办公室套餐示例价格包括：
  - `视点VR · 水泥结构 · 30㎡以内`：`70,000 日元`
  - `视点VR · 水泥结构 · 30-50㎡`：`90,000 日元`
  - `视点VR · 水泥结构 · 50-100㎡`：`110,000 日元`
  - `视点VR · 水泥结构 · 100-200㎡`：`130,000 日元`
  - `视点VR · 水泥结构 · 200-300㎡`：`170,000 日元`
  - `视点VR · 水泥结构 · 300㎡以上`：`200,000 日元`
  - `视点VR · 有家具 · 30㎡以内`：`130,000 日元`
  - `视点VR · 有家具 · 30-50㎡`：`160,000 日元`
  - `视点VR · 有家具 · 50-100㎡`：`210,000 日元`
  - `视点VR · 有家具 · 100-200㎡`：`240,000 日元`
  - `视点VR · 有家具 · 200-300㎡`：`290,000 日元`
  - `视点VR · 有家具 · 300㎡以上`：`360,000 日元`
- 办公室追加项当前已确认包括：
  - `室内静态图（基于已制作模型）`：`50,000 日元 / 张`
  - `室内静态图（独立制作）`：`120,000 日元 / 张`
  - `室内测距`：`7,000 日元 / 视点`

###### 3.6.4 动画

- 动画支持多实例，每个实例包含：
  - `实例名称`
  - `场景类型（专有部室内 / 共用部室内 / 共用部室外 / 楼宇外观）`
  - `动画时长（秒）`
  - `追加项`
- 动画按秒计费，当前已确认价格口径如下：
  - `专有部室内`：`20,000 日元 / 秒`
  - `共用部室内`：`25,000 日元 / 秒`
  - `共用部室外`：`30,000 日元 / 秒`
  - `楼宇外观`：`30,000 日元 / 秒`
- 动画追加项当前已确认包括：
  - `视频屏幕处理费用`：`200,000 日元 / 条`
  - `动画剪辑处理`：`85,000 日元 / 条`

###### 3.6.5 平面家具摆放

- 平面家具摆放为独立模块，不支持多实例。
- 当前至少包含以下字段：
  - `张数档位`
  - `具体张数（仅当选择 50 张以上时必填）`
  - `金额`
- 当前已确认的价格规则为：
  - `1-50 张`：按后台当前生效的固定档位计价
  - `50 张以上`：按公式 `6270 × 张数^0.856` 自动计算并取整
- 当选择 `50 张以上` 时，系统自动生成金额，且该金额不支持人工手动修改。

###### 3.6.6 系统收费

- 系统收费为项目级模块，不区分大楼实例，不随大楼数量变化。
- 系统收费模块包含 `4` 个可选项，用户仅对已勾选项配置参数并计价：
  - `系统使用费`：`30,000 日元 / 月`
  - `外观模型`：`10,000 日元 / 个月`
  - `视点式 URL 链接费`：`5,000 日元 / 链接月`
  - `HOMESTAGING`：`5,000 日元 / 月`
- 当前已确认的字段与公式如下：
  - `系统使用费`：输入 `月数`，小计 = `月数 × 30,000`
  - `外观模型`：输入 `个数`、`月数`，小计 = `个数 × 月数 × 10,000`
  - `视点式 URL 链接费`：输入 `链接数`、`月数`，小计 = `链接数 × 月数 × 5,000`
  - `HOMESTAGING`：输入 `月数`，小计 = `月数 × 5,000`
- 系统收费模块中的各项 `月数` 为独立计费参数，不与 `报价单资料` 中的 `制作周期/服务期间` 自动联动，也不自动同步覆盖。
- 系统收费模块的初始化值、各项默认参数与价格口径统一以后台当前生效配置为准。

##### 3.7 报价预览区

- 右侧报价预览区用于展示各模块报价结果与关键参数摘要。
- 预览区展示：
  - 各模块总价
  - `合计 （不含税净额）`
  - 税项明细（税项名称 + 税率 + 税额）
  - 各模块分成结果
- 预览区顶部主金额区域原 `建议报价` 文案统一调整为 `合计 （不含税净额）`。
- 预览区顶部不再单独展示 `含税总价` 文案。
- 分成结果需分两层展示：
  - 模块级分成结果：每个模块分别展示 `模块名称`、`模块总价`、`日本金额`、`南京金额`
  - 整单级分成汇总：展示 `日本总金额`、`南京总金额`、`整单总价`
- 若当前报价存在多条税项，税项明细需按当前报价税项快照顺序逐条展示，不按名称、税率或金额临时重排。
- 预览区展示的所有金额均按日元整数展示；税额、`合计 （不含税净额）` 和分成金额均沿用共享业务规则中的统一取整与尾差处理口径。
- 当项目存在项目级分成比例时，预览区优先按项目级比例展示日本 / 南京价格。
- 若不存在项目级比例，则按系统默认比例展示。
- 大楼摘要信息仅展示已选择、已填写或值大于 `0` 的参数，不展示未选择或默认值为 `0` 的参数。
- 多实例模块应分别展示每个实例的小计与摘要信息。
- 当左侧参数发生变化时，右侧预览区应实时刷新，且结果应与最终保存的报价记录保持一致。

##### 3.7A 报价逻辑说明

- 本章节用于说明“报价计算器是如何形成金额结果的”，属于报价逻辑说明，不是页面操作步骤说明。
- 当前报价的金额形成顺序如下：
  - 用户选择模块、实例、参数、数量、面积、时长、交付项
  - 系统按当前会话锁定的 `config_version_id` 对应配置，逐个模块计算小计
  - 系统将计算结果归类为 `CG制作项 / 系统及云服务项 / 其他专项`
  - 系统按当前报价税项快照计算税额与金额汇总
  - 系统按系统默认或项目级覆盖的分成比例计算日本 / 南京分成结果
  - 系统将上述结果展示在右侧报价预览区，并在保存成功后固化为当前报价快照
- 用户在前台看到的金额不是人工填写总价，而是系统根据 `后台生效配置 + 当前输入参数` 自动计算的结果。
- 同一套输入条件，在同一配置版本下，系统必须生成一致的报价结果。
- 报价逻辑中的特殊口径包括：
  - `系统费` 正常计入整单报价总价，但不参与日本 / 南京分成，也不纳入打折范围
  - 楼宇模块存在 `500,000 日元` 最低价保护
  - 色彩切换、系统收费等模块存在独立的计费结构与特殊规则
- 报价保存成功后，系统需固化：
  - 模块参数快照
  - 计价规则快照
  - 模块金额快照
  - 税项快照
  - 分成比例快照
  - 整单金额快照
- 后续对已保存报价执行 `追加报价` 或 `打折` 时，不是重新生成整条报价，而是在当前报价上做二次金额变更。
- 当前版本中，追加报价与打折均保留模块选择能力，但每次变更金额仅基于“所选模块中的 `CG制作费用`”计算，不作用于该模块中的 `系统及云服务项`、`其他专项`、税项或其他未选择模块。

##### 3.8 保存与审核申请

- 页面底部按钮：
  - `取消`
  - `保存报价`
- 点击 `保存报价` 后，系统保存当前报价记录，状态标记为 `待提交审核`。
- 用户从历史报价点击 `查看` 进入详情页时，若当前状态为 `待提交审核`，页面头部操作区展示 `提交审核` 按钮，位置在 `导出` 按钮右侧。
- 用户点击 `提交审核` 后，系统发起审核流程，状态更新为 `待审核`。
- 前端仅提供“发起审核申请”能力，不在前端执行 `审核通过 / 审核不通过`。
- 状态规则：
  - `待提交审核`：允许修改，允许再次提交审核
  - `待审核`：普通用户不可继续修改
  - `审核通过`：允许查看、导出；普通用户再次追加时，当前报价进入 `待审核`
- `审核不通过`：允许修改；修改并保存后重新变更为 `待提交审核`，再由普通用户重新提交审核
- 普通用户发起的追加若审核不通过，则当前报价状态变更为 `审核不通过`；该次追加不并入当前有效金额，报价详情主金额、导出金额与打印金额继续沿用上一版已审核通过的有效金额。
- `待提交审核` 或 `审核不通过` 状态下编辑并保存时，覆盖当前报价记录，不生成新的历史报价记录。
- 追加报价在当前报价基础上执行，不生成新的历史报价记录。
- 同一条报价在 `待审核` 状态下，不允许再次发起新的追加报价。
- 当前报价若已存在待审核中的变更流程，系统应拦截新的追加请求，并提示：`当前报价已有待审核中的变更，请等待审核完成后再继续操作`。
- 已保存报价后续继续编辑时，应沿用该报价首次保存时固化的参数快照进行计算，不切换到后台最新参数配置。
- 必填参数未填写时，系统应阻止保存报价或提交审核，并提示具体缺失项。
- 数值型参数应校验最小值、最大值和输入格式，不允许输入非法值。

##### 3.9 保存报价必填项清单

- 只有已启用、已新增或已勾选的模块/实例才参与必填校验；未启用的模块不校验必填。
- 楼宇模块保存必填：
  - 至少存在 `1` 栋有效大楼实例
  - 每栋大楼至少填写：`楼宇名称`、`层数`、`体型类型`、`外立面`、`屋顶类型`
  - 每栋大楼至少选择 `1` 个大楼交付项
- 色彩切换模块保存必填：
  - 必须选择 `展示方式（2D / 3D）`
  - 必须选择 `出图类型（CCG / CQCG）`
  - 至少选择 `1` 个场景
  - 若选择 `LDK` 场景，必须继续选择 `带洋室 / 不带洋室`
- 专有部模块保存必填：
  - 每个已新增实例必须完成必要的 `展示方式`
  - 每个已新增实例必须完成必要的 `家具/配置`
  - 每个已新增实例必须完成必要的 `面积/规格`
- 共用部模块保存必填：
  - 每个已新增实例必须完成必要的 `展示方式`
  - 每个已新增实例必须完成必要的 `家具/配置`
  - 每个已新增实例必须完成必要的 `面积/规格`
- 办公室模块保存必填：
  - 每个已新增实例必须完成必要的 `展示方式`
  - 每个已新增实例必须完成必要的 `家具/配置`
  - 每个已新增实例必须完成必要的 `面积/规格`
- 动画模块保存必填：
  - 每个已新增实例必须选择 `场景类型`
  - 每个已新增实例必须填写 `动画时长（秒）`
- 平面家具摆放模块保存必填：
  - 必须选择 `张数档位`
  - 若选择 `50 张以上`，必须填写具体 `张数`
- 系统收费模块保存必填：
  - 模块本身非必选
  - 仅当某收费项被勾选时才校验其必填参数
  - `系统使用费`：必须填写 `月数`
  - `外观模型`：必须填写 `个数` 与 `月数`
  - `视点式 URL 链接费`：必须填写 `链接数` 与 `月数`
  - `HOMESTAGING`：必须填写 `月数`

##### 3.10 数值型参数输入边界

- `楼层`：`1-80`
- `面积`：`0-100000`，保留 `2` 位小数
- `户数`：`0-1000`
- `张数`：`1-500`
- `秒数`：`1-300`
- `月数`：`1-36`
- `链接数`：`1-100`
- `点位数/个数`：`0-500`
- `金额`：仅允许日元整数，不允许小数
- `百分比/比例`：`0-100`，保留 `2` 位小数
- `地面高差(毫米)`：`0-10000`
- `红绿灯 / 地铁站` 数量：`0-100`
- 超过最大值、小于最小值、输入非法字符或小数位超限时，系统应阻止保存并提示对应字段的边界要求。

#### FE-004 报价详情

##### 4.1 页面结构

- 报价详情页桌面端采用左右双栏布局：
  - 左侧：`报价详情`
  - 右侧：`报价历程`
- 左右宽度建议约 `7:3`。
- 移动端可调整为上下结构。

##### 4.2 左侧报价详情

左侧主内容区至少展示：

- 报价编号
- 项目编号
- 项目名称
- 客户名称
- 项目负责人
- 项目状态
- 报价状态
- 创建人
- 创建时间
- 最近修改时间
- 报价明细
- 金额汇总
- 变更结果区
- 追加报价明细
- 打折明细
- 当前报价已固化的参数与金额快照
- `报价明细` 当前固定为 `5` 列结构：
  - `序号`
  - `分类`
  - `分项`
  - `主要内容`
  - `金额`
- `备注` 列已取消，不再作为报价明细表格列展示。
- `报价明细` 下方新增 `金额汇总` 标题与汇总区。
- `金额汇总` 当前保留字段：
  - `CG制作项小计`
  - `系统及云服务项小计`
  - `其他专项小计`
  - `契約税務調整費`
  - `合计 （不含税净额）`
- 报价详情页当前不再展示 `分成比例`、`日本 40%`、`南京 60%` 等分成结果信息。
- `追加报价明细` 需按记录逐条展示，每条至少包括：
  - `追加时间`
  - `追加人`
  - `追加方式`
  - `追加比例（如有）`
  - `追加金额`
  - `追加备注`
  - `追加模块`
  - `追加模块对应金额变化结果`
- `追加模块` 继续按实际所选模块展示。
- `追加金额` 与 `追加模块对应金额变化结果` 仅反映该模块中的 `CG制作费用` 变化，不包含该模块中的 `系统及云服务项`、`其他专项`、税项或其他模块金额。
- `打折明细` 放在同一 `变更结果区` 中，需按记录逐条展示，每条至少包括：
  - `打折时间`
  - `打折人`
  - `打折方式`
  - `打折比例（如有）`
  - `打折金额`
  - `打折备注`
  - `打折模块`
  - `打折模块对应金额变化结果`
- `打折模块` 继续按实际所选模块展示。
- `打折金额` 与 `打折模块对应金额变化结果` 仅反映该模块中的 `CG制作费用` 变化，不包含该模块中的 `系统及云服务项`、`其他专项`、税项或其他模块金额。
- `项目状态` 与 `报价状态` 必须分开展示，不可合并为单一状态字段。

##### 4.3 右侧报价历程

报价历程按时间顺序展示关键操作与状态变化记录，至少包括：

- 创建报价
- 修改报价
- 提交审核
- 审核通过
- 审核不通过
- 追加报价
- 打折
- 导出报价

- 上述操作记录均挂在当前报价下长期保留，不因后续参数配置、税项配置或分成比例调整而丢失。
- 审核通过与审核不通过事件需同时记录在 `报价历程` 与 `审核记录` 中。

每条记录至少包括：

- 操作人
- 操作时间
- 操作类型
- 操作结果
- 备注（如有）

- `报价历程` 侧重自然语言事件展示，覆盖报价生命周期中的全部关键事件。  
- `审核记录` 作为当前报价详情下的独立展示模块，侧重结构化审核明细展示，至少包括：审核时间、审核人、审核结果、审核备注。  
- `追加报价明细` 与 `打折明细` 作为业务结果，统一展示在左侧 `报价详情` 中。  
- `追加报价` 与 `打折` 的每次发生过程，统一展示在右侧 `报价历程` 中。  
- 前台展示追加与打折记录时，需明确标识“所选模块”和“金额仅基于该模块中的 `CG制作费用` 计算”。  
- 若普通用户发起的 `追加报价` 进入审核流，则 `审核记录` 仅记录对应审核动作本身，可关联该次追加，但不重复承载追加明细内容。  
- `打折` 不进入 `审核记录`。  
- `报价历程` 仅展示高层业务动作摘要，不展示详细导出选项、详细追加字段或详细打折字段。  
- 普通用户追加报价进入 `待审核` 期间，报价详情主金额继续展示上一版已审核通过的有效金额；待审核追加仅在 `追加报价明细` 与 `报价历程` 中单独展示，并明确标记 `待审核`。  
- 普通用户发起的追加若审核不通过，则该次追加需在 `报价历程` 与 `审核记录` 中记录为 `审核不通过`，且报价详情主金额、导出金额与打印金额继续沿用上一版已审核通过的有效金额。  
- `报价历程` 中的 `修改报价` 仅展示一次修改事件，不展开字段级或模块级差异明细。  
- 导出动作在 `报价历程` 中仅展示类似 `张三于 2026-05-01 14:20 导出了报价单` 的摘要信息。  
- 在线预览不进入 `报价历程`。  
报价历程支持自然语言展示，例如：`张三于 2026-04-29 10:30 创建了报价`。

##### 4.4 详情页按钮与限制

- 用户在历史报价记录中点击 `查看` 后，进入当前报价详情页。
- 若当前报价状态为 `待提交审核`，详情页头部操作区展示 `提交审核` 按钮，位置在 `导出` 按钮右侧。
- 普通用户在 `待审核` 状态下不可继续修改报价。
- `审核通过` 状态下，普通用户不可直接修改原记录；如需变更，应通过追加报价在当前报价基础上发起变更。
- `审核不通过` 状态下，普通用户修改并保存后，当前记录状态应重新变更为 `待提交审核`。
- 审核执行结果以后台审核结论为准，前端通过报价状态与报价历程进行展示。

#### FE-005 报价单资料

- 报价详情页头部操作区提供 `报价单资料` 入口。
- `报价单资料` 用于维护当前报价单对外出单所使用的资料快照。
- 新建报价时，系统应为当前报价初始化一份报价单资料快照。
- 新建报价初始化时，系统自动带入并设为只读的字段仅包括：
  - `报价编号`
  - `报价日期`
  - `项目名称`
  - `客户名称`
- 报价税项不由项目带入，统一按后台当前生效的 `税项配置` 生成当前报价的税项快照。
- 当前报价自己的报价单资料存在缺失字段时，不阻断保存、提交审核、审核通过、导出与打印；缺失字段在对外展示时统一按空值展示规则处理。
- 除上述只读字段外，其余报价单资料字段均为空，由用户在当前报价下自行填写并保存。
- 项目基础信息后续发生变化时，不应反向覆盖已生成报价单的资料快照。
- 后台税项配置后续发生变化时，不应反向覆盖已保存报价的税项快照。
- 页面字段至少包括：
  - 报价编号
  - 报价日期
  - 有效期限
  - 对应主合同编号
  - 项目名称
  - 项目来源公司
  - 客户名称
  - 报价单位
  - 金额口径
  - 项目类型
  - 付款币种
  - 制作周期/服务期间
  - 预计交付形式
  - 部署方式
  - 阶段性节点
  - 报价前提与说明
- 只读字段：
  - `报价编号`
  - `报价日期`
  - `项目名称`
  - `客户名称`
- 只读字段来源规则：
  - `报价编号`：由系统在报价首次保存成记录时自动生成
  - `报价日期`：由系统在新建报价初始化时自动生成并只读展示
  - `项目名称`：来源于项目名称，并在报价首次保存时固化为当前报价快照
  - `客户名称`：来源于项目基础信息，并在报价首次保存时固化为当前报价单资料快照
- `报价编号` 与 `项目名称` 在 `报价详情页` 和 `报价单资料页` 中均需展示。
- `报价单位` 仅在 `报价单资料页` 中展示，并作为可编辑字段由当前报价自行维护。
- 其余字段可编辑。
- 字段校验规则：
  - `有效期限`：必填，日期字段
  - `对应主合同编号`：选填，最长 `50` 个字符
  - `项目来源公司`：必填，最长 `100` 个字符
  - `客户名称`：必填，最长 `100` 个字符
  - `金额口径`：必填，枚举字段
  - `项目类型`：必填，枚举字段
  - `付款币种`：必填，枚举字段
  - `制作周期/服务期间`：选填，最长 `100` 个字符
  - `预计交付形式`：选填，最长 `100` 个字符
  - `部署方式`：选填，最长 `100` 个字符
  - `阶段性节点`：选填，最长 `500` 个字符
  - `报价前提与说明`：选填，最长 `2000` 个字符
- 报价单资料页面提供显式 `保存` 按钮。
- 用户修改报价单资料后，只有点击 `保存` 成功，才更新当前报价自己的资料快照。
- 报价单资料保存失败时，系统不得关闭当前页面，且需保留当前输入内容并提示保存失败。
- 用户在报价单资料存在未保存修改时离开页面，系统需弹出二次确认。
- 导出时始终读取当前报价最近一次保存成功的报价单资料快照。
- 当前报价单资料保存为当前报价自己的资料快照。

#### FE-006 导出

- 报价详情页头部操作区提供 `导出` 入口。
- 点击 `导出` 后，进入独立导出页面。
- 导出页面固定针对“当前这条报价”，不提供切换其他报价的选择项。
- 导出配置至少包括：
  - 导出语言：`中文 / 日文 / 英文`
  - 导出格式：`Excel`
- 当前导出页仅保留 `导出语言` 与 `导出格式` 两类配置项。
- 导出页默认值为：
  - 导出语言：用户首次进入导出页时，按当前打开这套报价系统界面的语言初始化一次
  - 导出格式：`Excel`
- 导出语言与系统页面语言相互独立。
- 导出页完成初始化后，即使用户在系统中切换页面语言，当前已选择的导出语言也不自动变化。
- `Excel / 在线预览` 均属于 `V1.2` 必做交付范围。
- 切换导出语言后，系统应实时刷新预览内容。
- 导出预览不采用卡片式预览，统一采用接近最终稿面的 `见积书` 稿面式预览。
- 页面里看到的预览结果，应尽量接近最终导出稿。
- 在线预览与最终 `Excel` 导出必须使用同一份报价数据快照。
- 在线预览与最终 `Excel` 导出必须遵循同一套模板规则、字段映射、税项顺序、金额汇总结构与展示规则。
- 在线预览与最终导出文件应保持展示结果一致，避免出现字段缺失、顺序不一致或明显版式差异。
- 用户关闭 `在线预览` 返回导出页后，当前导出配置不保留，系统恢复上述默认值。
- 页面底部按钮：
  - `取消`
  - `导出`
- 在线预览页提供 `打印` 入口；打印内容沿用当前在线预览排版结果。
- 导出动作必须写入操作日志。
- 仅当导出成功时，才在 `报价历程` 中新增导出摘要记录。
- 导出失败时，不写入 `报价历程`，但可写入后台 `操作日志`，并标记导出结果为 `失败`。
- 用户选择中文、日文或英文作为导出语言后，系统应按所选语言生成对应的预览与导出内容。
- 若导出所需文案在目标语言下缺少翻译，系统统一回退显示中文，不展示内部 key。
- 若导出字段值为空，系统统一显示 `-`。
- 导出文件名统一采用：`项目名称_导出语言_报价单编号.文件后缀`。
- 文件名示例：
  - `高殿项目_中文_Q-20260503-0002.xlsx`
- 若当前报价自己的报价单资料存在缺失字段，系统仍允许导出与打印，缺失字段统一显示 `-`。
- 普通用户追加报价进入 `待审核` 期间，导出仍使用上一版已审核通过的有效金额，不包含该次待审核追加金额。
- 普通用户发起的追加若审核不通过，导出与打印仍继续使用上一版已审核通过的有效金额，不包含该次审核不通过的追加金额。
- 导出预览与导出文件当前统一按 `见积书` 稿面式结构展示，分为 `4` 段：
  - `项目分项与报价明细`
  - `金额汇总`
  - `交付及服务安排`
  - `报价前提与说明`
- 基本信息区域采用正式表格布局，按 `一行 2 组字段` 展示。
- 导出页基本信息区域不再展示 `金额口径` 与 `付款币种` 两行。
- 导出页中的 `报价明细` 不复用报价详情页的 `5` 列结构，独立采用 `8` 列核算表：
  - `序号`
  - `核算类别`
  - `摘要`
  - `主要内容/范围`
  - `数量`
  - `单位`
  - `单价`
  - `金额`
- 当前导出预览中的核算表按 `17` 条固定示例数据展示，覆盖：
  - `CG制作项`
  - `系统及云服务项`
  - `其他专项/折扣`
- 上述 `17` 条当前用于确定稿面式表格结构与列宽；正式导出仍应基于当前报价快照生成对应内容。
- 导出明细列宽按稿面式表格重新分配。
- 导出页中的 `金额汇总` 当前采用两列表格形式，仅保留：
  - `CG制作项小计`
  - `系统及云服务项小计`
  - `其他专项小计`
  - `契約税務調整費`
    - 右侧说明：`具体金额（CG制作+系统+其他专项累计10%金额）`
  - `合计(不含税净额)`

#### FE-007 系统管理

- 前端报价平台提供一级菜单 `系统管理`。
- 当前仅提供 `修改密码` 功能。
- 修改密码页面字段包括：
  - 当前密码
  - 新密码
  - 确认新密码
- 系统需校验：
  - 当前密码正确
  - 新密码符合密码规则
  - 确认新密码与新密码一致
  - 新密码不得与当前密码相同
  - 新密码长度为 `8-20` 位
  - 新密码不得包含中文或空格
- 修改成功后，新密码立即生效。

---

### 4. 验收标准

#### AC-FE-001 登录

- Given 用户已拥有有效账号且被分配为普通用户  
  When 用户访问前端报价平台并完成登录  
  Then 系统允许其进入前端平台，并仅展示有权限访问的功能

- Given 管理员或超级管理员使用有效账号访问前端报价平台  
  When 用户输入正确账号和密码并提交登录  
  Then 系统拒绝其进入前端，并提示 `当前账号无前台访问权限`

- Given 用户浏览器语言为 `ja-JP`  
  When 用户首次访问前端报价平台  
  Then 系统默认以日文显示界面文本

- Given 用户浏览器语言为 `en-US`  
  When 用户首次访问前端报价平台  
  Then 系统默认以英文显示界面文本

- Given 用户已进入前端报价平台  
  When 用户手动切换显示语言为中文、日文或英文  
  Then 当前平台界面文本应立即切换为对应语言显示

- Given 用户已在前端手动切换显示语言为日文  
  When 该用户退出前端并再次登录  
  Then 系统优先按该账号上次保存的日文偏好展示界面，而不再按浏览器语言重新覆盖

- Given 管理员已为用户配置初始密码  
  When 用户使用该初始密码首次登录成功  
  Then 系统应自动跳转至 `系统管理 - 修改密码` 页面，且用户完成首次密码修改后方可进入项目列表

- Given 用户在登录页或修改密码页输入包含中文、空格或长度不在 `8-20` 位范围内的密码  
  When 系统执行密码规则校验  
  Then 系统提示密码不符合规则，且不允许提交成功

- Given 普通用户已登录前端报价平台且连续无操作接近 `2 小时`  
  When 距离会话超时还剩 `5 分钟`  
  Then 系统弹出超时提醒，并允许用户通过继续操作延长会话

- Given 普通用户已登录前端报价平台且连续无操作满 `2 小时`  
  When 系统判定当前会话超时  
  Then 系统清除当前端会话并跳转至登录页

- Given 普通用户已主动退出登录或当前会话已失效  
  When 用户访问浏览器历史页面、书签页或通过浏览器回退访问前端受保护页面  
  Then 系统统一跳转至登录页，不继续展示原页面数据

- Given 管理员已重置某普通用户密码且该普通用户此前已在多个端登录  
  When 该普通用户在任一已登录端继续发起请求  
  Then 系统立即判定当前会话失效并跳转至登录页

- Given 普通用户密码已被管理员重置  
  When 用户使用重置后的初始密码重新登录成功  
  Then 系统再次强制跳转至 `系统管理 - 修改密码` 页面，且完成修改前不得进入项目列表

#### AC-FE-002 项目列表

- Given 普通用户已成功进入前端报价平台  
  When 用户进入项目列表页  
  Then 系统展示该用户有权限访问的项目列表，并提供创建项目入口

- Given 用户进入项目列表页  
  When 系统展示项目列表  
  Then 列表展示项目编号、项目名称、客户名称、项目负责人、项目状态、报价次数、创建时间、操作

- Given 普通用户进入项目列表页  
  When 用户填写项目名称、客户名称、项目负责人、备注等信息并提交创建  
  Then 系统成功创建项目

- Given 普通用户创建项目  
  When 项目创建成功  
  Then 项目创建人默认立即获得该项目的可见权限与报价权限

- Given 普通用户提交新建项目表单  
  When 项目创建成功并完成落库  
  Then 系统生成格式为 `P-YYYYMMDD-XXXX` 的全局唯一项目编号，并在前台项目列表中展示

- Given 普通用户提交新建项目表单  
  When 项目创建成功并完成落库  
  Then 该项目状态默认显示为 `进行中`

- Given 普通用户新建项目或编辑项目基础信息  
  When 接口业务失败或网络/系统异常  
  Then 系统不得展示保存成功结果，也不得关闭当前编辑界面，当前已填写内容需保留并允许用户重试

- Given 普通用户提交新建项目表单  
  When 项目创建失败  
  Then 系统不得生成项目记录或项目编号，且当前表单内容保留

- Given 有项目权限的普通用户进入项目列表页  
  When 用户点击 `编辑项目`  
  Then 系统展示仅包含 `项目基础信息` 的项目编辑表单

- Given 某项目状态为 `已完成` 或 `已取消`  
  When 普通用户在该项目上尝试点击 `新建报价`  
  Then 系统不允许继续创建新报价，并提示当前项目不可继续报价

- Given 普通用户已打开某项目下的报价页面  
  When 管理员在用户提交 `保存报价`、`提交审核` 或 `追加报价` 前，将该项目状态修改为 `已完成` 或 `已取消`  
  Then 后端在落库前拦截本次请求，并提示当前项目不可继续操作

- Given 某项目状态为 `已完成` 或 `已取消`  
  When 普通用户查看该项目下的历史报价  
  Then 系统仍允许查看、导出和打印历史报价，但不允许继续追加报价或打折

- Given 项目下已存在历史报价或任意状态报价  
  When 有项目权限的普通用户编辑项目基础信息并保存  
  Then 系统允许保存，且该变更仅影响项目当前展示与后续新建报价初始化，不反向覆盖已保存报价快照

- Given 普通报价人员被加入某项目可见人员名单且不是该项目创建人  
  When 用户进入该项目  
  Then 系统允许其查看并编辑项目基础信息、历史报价记录及该项目下报价

- Given 普通报价人员已被从某项目可见人员名单中移除  
  When 用户重新进入项目列表页或继续访问该项目相关页面  
  Then 系统不再向其展示该项目，且对该项目下报价的查看与编辑请求按无权限处理

#### AC-FE-003 报价计算器

- Given 用户已进入报价项目  
  When 用户进入报价计算器并完成产品/模块选择、参数填写、触发计算、保存报价  
  Then 系统按统一规则输出报价结果并成功保存当前报价数据

- Given 用户在项目列表中点击“新建报价”  
  When 系统打开报价计算器  
  Then 计算器以空白报价内容作为初始状态

- Given 用户进入报价计算器  
  When 页面完成加载  
  Then 页面展示左侧配置区和右侧报价预览区两部分

- Given 用户进入报价计算器  
  When 系统展示右侧报价预览区顶部主金额  
  Then 页面以 `合计 （不含税净额）` 作为顶部主金额文案展示，且不再显示 `建议报价` 和 `含税总价`

- Given 普通用户已进入某项目的新建报价计算器  
  When 后台管理员在该用户首次保存前更新并生效新的报价配置  
  Then 当前新建会话的金额预览、首次保存与提交审核仍沿用用户进入计算器时锁定的配置版本，不受中途新配置影响

- Given 普通用户已进入某项目的新建报价计算器，且当前会话锁定的 `config_version_id` 与系统当前最新生效的 `config_version_id` 不一致  
  When 用户点击 `保存报价`  
  Then 系统强提示：`报价配置已更新，建议刷新页面后按最新配置重新确认金额。`

- Given 用户进入报价计算器  
  When 页面展示配置区  
  Then 配置区提供楼宇、专有部、色彩切换、共用部、办公室、动画、平面家具摆放、系统收费八个模块

- Given 用户进入楼宇模块中的 `项目场地条件` 区域  
  When 系统展示场地条件参数  
  Then 系统将 `占地外` 与 `地面高差` 作为同级参数展示，且 `占地外` 下包含 `地铁站` 与 `红绿灯`

- Given 用户查看楼宇模块中的大楼实例参数或项目场地条件参数  
  When 参数为数量输入型单个参数或参数为单选项  
  Then 数量输入型单个参数应在参数名称后提供 hover 示例说明入口，而单选项应在用户悬停具体选项时展示对应的示例说明或示例图片

- Given 用户尝试删除大楼实例或其他模块产品实例  
  When 用户点击删除操作  
  Then 系统弹出二次确认提示；用户确认后立即删除该实例并刷新右侧报价预览，且不提供撤销入口

- Given 用户完成报价填写  
  When 用户点击 `保存报价`  
  Then 系统保存当前报价记录，并将该报价状态标记为 `待提交审核`

- Given 用户进入某条状态为 `待提交审核` 的报价详情页  
  When 系统展示头部操作区  
  Then 页面在 `导出` 按钮右侧展示 `提交审核` 按钮

- Given 用户在某一已启用模块中存在必填项未完成  
  When 用户点击 `保存报价` 或 `提交审核`  
  Then 系统阻止继续保存或提交，并明确提示对应模块与缺失字段

- Given 用户保存报价时楼宇模块总价低于 `500,000 日元`  
  When 系统执行保存前校验  
  Then 系统弹出二次确认提示，并在确认后按最低价 `500,000 日元` 保存

#### AC-FE-004 报价详情

- Given 用户在历史报价记录中点击 `查看`  
  When 系统展示报价详情页  
  Then 页面采用左侧 `报价详情`、右侧 `报价历程` 的双栏布局

- Given 用户进入某条报价的详情页面  
  When 系统展示报价历程  
  Then 页面展示创建、修改、提交审核、审核、追加报价、打折、导出等关键操作记录

- Given 用户进入某条报价的详情页面  
  When 系统展示详情页主体  
  Then 页面展示 `报价明细`、`金额汇总`、追加报价明细和打折明细，其中报价明细为 `序号 / 分类 / 分项 / 主要内容 / 金额` 五列结构，金额汇总展示 `CG制作项小计 / 系统及云服务项小计 / 其他专项小计 / 契約税務調整費 / 合计 （不含税净额）`

- Given 用户进入某条包含追加报价或打折记录的报价详情页面  
  When 系统展示追加报价明细或打折明细  
  Then 页面需明确展示实际所选模块，且说明追加或打折金额仅基于该模块中的 `CG制作费用` 计算，不包含该模块中的 `系统及云服务项`、`其他专项`、税项或其他模块金额

- Given 用户进入某条报价的详情页面  
  When 系统展示报价明细表格  
  Then 页面仅展示 `序号 / 分类 / 分项 / 主要内容 / 金额` 五列，且不再展示 `备注` 列

- Given 用户进入某条报价的详情页面  
  When 系统展示金额汇总区域  
  Then 页面展示 `CG制作项小计 / 系统及云服务项小计 / 其他专项小计 / 契約税務調整費 / 合计 （不含税净额）`

#### AC-FE-005 报价单资料

- Given 用户在某项目下新建报价  
  When 系统初始化当前报价的报价单资料  
  Then 系统自动带入 `报价编号`、`报价日期`、`项目名称`、`客户名称` 四个只读字段，并生成当前报价单的报价单资料快照

- Given 后台已维护统一税项配置  
  When 用户在任意项目下新建报价  
  Then 系统按后台当前生效的统一税项规则生成当前报价的税项快照，且税项不由项目带入

- Given 用户在某项目下新建报价  
  When 用户进入 `报价单资料` 页面  
  Then 除 `报价编号`、`报价日期`、`项目名称`、`客户名称` 四个只读字段外，其余字段为空，允许用户后续手动补充

- Given 用户进入某条报价的详情页面  
  When 用户点击 `报价单资料` 入口  
  Then 系统进入当前报价对应的报价单资料页面，并对 `报价编号`、`报价日期`、`项目名称`、`客户名称` 设为只读

- Given 用户修改当前报价的报价单资料  
  When 用户点击 `保存`  
  Then 系统仅在保存成功后更新当前报价自己的报价单资料快照

- Given 用户修改当前报价的报价单资料后尚未保存  
  When 用户尝试离开报价单资料页面  
  Then 系统弹出二次确认，提示当前修改尚未保存

- Given 当前报价单资料保存失败  
  When 系统返回保存失败结果  
  Then 系统保留当前输入内容，不关闭当前页面，并提示保存失败

- Given 用户发起导出  
  When 系统读取报价单资料  
  Then 系统读取当前报价最近一次保存成功的报价单资料快照

#### AC-FE-006 导出

- Given 用户进入某条报价的详情页面  
  When 用户点击 `导出` 入口  
  Then 系统进入独立导出页面，并提供导出语言、导出格式两类配置项

- Given 用户进入导出页面  
  When 系统展示导出格式选项  
  Then 页面仅提供 `Excel` 作为文件格式，不再展示 `PDF`

- Given 用户在导出页面配置导出参数  
  When 用户选择中文、日文或英文作为导出语言  
  Then 系统按所选语言生成对应的预览与导出内容

- Given 用户完成导出  
  When 系统生成最终文件  
  Then 导出文件名应采用 `项目名称_导出语言_报价单编号.文件后缀` 的统一格式

- Given 用户在导出页面切换导出语言  
  When 系统刷新预览区域  
  Then 预览语言仅跟随导出语言切换，与当前系统页面语言无关

- Given 用户已在导出页面选择了导出语言  
  When 用户切换系统页面语言  
  Then 当前已选择的导出语言保持不变，预览语言仍仅跟随导出语言

- Given 用户完成导出配置  
  When 系统展示在线预览  
  Then 预览内容以 `见积书` 稿面式预览方式展示，并与最终导出内容保持一致

- Given 用户进入导出页面  
  When 系统展示导出预览主体  
  Then 预览内容按 `项目分项与报价明细 / 金额汇总 / 交付及服务安排 / 报价前提与说明` 四段结构展示，且基本信息区域采用一行 2 组字段的正式表格布局，并且不展示 `金额口径` 与 `付款币种`

- Given 用户进入导出页面  
  When 系统展示导出页报价明细  
  Then 导出页报价明细不复用报价详情的五列结构，而采用 `序号 / 核算类别 / 摘要 / 主要内容/范围 / 数量 / 单位 / 单价 / 金额` 八列核算表

- Given 用户进入导出页面  
  When 系统展示导出页金额汇总  
  Then 页面采用两列表格形式，仅展示 `CG制作项小计 / 系统及云服务项小计 / 其他专项小计 / 契約税務調整費 / 合计(不含税净额)`，且 `契約税務調整費` 右侧展示 `具体金额（CG制作+系统+其他专项累计10%金额）`

- Given 导出预览或 Excel 导出中存在缺少翻译的文案  
  When 系统生成预览或导出内容  
  Then 系统统一回退显示中文，不展示内部 key

- Given 导出预览或 Excel 导出中存在空字段  
  When 系统生成预览或导出内容  
  Then 系统统一显示 `-`

- Given 用户关闭 `在线预览` 返回导出页面  
  When 系统重新展示导出配置  
  Then 导出配置恢复默认值，不保留关闭预览前的临时选择

- Given 用户在报价计算器中执行 `保存报价`  
  When 接口业务失败或网络/系统异常  
  Then 系统不得展示保存成功结果，当前编辑内容需保留，并提示用户本次保存未完成、可重试

- Given 用户在报价详情中执行 `提交审核`  
  When 接口业务失败或网络/系统异常  
  Then 当前报价状态保持原状态，不进入 `待审核`，并提示用户提交审核失败

- Given 普通用户填写追加报价内容后提交  
  When 接口业务失败或网络/系统异常  
  Then 系统不得写入追加记录，当前报价状态保持原状态，且当前填写内容保留以便用户重试

- Given 用户对保存报价、提交审核、追加报价或导出执行提交操作  
  When 系统尚未返回结果  
  Then 当前按钮进入 `loading` 状态，并禁止重复点击

- Given 用户在导出页面执行导出  
  When 接口业务失败或网络/系统异常  
  Then 系统不得展示导出成功结果，不影响当前报价数据，当前导出页不关闭、当前导出配置保留，并提示用户导出失败、可重试

#### AC-FE-007 系统管理

- Given 普通用户已登录前端报价平台  
  When 用户查看一级菜单  
  Then 系统展示 `系统管理` 菜单，且菜单下当前仅包含 `修改密码`

- Given 用户在修改密码页提交表单  
  When 当前密码正确、新密码符合密码规则且两次输入一致  
  Then 系统成功修改密码，并使新密码立即生效
