676 lines
21 KiB
Markdown
676 lines
21 KiB
Markdown
# 毫秒数仿(MilliSim)详细需求文档
|
||
|
||
> 版本:v1.0
|
||
> 更新日期:2026-06-19
|
||
> 状态:已确认,可进入设计开发阶段
|
||
|
||
---
|
||
|
||
## 0. 技术栈与项目约束
|
||
|
||
### 0.1 前端技术栈
|
||
| 项 | 选型 |
|
||
|----|------|
|
||
| 框架 | Vue 3 + TypeScript |
|
||
| 构建工具 | Vite |
|
||
| UI 框架 | Element Plus(浅色模式定制) |
|
||
| 状态管理 | Pinia |
|
||
| 路由 | Vue Router 4 |
|
||
| HTTP | Axios |
|
||
| 图表 | ECharts 5 |
|
||
| 富文本 | WangEditor 5 |
|
||
| 视频播放 | Video.js |
|
||
| 图标 | 全局 SVG 图标(iconify 或本地 SVG sprite) |
|
||
| 国际化 | 仅中文,不引入 i18n |
|
||
|
||
### 0.2 后端技术栈
|
||
| 项 | 选型 |
|
||
|----|------|
|
||
| 框架 | .NET Core 10(ASP.NET Core Web API) |
|
||
| ORM | Entity Framework Core 10 + Pomelo MySQL Provider |
|
||
| 数据库 | MySQL 5.7 |
|
||
| 认证 | JWT Bearer Token(7天有效期) |
|
||
| 密码哈希 | BCrypt.Net-Next |
|
||
| 日志 | Serilog(文件 + 数据库) |
|
||
| 对象存储 | 腾讯云 COS SDK + 本地文件系统(双模式动态切换) |
|
||
| 验证码 | Lazy.Captcha.Net |
|
||
|
||
### 0.3 数据库连接
|
||
```
|
||
Server=sh-cdb-67f2jqfa.sql.tencentcdb.com;Port=27319;Database=millisim4;Uid=unity;Pwd=unity@1478;CharSet=utf8mb4;
|
||
```
|
||
|
||
### 0.4 部署方式
|
||
- 前后端均部署于 IIS
|
||
- 前端构建为静态文件,IIS 站点托管
|
||
- 后端发布为 DLL,IIS 应用程序池托管(ASP.NET Core Module V2)
|
||
- 静态资源由 IIS 直接响应,API 请求反代至 Kestrel
|
||
|
||
### 0.5 全局设计规范
|
||
- **浅色模式**:全局浅色背景,科技蓝主色调(#1677FF / #0958D9 渐变)
|
||
- **SVG 图标**:所有交互元素、导航、状态指示均使用 SVG 图标,禁止使用字体图标
|
||
- **设计感**:圆角卡片、柔和阴影、渐变点缀、微交互动画、留白克制
|
||
- **全响应式**:前台完整响应式(PC / 平板 / 手机),管理后台以 PC 为主
|
||
- **字体**:系统字体栈,中文优先 `"PingFang SC", "Microsoft YaHei", sans-serif`
|
||
|
||
---
|
||
|
||
## 1. 产品定位
|
||
|
||
一站式虚拟仿真项目资产库 + 商业化展示平台 + 精细化权限管控系统。
|
||
|
||
面向虚拟仿真行业,提供项目展示、在线体验、客户授权、销售管理、内容运营的一体化解决方案。
|
||
|
||
---
|
||
|
||
## 2. 用户角色与权限
|
||
|
||
### 2.1 角色定义
|
||
|
||
| 角色 | 说明 | 数据范围 |
|
||
|------|------|----------|
|
||
| 访客 | 浏览公开项目,无需登录 | 公开项目 |
|
||
| 客户 | 浏览 + 授权体验 + 收藏 + 个人中心 | 本人数据 |
|
||
| 销售 | 客户管理 + 授权管理 + 咨询消息 | 仅本人创建的客户 |
|
||
| 产品经理 | 项目管理 + 内容管理 + 无需授权即可体验 | 全部项目 |
|
||
| 管理员 | 全部权限 | 全部数据 |
|
||
|
||
### 2.2 权限矩阵
|
||
|
||
| 功能模块 | 访客 | 客户 | 销售 | 产品经理 | 管理员 |
|
||
|----------|:----:|:----:|:----:|:--------:|:------:|
|
||
| 前台浏览项目 | ✓ | ✓ | ✓ | ✓ | ✓ |
|
||
| 在线体验 WebGL | ✗ | 需授权 | ✓ | ✓ | ✓ |
|
||
| 收藏 / 个人中心 | ✗ | ✓ | ✓ | ✓ | ✓ |
|
||
| 管理后台访问 | ✗ | ✗ | ✓ | ✓ | ✓ |
|
||
| 项目管理 | ✗ | ✗ | ✗ | ✓ | ✓ |
|
||
| 客户管理 | ✗ | ✗ | 仅本人 | ✗ | ✓ |
|
||
| 授权管理 | ✗ | ✗ | 仅本人客户 | ✗ | ✓ |
|
||
| 员工管理 | ✗ | ✗ | ✗ | ✗ | ✓ |
|
||
| 系统设置 | ✗ | ✗ | ✗ | ✗ | ✓ |
|
||
|
||
### 2.3 销售数据隔离规则
|
||
- 销售仅能查看、编辑、授权**自己创建**的客户
|
||
- 销售之间客户数据完全隔离
|
||
- 管理员可查看全部客户数据
|
||
- 客户创建时自动绑定创建人(销售)ID
|
||
|
||
---
|
||
|
||
## 3. 前台功能详细需求
|
||
|
||
### 3.1 首页
|
||
|
||
#### 3.1.1 轮播 Banner
|
||
- 支持后台配置,可上传图片 / 设置标题 / 跳转链接 / 排序
|
||
- 默认科技风格背景图
|
||
- 自动轮播(5秒间隔),支持手动切换
|
||
- 响应式适配(PC 1920×600 / 平板 1024×400 / 手机 750×360)
|
||
|
||
#### 3.1.2 核心优势展示
|
||
- 4 个优势卡片,图标 + 标题 + 描述
|
||
- 后台可配置内容
|
||
|
||
#### 3.1.3 精选项目推荐
|
||
- 展示 8 个精选项目(后台标记为推荐)
|
||
- 纵向网格卡片布局(PC 4列 / 平板 2列 / 手机 1列)
|
||
|
||
#### 3.1.4 分类快捷导航
|
||
- 展示所有启用的项目分类
|
||
- 图标 + 名称,点击跳转项目中心并筛选
|
||
|
||
#### 3.1.5 合作伙伴展示
|
||
- 可控制显隐(后台开关)
|
||
- Logo 滚动展示
|
||
|
||
#### 3.1.6 CTA 引导区
|
||
- 引导注册 / 联系咨询
|
||
- 渐变背景 + 行动按钮
|
||
|
||
### 3.2 项目中心
|
||
|
||
#### 3.2.1 筛选区
|
||
- **关键词搜索**:SQL LIKE 查询项目名称和描述
|
||
- **分类筛选**:单选下拉
|
||
- **平台筛选**:多选(WebGL / Android / Windows / Mac / VR)
|
||
- **排序**:最新发布 / 最多浏览 / 最多体验 / 最多收藏
|
||
|
||
#### 3.2.2 项目卡片列表
|
||
- **纵向网格卡片**布局
|
||
- 卡片内容:封面图、名称、分类标签、平台标签、浏览数、体验数、收藏数、收藏按钮
|
||
- 悬浮效果:卡片上浮 + 阴影增强 + 封面缩放
|
||
- 响应式:PC 4列 / 平板 2列 / 手机 1列
|
||
|
||
#### 3.2.3 分页
|
||
- 默认每页 12 条
|
||
- 页码展示 + 上一页 / 下一页
|
||
|
||
### 3.3 项目详情
|
||
|
||
#### 3.3.1 基础信息
|
||
- 项目名称、分类、平台标签、浏览数、体验数、收藏数
|
||
- 发布时间、更新时间
|
||
- 特性标签展示
|
||
|
||
#### 3.3.2 视频播放
|
||
- **格式支持**:MP4 + WebM
|
||
- **防盗链**:代理模式隐藏 COS URL,Blob URL 加载
|
||
- **水印**:动态水印(用户名 + 时间戳)
|
||
- **封面**:支持设置视频封面图
|
||
- **控件**:播放/暂停、进度条、音量、全屏、倍速
|
||
- **快捷键**:空格暂停、左右快进、上下音量、F 全屏
|
||
|
||
#### 3.3.3 截图画廊
|
||
- 缩略图列表 + 点击放大查看
|
||
- 支持左右切换、键盘导航
|
||
|
||
#### 3.3.4 富文本详情
|
||
- WangEditor 渲染,支持图片、视频、代码块、表格
|
||
|
||
#### 3.3.5 交互操作
|
||
- **收藏 / 取消收藏**:登录后可用
|
||
- **分享**:复制链接 + 二维码
|
||
- **在线运行**:WebGL 项目展示,需授权
|
||
- **下载**:安卓 APK / 桌面端压缩包,需授权
|
||
- **唤醒**:桌面端协议唤醒(custom://protocol)
|
||
|
||
#### 3.3.6 相关项目推荐
|
||
- 同分类下取 4 个项目(排除当前)
|
||
- 纵向网格卡片
|
||
|
||
### 3.4 WebGL 在线运行
|
||
|
||
#### 3.4.1 运行环境
|
||
- 全屏 iframe 加载 Unity WebGL 项目
|
||
- 加载进度动画(百分比 + 旋转图标)
|
||
- 运行计时显示(右上角)
|
||
|
||
#### 3.4.2 安全措施
|
||
- **动态水印**:半透明用户名 + 时间戳,随机位置
|
||
- **禁用右键**:contextmenu 事件拦截
|
||
- **防盗链**:HTML/JSON 代理模式改写资源引用
|
||
|
||
#### 3.4.3 自适应
|
||
- 代理注入 CSS,解决 Unity 固定分辨率适配问题
|
||
- 全屏切换支持
|
||
|
||
#### 3.4.4 限制策略
|
||
- **不限制**运行时长和并发数
|
||
- 记录每次体验日志(用户、项目、开始时间、时长)
|
||
|
||
### 3.5 个人中心
|
||
|
||
#### 3.5.1 个人信息
|
||
- 头像、昵称、手机号、邮箱编辑
|
||
- 用户名只读
|
||
|
||
#### 3.5.2 我的收藏
|
||
- 收藏项目列表,支持取消收藏
|
||
- 纵向网格卡片展示
|
||
|
||
#### 3.5.3 体验记录
|
||
- 体验历史列表(项目名、体验时长、体验时间)
|
||
- 分页展示
|
||
|
||
#### 3.5.4 修改密码
|
||
- 需验证旧密码
|
||
- 新密码强度校验(8位以上,含字母数字)
|
||
|
||
### 3.6 其他页面
|
||
|
||
| 页面 | 说明 |
|
||
|------|------|
|
||
| 用户登录 | 账号密码 + 图形验证码 |
|
||
| 技术能力 | 富文本静态页,展示技术栈 |
|
||
| 关于我们 | 公司介绍,富文本 |
|
||
| 联系咨询 | 表单提交(姓名、联系方式、需求描述) |
|
||
| 隐私政策 | 静态文本 |
|
||
| 服务条款 | 静态文本 |
|
||
|
||
---
|
||
|
||
## 4. 管理后台功能详细需求
|
||
|
||
### 4.1 工作台
|
||
|
||
#### 4.1.1 统计卡片
|
||
- 项目总数、客户总数、今日访问量、有效授权数
|
||
- 卡片含图标 + 数值 + 同比环比
|
||
|
||
#### 4.1.2 趋势图
|
||
- 访问 / 体验趋势折线图(近 7 天 / 30 天切换)
|
||
- ECharts 渲染
|
||
|
||
#### 4.1.3 分类分布
|
||
- 饼图展示项目分类分布
|
||
|
||
#### 4.1.4 其他面板
|
||
- 最近动态(操作日志摘要,10 条)
|
||
- 热门项目 Top 5
|
||
- 未读消息数 + 快捷查看
|
||
|
||
### 4.2 项目管理
|
||
|
||
#### 4.2.1 项目列表
|
||
- 搜索(名称)+ 筛选(分类 / 平台 / 状态)
|
||
- 列表展示:封面、名称、分类、平台、状态、浏览数、体验数、操作
|
||
- 状态切换:发布 / 下架(开关)
|
||
- 操作:编辑、删除、资源包管理
|
||
|
||
#### 4.2.2 项目编辑
|
||
- **基础信息**:名称、分类、平台(多选)、封面图、简介
|
||
- **特性标签**:多选关联
|
||
- **截图管理**:多图上传 + 拖拽排序
|
||
- **视频管理**:上传 MP4/WebM + 设置封面
|
||
- **富文本详情**:WangEditor 编辑
|
||
- **发布配置**:发布状态、发布时间、是否推荐、排序权重
|
||
|
||
#### 4.2.3 资源包管理
|
||
- **WebGL**:zip 上传自动解压部署到指定目录
|
||
- **Android**:APK 上传
|
||
- **桌面端**:压缩包上传(zip/rar)
|
||
- 每个资源包记录版本号、上传时间、文件大小
|
||
|
||
#### 4.2.4 编辑方式
|
||
- 弹窗快速编辑(基础字段)
|
||
- 独立页面完整编辑(所有字段)
|
||
|
||
### 4.3 客户管理
|
||
|
||
#### 4.3.1 客户列表
|
||
- 搜索(用户名 / 昵称 / 手机号)
|
||
- 筛选(创建人 / 授权状态)
|
||
- 列表:头像、用户名、昵称、联系方式、授权状态、到期时间、创建人、操作
|
||
|
||
#### 4.3.2 客户 CRUD
|
||
- **新增**:自动生成用户名(`user` + 6位随机数),默认密码 `123456`(BCrypt 哈希)
|
||
- **编辑**:昵称、手机号、邮箱、状态
|
||
- **删除**:软删除,关联数据级联处理
|
||
- **重置密码**:重置为默认密码
|
||
|
||
#### 4.3.3 授权管理
|
||
- **授权**:选择项目 + 天数(默认 365 天)
|
||
- **续期**:在原到期时间基础上增加天数
|
||
- **取消授权**:立即失效
|
||
- 授权记录可查看历史
|
||
|
||
### 4.4 授权管理
|
||
|
||
#### 4.4.1 授权记录
|
||
- 查看所有授权记录(客户、项目、授权人、开始时间、到期时间、状态)
|
||
- 按状态筛选(有效 / 已过期 / 已取消)
|
||
|
||
#### 4.4.2 批量授权
|
||
- 选择多个客户 + 多个项目
|
||
- 统一设置授权天数
|
||
|
||
### 4.5 员工管理(仅管理员)
|
||
|
||
#### 4.5.1 员工列表
|
||
- 搜索 + 筛选角色 / 状态
|
||
- 列表:头像、用户名、姓名、角色、状态、创建时间、操作
|
||
|
||
#### 4.5.2 员工 CRUD
|
||
- 新增:用户名 + 密码 + 角色 + 基本信息
|
||
- 编辑:基本信息 + 角色
|
||
- 启用 / 禁用
|
||
- 重置密码
|
||
|
||
### 4.6 系统设置
|
||
|
||
#### 4.6.1 基础配置
|
||
- 平台名称、标语、公司名称、联系方式、备案号
|
||
- 存储模式切换(COS / 本地)
|
||
|
||
#### 4.6.2 Logo 管理
|
||
- 5 个位置:前台顶部、前台页脚、浏览器图标、后台登录页、后台顶部
|
||
- 支持上传 SVG / PNG
|
||
|
||
#### 4.6.3 上传限制
|
||
| 类型 | 默认限制 |
|
||
|------|----------|
|
||
| 图片 | 5 MB |
|
||
| 视频 | 500 MB |
|
||
| 资源包 | 2 GB |
|
||
| 文档 | 20 MB |
|
||
|
||
#### 4.6.4 分类管理
|
||
- CRUD + 拖拽排序 + 图标上传(SVG)
|
||
- 字段:名称、图标、排序、状态、描述
|
||
|
||
#### 4.6.5 平台类型管理
|
||
- CRUD + 排序 + 图标
|
||
- 字段:名称、图标、排序、状态
|
||
|
||
#### 4.6.6 特性标签管理
|
||
- CRUD + 排序 + 图标
|
||
- 字段:名称、图标、排序、状态
|
||
|
||
#### 4.6.7 操作日志
|
||
- 记录所有后台操作(操作人、操作类型、模块、详情、IP、时间)
|
||
- 查询(按操作人 / 模块 / 时间范围)
|
||
- 清理(手动清理 + 自动清理配置,默认保留 90 天)
|
||
|
||
#### 4.6.8 数据备份
|
||
- **手动备份**:一键触发,生成 .sql 文件
|
||
- **自动备份**:定时任务(默认每日凌晨 2:00)
|
||
- **保留策略**:默认保留 30 天,可配置
|
||
- 备份记录列表:文件名、大小、类型(手动/自动)、创建时间
|
||
- 操作:下载、删除
|
||
|
||
### 4.7 内容管理
|
||
|
||
#### 4.7.1 轮播图管理
|
||
- CRUD + 图片上传 + 排序 + 跳转链接
|
||
- 字段:标题、图片、链接、排序、状态
|
||
|
||
#### 4.7.2 合作伙伴管理
|
||
- CRUD + Logo 上传 + 排序 + 显隐控制
|
||
|
||
#### 4.7.3 咨询消息管理
|
||
- 列表查看(姓名、联系方式、需求、提交时间、状态)
|
||
- 标记已读 / 未读
|
||
- 删除
|
||
|
||
### 4.8 唤醒协议对接
|
||
- 配置各终端(Windows / Mac)唤醒协议
|
||
- 字段:终端类型、协议前缀、协议参数模板、状态
|
||
|
||
---
|
||
|
||
## 5. 核心机制
|
||
|
||
### 5.1 存储双模式
|
||
|
||
| 模式 | 说明 | 使用场景 |
|
||
|------|------|----------|
|
||
| COS 模式 | 腾讯云 COS 对象存储 | 生产环境 |
|
||
| 本地模式 | 服务器本地文件系统 | 开发环境 |
|
||
|
||
- 通过系统设置动态切换
|
||
- 切换后新上传文件使用新模式,历史文件保持原模式
|
||
- 配置项:COS SecretId / SecretKey / Bucket / Region / 自定义域名
|
||
|
||
### 5.2 COS 资源访问策略
|
||
|
||
| 资源类型 | 访问方式 | 说明 |
|
||
|----------|----------|------|
|
||
| HTML / JSON | 代理模式 | 改写资源引用路径,隐藏真实 URL |
|
||
| 详情页视频 | 代理模式防盗链 | `?proxy=1` 参数,Blob URL 加载 |
|
||
| WebGL 内视频 | 302 重定向 | 签名 URL 临时跳转 |
|
||
| 下载文件 | 签名 URL + attachment 头 | 强制下载,不在线预览 |
|
||
| 其他文件 | 302 重定向 | 签名 URL 临时跳转 |
|
||
|
||
### 5.3 视频防盗链
|
||
- 代理模式隐藏 COS 真实 URL
|
||
- Blob URL 加载视频流
|
||
- Canvas 渲染(可选,增强防盗)
|
||
- 动态水印(用户名 + 时间戳)
|
||
|
||
### 5.4 WebGL 自适应
|
||
- 代理注入 CSS 脚本
|
||
- 解决 Unity 固定分辨率适配问题
|
||
- 全屏自适应 + 宽高比保持
|
||
|
||
### 5.5 认证授权
|
||
|
||
#### 5.5.1 JWT 认证
|
||
- Bearer Token 模式
|
||
- 有效期 7 天
|
||
- Token 中包含:UserId、Username、Role、CreateTime
|
||
- 刷新机制:过期前 1 天可刷新
|
||
|
||
#### 5.5.2 RBAC 权限
|
||
- 基于角色的权限控制
|
||
- 接口级权限校验(中间件)
|
||
- 数据级权限校验(销售数据隔离)
|
||
|
||
#### 5.5.3 密码安全
|
||
- BCrypt 哈希存储(cost factor = 12)
|
||
- 默认密码:`123456`
|
||
- 密码强度校验:8位以上,含字母 + 数字
|
||
|
||
### 5.6 通知系统
|
||
|
||
#### 5.6.1 通知类型
|
||
| 类型 | 触发场景 | 接收人 |
|
||
|------|----------|--------|
|
||
| 系统通知 | 系统公告、维护通知 | 全部用户 |
|
||
| 项目通知 | 新项目发布、项目更新 | 关注相关分类的用户 |
|
||
| 账号通知 | 密码重置、授权变更 | 当事用户 |
|
||
| 授权通知 | 授权即将到期、已到期 | 当事客户 + 创建销售 |
|
||
|
||
#### 5.6.2 推送机制
|
||
- **仅站内消息**:用户登录后在消息中心查看
|
||
- **轮询拉取**:前端每 30 秒轮询未读消息数
|
||
- 防重复同步机制:基于业务事件 ID 去重
|
||
|
||
---
|
||
|
||
## 6. 数据库设计概要
|
||
|
||
### 6.1 核心表结构
|
||
|
||
```
|
||
users -- 用户表(员工 + 客户)
|
||
roles -- 角色表
|
||
projects -- 项目表
|
||
project_categories -- 项目分类表
|
||
project_platforms -- 平台类型表
|
||
project_tags -- 特性标签表
|
||
project_tag_relations-- 项目标签关联表
|
||
project_screenshots -- 项目截图表
|
||
project_packages -- 项目资源包表
|
||
favorites -- 收藏表
|
||
experience_logs -- 体验记录表
|
||
authorizations -- 授权记录表
|
||
banners -- 轮播图表
|
||
partners -- 合作伙伴表
|
||
consultations -- 咨询消息表
|
||
notifications -- 通知表
|
||
notification_reads -- 通知已读记录表
|
||
operation_logs -- 操作日志表
|
||
system_settings -- 系统设置表
|
||
backups -- 备份记录表
|
||
wake_protocols -- 唤醒协议配置表
|
||
```
|
||
|
||
### 6.2 关键字段说明
|
||
|
||
#### users 表
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| Id | bigint PK | 主键 |
|
||
| Username | varchar(50) | 用户名(唯一) |
|
||
| Password | varchar(255) | BCrypt 哈希 |
|
||
| Nickname | varchar(50) | 昵称 |
|
||
| Avatar | varchar(500) | 头像 URL |
|
||
| Phone | varchar(20) | 手机号 |
|
||
| Email | varchar(100) | 邮箱 |
|
||
| Role | tinyint | 角色:0访客 1客户 2销售 3产品经理 4管理员 |
|
||
| Status | tinyint | 状态:0禁用 1启用 |
|
||
| CreatedBy | bigint? | 创建人 ID(销售创建客户时记录) |
|
||
| CreatedAt | datetime | 创建时间 |
|
||
| UpdatedAt | datetime | 更新时间 |
|
||
| IsDeleted | bit | 软删除标记 |
|
||
|
||
#### projects 表
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| Id | bigint PK | 主键 |
|
||
| Name | varchar(100) | 项目名称 |
|
||
| CategoryId | bigint | 分类 ID |
|
||
| CoverImage | varchar(500) | 封面图 URL |
|
||
| VideoUrl | varchar(500) | 视频 URL |
|
||
| VideoCover | varchar(500) | 视频封面 |
|
||
| Description | text | 简介 |
|
||
| Content | longtext | 富文本详情 |
|
||
| Platforms | varchar(200) | 平台标签(逗号分隔) |
|
||
| Status | tinyint | 0下架 1发布 |
|
||
| IsFeatured | bit | 是否推荐 |
|
||
| SortOrder | int | 排序权重 |
|
||
| ViewCount | int | 浏览数 |
|
||
| ExperienceCount | int | 体验数 |
|
||
| FavoriteCount | int | 收藏数 |
|
||
| PublishedAt | datetime? | 发布时间 |
|
||
| CreatedAt | datetime | 创建时间 |
|
||
| UpdatedAt | datetime | 更新时间 |
|
||
| IsDeleted | bit | 软删除 |
|
||
|
||
#### authorizations 表
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| Id | bigint PK | 主键 |
|
||
| UserId | bigint | 客户 ID |
|
||
| ProjectId | bigint | 项目 ID |
|
||
| AuthorizedBy | bigint | 授权人 ID(销售/管理员) |
|
||
| StartTime | datetime | 开始时间 |
|
||
| EndTime | datetime | 到期时间 |
|
||
| Status | tinyint | 0已取消 1有效 2已过期 |
|
||
| CreatedAt | datetime | 创建时间 |
|
||
|
||
---
|
||
|
||
## 7. API 设计规范
|
||
|
||
### 7.1 RESTful 规范
|
||
- 基础路径:`/api`
|
||
- 资源命名:复数形式(`/api/projects`、`/api/users`)
|
||
- HTTP 方法:GET 查询、POST 新增、PUT 更新、DELETE 删除
|
||
- 分页参数:`pageIndex`、`pageSize`,返回 `total`、`items`
|
||
|
||
### 7.2 统一响应格式
|
||
```json
|
||
{
|
||
"code": 200,
|
||
"message": "success",
|
||
"data": { }
|
||
}
|
||
```
|
||
|
||
### 7.3 认证
|
||
- Header:`Authorization: Bearer {token}`
|
||
- 未授权返回 401,无权限返回 403
|
||
|
||
---
|
||
|
||
## 8. UI/UX 设计规范
|
||
|
||
### 8.1 色彩系统
|
||
|
||
| 用途 | 色值 |
|
||
|------|------|
|
||
| 主色 | #1677FF |
|
||
| 主色悬浮 | #4096FF |
|
||
| 主色点击 | #0958D9 |
|
||
| 主色浅底 | #E6F4FF |
|
||
| 成功 | #52C41A |
|
||
| 警告 | #FAAD14 |
|
||
| 错误 | #FF4D4F |
|
||
| 背景 | #F5F7FA |
|
||
| 卡片背景 | #FFFFFF |
|
||
| 主文字 | #1F2937 |
|
||
| 次文字 | #6B7280 |
|
||
| 边框 | #E5E7EB |
|
||
|
||
### 8.2 圆角与阴影
|
||
- 卡片圆角:12px
|
||
- 按钮圆角:8px
|
||
- 输入框圆角:8px
|
||
- 卡片阴影:`0 2px 8px rgba(0, 0, 0, 0.08)`
|
||
- 悬浮阴影:`0 8px 24px rgba(22, 119, 255, 0.15)`
|
||
|
||
### 8.3 间距系统
|
||
- 基础单位:8px
|
||
- 常用:8 / 16 / 24 / 32 / 48
|
||
|
||
### 8.4 图标规范
|
||
- **全部使用 SVG 格式**
|
||
- 线性风格,stroke-width: 1.5
|
||
- 尺寸:16px / 20px / 24px / 32px
|
||
- 颜色继承 currentColor
|
||
- 统一封装为 Vue 组件 `<SvgIcon name="xxx" />`
|
||
|
||
### 8.5 管理后台布局
|
||
- **侧边栏布局**:左侧菜单 + 顶部导航 + 内容区
|
||
- 侧边栏:可折叠,宽度 240px / 折叠后 64px
|
||
- 顶部导航:面包屑 + 用户信息 + 消息通知
|
||
- 内容区:卡片式布局,留白充足
|
||
|
||
### 8.6 前台布局
|
||
- 顶部导航栏:Logo + 菜单 + 搜索 + 登录/用户
|
||
- 内容区:最大宽度 1200px,居中
|
||
- 页脚:公司信息 + 友链 + 备案号
|
||
|
||
### 8.7 交互动画
|
||
- 页面切换:淡入淡出 300ms
|
||
- 卡片悬浮:transform 200ms ease
|
||
- 按钮:ripple 涟漪效果
|
||
- 加载:骨架屏 + 旋转图标
|
||
- 消息提示:顶部滑入 300ms
|
||
|
||
---
|
||
|
||
## 9. 非功能性需求
|
||
|
||
### 9.1 性能
|
||
- 首屏加载 < 3 秒(PC)
|
||
- API 响应 < 500ms(常规接口)
|
||
- 列表查询支持索引优化
|
||
- 图片懒加载 + WebP 格式
|
||
|
||
### 9.2 安全
|
||
- SQL 参数化查询(EF Core 默认)
|
||
- XSS 防护(富文本内容过滤)
|
||
- CSRF Token
|
||
- 接口限流(同 IP 每分钟 60 次)
|
||
- 敏感操作二次确认
|
||
|
||
### 9.3 兼容性
|
||
- 前台:Chrome 90+ / Edge 90+ / Safari 14+ / Firefox 88+
|
||
- 后台:Chrome / Edge 最新版
|
||
- WebGL:WebGL 2.0 支持的浏览器
|
||
|
||
### 9.4 可维护性
|
||
- 代码分层:Controller → Service → Repository
|
||
- DTO 与 Entity 分离
|
||
- 统一异常处理中间件
|
||
- 配置项集中管理(appsettings.json + 数据库)
|
||
|
||
---
|
||
|
||
## 10. 项目里程碑
|
||
|
||
| 阶段 | 内容 |
|
||
|------|------|
|
||
| 阶段一 | 数据库设计 + 后端基础框架 + 认证授权 |
|
||
| 阶段二 | 前端基础框架 + UI 组件库 + 前台首页 + 项目中心 |
|
||
| 阶段三 | 项目详情 + WebGL 运行 + 个人中心 |
|
||
| 阶段四 | 管理后台工作台 + 项目管理 + 客户/授权管理 |
|
||
| 阶段五 | 系统设置 + 内容管理 + 员工管理 |
|
||
| 阶段六 | 通知系统 + 操作日志 + 数据备份 |
|
||
| 阶段七 | 联调测试 + 性能优化 + 部署上线 |
|
||
|
||
---
|
||
|
||
## 附录 A:确认决策汇总
|
||
|
||
| 决策项 | 选择 |
|
||
|--------|------|
|
||
| 用户注册方式 | 仅管理员创建 |
|
||
| 登录认证 | 账号密码 + 图形验证码 |
|
||
| 多语言 | 仅中文 |
|
||
| 响应式 | 全响应式(前台 PC/平板/手机,后台 PC) |
|
||
| 销售数据隔离 | 销售间数据隔离 |
|
||
| 通知渠道 | 仅站内消息 |
|
||
| 实时性 | 轮询拉取(30秒) |
|
||
| 搜索能力 | 简单关键词查询(SQL LIKE) |
|
||
| 视频格式 | MP4 + WebM |
|
||
| 部署方式 | 前后端均部署 IIS |
|
||
| 数据备份 | 手动 + 自动备份 |
|
||
| WebGL 限制 | 不限制 |
|
||
| 主题色 | 科技蓝(#1677FF) |
|
||
| 后台布局 | 侧边栏布局 |
|
||
| 项目卡片 | 纵向网格卡片 |
|
||
| 图表库 | ECharts |
|