Skip to content

Latest commit

 

History

History
196 lines (142 loc) · 4.75 KB

Product-Spec.md

File metadata and controls

196 lines (142 loc) · 4.75 KB

产品规格文档 - 安全审查与性能优化

项目概述

项目名称: Java 商城系统
版本: 0.0.1-SNAPSHOT
技术栈:

  • 后端: Spring Boot 2.5.5 + MyBatis-Plus + MySQL
  • 前端: Vue 3 + Vite 4 + Ant Design Vue

需求清单

需求 1: 安全审查与修复

优先级: P0 - 高风险

背景: 项目存在多个安全漏洞,需要进行全面审查和修复。

问题清单:

ID 问题 文件 风险等级
H1 评论创建无权限验证 CommentController.java 高风险
H2 路由守卫逻辑缺陷 router/index.js 高风险
H3 配置文件硬编码敏感信息 application.yml 高风险
M1 验证码验证逻辑不完整 UserServiceImpl.java 中风险
M2 JWT 密钥管理不安全 application.yml 中风险
M3 文件上传安全增强 UserController.java 中风险
M4 支付配置占位符 application.yml 中风险

验收标准:

  • 所有高风险问题修复完成
  • 所有中风险问题修复完成
  • 敏感信息不再硬编码
  • 权限控制生效

需求 2: 产品图片显示问题修复

优先级: P0 - 高风险

背景: 前台后台产品图片无法正常显示。

问题分析:

  1. 后端缺少静态资源映射

    • 当前 MyConfig.java 只配置了 CORS 和拦截器
    • 没有配置 /api/upload/image/** 到文件目录的映射
    • 前端请求图片 URL 时,后端无法返回文件
  2. 图片 URL 格式

    • 前端拼接格式: http://localhost:9101/api/upload/image/{filename}
    • 实际存储路径: d:/projects/java_shop/server/upload/image/
  3. 文件上传配置

    • 最大文件大小: 1MB
    • 上传目录: ${BASE_LOCATION}/upload

解决方案:

  1. 在 MyConfig.java 添加静态资源映射:
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/upload/image/**")
            .addResourceLocations("file:" + uploadPath + "/image/");
    registry.addResourceHandler("/upload/avatar/**")
            .addResourceLocations("file:" + uploadPath + "/avatar/");
}
  1. 确保上传目录存在

验收标准:

  • 前台商品图片正常显示
  • 后台商品图片正常显示
  • 用户头像正常显示
  • 图片上传功能正常

需求 3: 前台网页加载性能优化

优先级: P1 - 中风险

背景: 前台网页加载缓慢,需要排查原因并优化。

当前状态分析:

项目 当前状态 评估
路由懒加载 全部使用 () => import() ✅ 已优化
Gzip 压缩 阈值 10KB ✅ 已配置
API 超时 15 秒 ⚠️ 可能过长
图片加载 无懒加载/压缩 ❌ 需优化
BASE_URL 硬编码 localhost ⚠️ 生产环境问题

潜在问题:

  1. 图片未优化

    • 无图片懒加载
    • 无图片压缩
    • 无 WebP 格式支持
  2. API 请求优化

    • 无请求缓存
    • 无并发控制
    • 超时时间过长
  3. 资源加载

    • 无 CDN 加速
    • 无 Service Worker 缓存

解决方案:

  1. 添加图片懒加载组件
  2. 优化图片加载策略
  3. 添加 API 请求缓存
  4. 优化 Vite 构建配置

验收标准:

  • 首页加载时间 < 3 秒
  • 图片懒加载生效
  • 无不必要的网络请求

技术约束

  1. 保持向后兼容性,不破坏现有功能
  2. 环境变量需要有默认值,确保开发环境可运行
  3. 所有修改需要通过编译和测试
  4. Java 版本保持 11 兼容

文件修改清单

后端文件

文件 修改内容
CommentController.java 添加权限注解
MyConfig.java 添加静态资源映射
application.yml 敏感信息环境变量化
UserController.java 文件上传安全增强

前端文件

文件 修改内容
router/index.js 修复路由守卫逻辑
store/constants.ts BASE_URL 环境变量化
图片组件 添加懒加载

执行计划

阶段 1: 安全修复 (P0)

  1. 修复评论权限问题
  2. 修复路由守卫逻辑
  3. 配置环境变量化

阶段 2: 图片显示修复 (P0)

  1. 添加静态资源映射
  2. 验证图片显示功能

阶段 3: 性能优化 (P1)

  1. 添加图片懒加载
  2. 优化 API 请求
  3. 性能测试验证

验收标准

功能验收

  • 用户登录功能正常
  • 评论创建需要登录
  • 商品图片正常显示
  • 用户头像正常显示
  • 路由导航正常

性能验收

  • 首页加载时间 < 3 秒
  • 无控制台错误
  • 图片懒加载生效

安全验收

  • 敏感信息不再硬编码
  • 权限控制生效
  • 文件上传验证生效