From 88a31d5a960bd10f3799bc00f8aa24461567d06e Mon Sep 17 00:00:00 2001
From: shimai <shimai@example.com>
Date: Tue, 07 Apr 2026 15:23:43 +0800
Subject: [PATCH] Merge branch 'test/tony.cheng/260312' of http://120.79.193.119:9090/r/~chengmw/cloud-melody-front into test/shimai.huang/260309
---
openspec/changes/upgrade-homepage-layout/specs/homepage-layout/spec.md | 166 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 166 insertions(+), 0 deletions(-)
diff --git a/openspec/changes/upgrade-homepage-layout/specs/homepage-layout/spec.md b/openspec/changes/upgrade-homepage-layout/specs/homepage-layout/spec.md
new file mode 100644
index 0000000..82629a1
--- /dev/null
+++ b/openspec/changes/upgrade-homepage-layout/specs/homepage-layout/spec.md
@@ -0,0 +1,166 @@
+# Homepage Layout Specification
+
+## ADDED Requirements
+
+### Requirement: App Header Component
+系统 SHALL 在页面顶部显示蓝色背景的Header组件,包含系统名称、通知图标和调解员信息。
+
+#### Scenario: Header displays system name
+- **WHEN** 页面加载完成
+- **THEN** Header左侧显示"矛盾纠纷应用"系统名称
+
+#### Scenario: Header displays notification icon with badge
+- **WHEN** 存在未读通知消息
+- **THEN** Header右侧显示通知图标,图标右上角显示红色气泡,气泡内显示未读消息数量
+
+#### Scenario: Header displays mediator info from URL params
+- **WHEN** URL参数包含trueName、unit、roleName、avatar
+- **THEN** Header右侧显示调解员头像、姓名、"地址|角色"格式的信息
+
+#### Scenario: Header uses default avatar when param empty
+- **WHEN** URL参数avatar为空
+- **THEN** 使用系统默认头像图片
+
+#### Scenario: Notification popup on icon click
+- **WHEN** 用户点击通知图标
+- **THEN** 显示通知消息列表弹窗
+
+---
+
+### Requirement: Warning Alert Component
+系统 SHALL 在调解进度条下方显示预警提示消息条,支持多条消息查看。
+
+#### Scenario: Single warning message display
+- **WHEN** 预警消息API返回1条消息
+- **THEN** 预警条直接显示完整消息内容,背景为浅黄色
+
+#### Scenario: Multiple warning messages display
+- **WHEN** 预警消息API返回多条消息
+- **THEN** 预警条显示第一条消息 + "还有N条预警" + "查看更多"按钮
+
+#### Scenario: Warning modal on view more click
+- **WHEN** 用户点击"查看更多"按钮
+- **THEN** 弹出Modal显示全部预警消息列表
+
+#### Scenario: Warning API call
+- **WHEN** 页面加载且mediationId存在
+- **THEN** 调用 `/api/v1/mediation-timeline/v2/warning-notify-list/{mediation_id}` 获取预警数据
+
+---
+
+### Requirement: Party Info Card Component
+系统 SHALL 在调解分析面板右侧显示申请双方信息卡片。
+
+#### Scenario: Applicant info display
+- **WHEN** 当事人列表API返回申请方当事人数据
+- **THEN** 左侧显示申请人头像、姓名,上方显示情绪标签(如有)
+
+#### Scenario: Respondent info display
+- **WHEN** 当事人列表API返回被申请方当事人数据
+- **THEN** 右侧显示被申请人头像、公司名称,上方显示标签(如有)
+
+#### Scenario: VS separator display
+- **WHEN** 同时存在申请人和被申请人
+- **THEN** 中间显示VS分隔符图标
+
+#### Scenario: Emotion tag style
+- **WHEN** 当事人数据包含tag_name和tag_style
+- **THEN** 按tag_style渲染标签颜色(red=红色等)
+
+#### Scenario: Person list API call
+- **WHEN** 页面加载且caseId存在
+- **THEN** 调用 `/api/v1/mediation-timeline/v2/person-list/{case_id}` 获取当事人数据
+
+---
+
+### Requirement: Success Rate YoY Display
+系统 SHALL 在预计调解成功率组件中显示同比数据。
+
+#### Scenario: YoY rate from API field
+- **WHEN** timeline.mediation.yoy_success_rate存在
+- **THEN** 显示该值作为同比增长率(如+8%)
+
+#### Scenario: YoY rate calculation fallback
+- **WHEN** yoy_success_rate为空
+- **THEN** 计算 (success_rate - last_success_rate) * 100 作为同比增长率
+
+#### Scenario: YoY time display
+- **WHEN** timeline.mediation.yoy_before_hours存在
+- **THEN** 显示"较{yoy_before_hours}小时前"
+
+#### Scenario: YoY time default
+- **WHEN** yoy_before_hours为空
+- **THEN** 显示"较0小时前"
+
+---
+
+### Requirement: Negotiation Progress Component
+系统 SHALL 在调解分析面板右侧显示协商沟通进度组件。
+
+#### Scenario: Round count display
+- **WHEN** timeline.mediation.mediation_count存在
+- **THEN** 显示"第{mediation_count}轮"
+
+#### Scenario: Progress dots default count
+- **WHEN** 沟通次数 <= 流程节点总数
+- **THEN** 总次数 = 流程节点总数,已完成轮次显示蓝色,未完成显示灰色
+
+#### Scenario: Progress dots dynamic count
+- **WHEN** 沟通次数 > 流程节点总数 且 未到最后节点
+- **THEN** 总次数 = 沟通次数 + 1
+
+#### Scenario: Progress dots all complete
+- **WHEN** 已到达最后节点
+- **THEN** 全部点显示蓝色
+
+---
+
+### Requirement: AI Suggestion Card Component
+系统 SHALL 在诉求差距分析下方显示AI调解建议面板。
+
+#### Scenario: AI suggestion content display
+- **WHEN** 面板加载
+- **THEN** 显示AI调解建议内容(Mock数据),背景为浅蓝色
+
+#### Scenario: View detail button display
+- **WHEN** 面板加载
+- **THEN** 底部显示"查看详细策略建议"按钮
+
+#### Scenario: View detail button click
+- **WHEN** 用户点击"查看详细策略建议"按钮
+- **THEN** 显示提示消息"该功能正在升级中,敬请期待!"
+
+---
+
+### Requirement: Warning Notify API Service
+系统 SHALL 提供预警消息列表API服务方法。
+
+#### Scenario: Get warning notify list
+- **WHEN** 调用 getWarningNotifyList(mediationId)
+- **THEN** 发送GET请求到 `/api/v1/mediation-timeline/v2/warning-notify-list/{mediationId}`
+- **AND** 返回预警消息数组
+
+---
+
+### Requirement: Person List API Service
+系统 SHALL 提供当事人列表API服务方法。
+
+#### Scenario: Get person list
+- **WHEN** 调用 getPersonList(caseId)
+- **THEN** 发送GET请求到 `/api/v1/mediation-timeline/v2/person-list/{caseId}`
+- **AND** 返回当事人数组
+
+---
+
+## MODIFIED Requirements
+
+### Requirement: Mediation Data Board Layout
+系统 SHALL 将调解数据看板调整为左右两栏布局。
+
+#### Scenario: Left column content
+- **WHEN** 调解分析Tab激活
+- **THEN** 左列显示:诉求差距分析 + AI调解建议面板
+
+#### Scenario: Right column content
+- **WHEN** 调解分析Tab激活
+- **THEN** 右列显示:申请双方信息 + 预计调解成功率(含同比) + 协商沟通进度
--
Gitblit v1.8.0