毫秒数仿(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 合作伙伴展示
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 相关项目推荐
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 统一响应格式
{
"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 |