# 数字债权服务系统首页设计文档 ## 概览 数字债权服务系统首页设计旨在创建一个现代化、响应式的业务仪表板,替换原有的若依框架通用首页。新首页将根据用户角色提供个性化的业务统计、快速操作入口和系统信息展示,突出数字债权服务平台的专业性和易用性。 ## 架构 ### 组件架构 ``` HomePage (主容器) ├── HeaderSection (头部区域) │ ├── PlatformTitle (平台标题) │ ├── SystemVersion (系统版本) │ └── UserWelcome (用户欢迎信息) ├── StatisticsSection (统计面板区域) │ ├── RoleBasedStats (角色相关统计) │ ├── BusinessMetrics (业务指标) │ └── ChartComponents (图表组件) ├── QuickActionsSection (快速操作区域) │ ├── RoleBasedActions (角色相关操作) │ └── CommonActions (通用操作) ├── NotificationsSection (通知消息区域) │ ├── AlertMessages (告警消息) │ ├── BusinessUpdates (业务更新) │ └── SystemNotices (系统通知) └── FooterSection (底部区域) ├── TechnicalInfo (技术信息) ├── ContactInfo (联系信息) └── ResourceLinks (资源链接) ``` ### 数据流架构 - **用户认证服务**: 获取当前用户角色和权限信息 - **业务统计服务**: 根据用户角色获取相应的业务数据 - **通知服务**: 获取用户相关的消息和提醒 - **权限控制服务**: 控制功能模块的显示和访问权限 ## 组件和接口 ### 核心组件 #### 1. HeaderSection 组件 ```javascript // Props 定义 { userInfo: { id: String, name: String, role: String, company: String, lastLoginTime: Date }, systemVersion: String, platformTitle: String } ``` #### 2. StatisticsSection 组件 ```javascript // Props 定义 { userRole: String, statisticsData: Object // 根据角色包含不同的统计数据 } ``` #### 3. QuickActionsSection 组件 ```javascript // Props 定义 { userRole: String, permissions: Array, actions: Array // QuickAction 对象数组 } // QuickAction 对象结构 { id: String, title: String, description: String, icon: String, route: String, permission: String } ``` ### API 接口 #### 1. 用户信息接口(使用现有接口) ```javascript GET /system/user/profile Response: { code: Number, data: { // 现有用户信息结构,需要适配到首页需求 userId: Number, userName: String, nickName: String, // 其他现有字段... }, msg: String } ``` #### 2. 业务统计接口 ```javascript GET /api/dashboard/statistics?role={userRole} Response: { code: Number, data: Object, // 根据角色返回不同的统计数据结构 message: String } ``` #### 3. 通知消息接口 ```javascript GET /api/notifications/recent?limit=10 Response: { code: Number, data: Array, // Notification 对象数组 message: String } ``` ## 数据模型 ### 用户角色常量 ```javascript const UserRole = { SECURITY_COMPANY: 'security_company', CLIENT_COMPANY: 'client_company', FINANCIAL_INSTITUTION: 'financial_institution', ADMINISTRATOR: 'administrator' } ``` ### 统计数据模型 ```javascript // 安保公司统计数据 { totalCredits: Number, pendingContracts: Number, totalAmount: Number, financingApplications: Number, recentActivities: Array } // 甲方单位统计数据 { totalContracts: Number, pendingPayments: Number, paidAmount: Number, upcomingPayments: Array } // 金融机构统计数据 { pendingApplications: Number, approvedAmount: Number, riskDistribution: Array, marketIndicators: Array } // 管理员统计数据 { systemHealth: Object, userActivity: Object, transactionVolume: Object, securityEvents: Array } ``` ## 正确性属性 *属性是一个特征或行为,应该在系统的所有有效执行中保持为真——本质上,是关于系统应该做什么的正式声明。属性作为人类可读规范和机器可验证正确性保证之间的桥梁。* ### 属性 1: 角色权限一致性 *对于任何*用户和首页显示内容,用户看到的所有功能模块和数据统计都应该与其角色权限完全匹配 **验证: 需求 7.1, 7.2, 7.4** ### 属性 2: 数据访问边界 *对于任何*用户角色和数据查询请求,返回的业务统计数据应该仅包含该用户有权访问的业务范围 **验证: 需求 2.1, 3.1, 4.1, 7.4** ### 属性 3: 响应式布局适配 *对于任何*屏幕尺寸和设备类型,首页布局应该自动调整并保持所有核心功能的可访问性 **验证: 需求 6.1, 6.4** ### 属性 4: 实时数据同步 *对于任何*用户权限变更操作,首页显示的功能模块和数据范围应该立即反映最新的权限状态 **验证: 需求 7.2** ### 属性 5: 安全访问控制 *对于任何*未授权访问尝试,系统应该阻止访问并记录相应的安全日志 **验证: 需求 7.3, 7.5** ### 属性 6: 性能加载要求 *对于任何*首页访问请求,核心内容应该在3秒内完成加载并显示给用户 **验证: 需求 6.5** ### 属性 7: 角色功能入口一致性 *对于任何*用户角色,显示的快速操作入口和功能模块应该与该角色的业务职责完全匹配 **验证: 需求 2.3, 3.3, 4.3, 5.3** ### 属性 8: 响应式交互反馈 *对于任何*用户交互操作,系统应该提供相应的视觉反馈和状态提示 **验证: 需求 6.2** ### 属性 9: 数据范围权限控制 *对于任何*用户查看统计数据的请求,返回的数据应该严格限制在该用户的权限范围内 **验证: 需求 2.1, 3.1, 4.1, 5.1, 7.4** ### 属性 10: 权限变更实时同步 *对于任何*用户权限变更事件,首页显示的功能模块和数据范围应该立即反映最新状态 **验证: 需求 7.2** ## 错误处理 ### 1. 数据加载失败 - **场景**: API 请求超时或返回错误 - **处理**: 显示友好的错误提示,提供重试按钮 - **降级**: 显示缓存数据或默认占位内容 ### 2. 权限验证失败 - **场景**: 用户权限不足或会话过期 - **处理**: 重定向到登录页面或显示权限不足提示 - **日志**: 记录安全事件日志 ### 3. 网络连接异常 - **场景**: 网络中断或服务不可用 - **处理**: 显示离线模式提示,启用本地缓存 - **恢复**: 网络恢复后自动重新加载数据 ### 4. 数据格式异常 - **场景**: 后端返回的数据格式不符合预期 - **处理**: 使用数据验证和默认值填充 - **监控**: 发送异常报告给开发团队 ## 测试策略 ### 单元测试 - 组件渲染测试:验证各个组件能够正确渲染 - 数据处理测试:验证统计数据的计算和格式化 - 权限控制测试:验证基于角色的内容显示逻辑 - API 调用测试:验证接口调用和错误处理 ### 集成测试 - 用户角色切换测试:验证不同角色登录后的页面内容 - 数据流测试:验证从 API 获取数据到页面显示的完整流程 - 权限验证测试:验证权限变更后页面内容的实时更新 - 响应式布局测试:验证在不同设备上的显示效果 ### 端到端测试 - 用户登录流程测试:验证从登录到首页显示的完整用户体验 - 快速操作测试:验证快速操作按钮的跳转和功能 - 通知消息测试:验证消息提醒的显示和交互 - 性能测试:验证页面加载时间和响应速度 ### 属性基础测试 使用 Vitest 和 Vue Test Utils 进行属性基础测试,每个测试运行最少 100 次迭代以确保属性在各种输入下都成立。每个属性基础测试必须使用注释明确引用设计文档中的正确性属性。