| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239 |
- 我正在使用Claude Code。请帮我在F:\projects/下创建一个项目,项目名为snapshot,作用是提供一个临时的文件、文本等的中转服务。其中区分两个文件夹,一个前端项目,使用Vue3编写,一个后端项目,使用Java1.8.0+Spring Boot 2编写。前后端项目由你自己命名。
- 我对项目的需求如下:
- 1. 前端页面标题"Snapshot:致力于做最好用的临时文件分享平台"位于最上方居中,下方为一段描述,为使用者描绘使用场景,激发使用者使用的兴趣。再下方,左右分栏,左侧为临时文件上传区域,可上传文件,每个文件不大于50MB,文件列表选择后也可以删除调整和继续上传,列表中最多包含10个文件;右侧为文本输入区域,可以粘贴文本。下方有一个可选的密码设置输入框,再下方有一个统一的"上传"按钮,用于将上面的文件和文本上传至服务器,点击后弹出临时文件有效期选择按钮,可选择1小时、2小时、3小时、6小时、12小时、24小时,也可自定义小时数;同时可以设置文件被打包下载多少次后自动删除文件。再下方是一个上传内容ID输入框,通过输入ID,点击"查看"按钮,可查看自己或他人分享的临时文件和文本,其中文件可以打包下载,也可单个文件下载。
- 2. 上传完成后,系统自动生成一个分享链接,并显示在页面上,链接格式为"http://ip:port/s/上传内容ID",ip、port可在前端项目的config.js中配置。用户可将链接分享给他人。
- 3. 在上传内容ID输入框中,输入ID,点击"查看"按钮,也可跳转至对应内容的分享链接。此处为方便用户查阅,若输入框中输入内容只包含ID的前几位,但已经可以通过字典树唯一确定一个上传内容,则也可成功跳转至对应分享链接。
- 4. 上传过程无需等待,其他用户可在上传者上传完成之前就开始下载;
- 5. 前端页面背景做成酷炫的银河星空背景,整个页面美观大方;
- 6. **整个项目需要在Windows项目部署**,我要求部署简单,包含内容简单的前端和后端部署脚本,**不使用docker部署**;
- 7. **使用Spring boot 2和Java 1.8语法进行后端开发**;
- 8. 使用MySQL作为数据库,数据库名为snapshot,访问地址为localhost:3306,登录名root,密码"asdqwe123!";**生成名为create.sql的建表语句文件,**在后端服务启动时,若无数据表,则创建,否则不做操作**;
- 9. 保证整个项目的安全性,杜绝通过网页和接口入侵服务器的漏洞;
- 10. **在前后端项目编码之前,务必在api目录下生成供前后端交互的RESTful API接口文档,并由我确认**。
- # Snapshot项目开发任务说明书
- <project_overview>
- 本项目旨在创建一个名为"Snapshot"的临时文件分享平台,包含Vue3前端和Spring Boot 2后端。项目位于F:\projects\snapshot目录,提供安全的临时文件、文本中转服务。
- </project_overview>
- <technical_requirements>
- 1. 前端技术栈:Vue3 + JavaScript/TypeScript
- 2. 后端技术栈:Spring Boot 2 + Java 1.8
- 3. 数据库:MySQL 8.0+,数据库名snapshot,连接地址localhost:3306,用户名root,密码asdqwe123!
- 4. 部署环境:Windows系统,不使用Docker
- 5. 文件限制:单个文件≤50MB,最多10个文件
- </technical_requirements>
- <project_structure>
- F:\projects\snapshot/
- ├── frontend/ # Vue3前端项目 (命名为snapshot-frontend)
- │ ├── public/
- │ ├── src/
- │ │ ├── assets/ # 静态资源
- │ │ ├── components/ # 可复用组件
- │ │ ├── views/ # 页面视图
- │ │ ├── router/ # 路由配置
- │ │ ├── utils/ # 工具函数
- │ │ ├── config.js # 配置文件(IP、端口等)
- │ │ └── main.js # 入口文件
- │ ├── package.json
- │ └── deploy.bat # 前端部署脚本
- ├── backend/ # Spring Boot后端项目 (命名为snapshot-backend)
- │ ├── src/main/java/
- │ │ └── com/snapshot/
- │ │ ├── Application.java # 启动类
- │ │ ├── controller/ # 控制器层
- │ │ ├── service/ # 业务逻辑层
- │ │ ├── repository/ # 数据访问层
- │ │ ├── entity/ # 实体类
- │ │ ├── dto/ # 数据传输对象
- │ │ ├── config/ # 配置类
- │ │ └── util/ # 工具类
- │ ├── src/main/resources/
- │ │ ├── application.properties # 应用配置
- │ │ └── create.sql # 数据库初始化脚本
- │ └── deploy.bat # 后端部署脚本
- └── README.md # 项目说明文档
- </project_structure>
- <frontend_detailed_requirements>
- ## 页面布局与样式要求
- <layout>
- 1. 顶部标题:居中显示"Snapshot:致力于做最好用的临时文件分享平台",使用大号字体加粗
- 2. 描述区域:标题下方添加吸引人的使用场景描述,激发使用兴趣
- 3. 主要内容区:左右分栏布局,左侧文件上传区,右侧文本输入区
- 4. 底部功能区:密码设置、上传按钮、ID查询区域
- 5. 背景效果:银河星空动态背景,使用深色主题配合星星、星系动画效果
- </layout>
- ## 文件上传区域功能
- <file_upload_section>
- 1. 拖拽上传:支持文件拖拽和点击选择两种方式
- 2. 文件列表:实时显示已选文件列表,包含文件名、大小、上传进度
- 3. 文件管理:支持删除单个文件、清空全部、重新选择
- 4. 限制验证:文件大小限制(50MB)、数量限制(10个)、类型提示
- 5. 实时预览:图片文件支持缩略图预览
- </file_upload_section>
- ## 文本输入区域功能
- <text_input_section>
- 1. 大文本区域:支持多行文本输入,带行号显示
- 2. 语法高亮:支持常见编程语言语法高亮
- 3. 字数统计:实时显示文本长度
- 4. 自动保存:防止意外丢失输入内容
- </text_input_section>
- ## 上传配置选项
- <upload_options>
- 1. 密码保护:可选密码输入框,支持显示/隐藏密码
- 2. 有效期选择:下拉选择(1/2/3/6/12/24小时) + 自定义小时数输入
- 3. 下载次数限制:设置最大下载次数(1-100次)
- 4. 上传按钮:醒目设计,点击后弹出配置对话框
- </upload_options>
- ## 内容查看与下载功能
- <content_viewer>
- 1. ID输入查询:支持完整ID或前缀模糊匹配(字典树优化)
- 2. 内容展示:文件列表+文本内容分别展示
- 3. 下载选项:打包下载所有文件或单个文件下载
- 4. 分享链接:自动生成格式为"http://ip:port/s/ID"的链接,一键复制
- </content_viewer>
- ## 交互体验优化
- <ux_requirements>
- 1. 实时反馈:上传进度条、操作成功/失败提示
- 2. 响应式设计:适配不同屏幕尺寸
- 3. 加载状态:异步操作时的加载动画
- 4. 错误处理:友好的错误提示和恢复指导
- </ux_requirements>
- </frontend_detailed_requirements>
- <backend_detailed_requirements>
- ## 数据库设计
- <database_schema>
- 1. 创建snapshot数据库,字符集utf8mb4
- 2. 主要数据表:
- - upload_records: 上传记录表(主键ID、密码哈希、创建时间、过期时间、最大下载次数、当前下载次数)
- - file_entries: 文件记录表(文件ID、上传记录ID、文件名、存储路径、文件大小、MIME类型)
- - text_contents: 文本内容表(上传记录ID、文本内容、文本类型)
- 3. 索引优化:为ID前缀查询创建合适索引
- </database_schema>
- ## API接口设计
- <api_endpoints>
- ### 文件上传相关
- 1. POST /api/upload - 创建上传记录
- 2. POST /api/upload/{id}/files - 分片上传文件
- 3. GET /api/upload/{id} - 获取上传记录详情
- 4. DELETE /api/upload/{id} - 删除上传记录(管理员功能)
- ### 内容访问相关
- 1. GET /s/{id} - 分享链接访问入口(前端路由)
- 2. GET /api/content/{id} - 获取分享内容
- 3. GET /api/download/{fileId} - 下载单个文件
- 4. GET /api/download/bundle/{id} - 打包下载所有文件
- </api_endpoints>
- ## 核心业务逻辑
- <business_logic>
- 1. 文件分片上传:支持大文件断点续传
- 2. 过期清理机制:定时任务清理过期文件
- 3. 下载次数统计:达到限制后自动删除
- 4. ID生成策略:短ID生成,支持前缀匹配
- 5. 存储优化:文件分目录存储,防止单目录文件过多
- </business_logic>
- ## 安全防护措施
- <security_measures>
- 1. 文件类型校验:防止恶意文件上传
- 2. 大小限制验证:防止服务器资源耗尽
- 3. 频率限制:API调用频率限制
- 4. XSS防护:输入内容转义处理
- 5. SQL注入防护:使用参数化查询
- 6. 路径遍历防护:文件名安全处理
- </security_measures>
- </backend_detailed_requirements>
- <deployment_requirements>
- ## 前端部署脚本(deploy.bat)
- <frontend_deployment>
- 1. 环境检查:验证Node.js和npm版本
- 2. 依赖安装:npm install安装依赖
- 3. 构建项目:npm run build生成生产版本
- 4. 配置服务:使用nginx或简单HTTP服务器
- 5. 启动服务:指定端口和IP地址
- </frontend_deployment>
- ## 后端部署脚本(deploy.bat)
- <backend_deployment>
- 1. 环境检查:Java 1.8验证
- 2. 数据库初始化:自动执行create.sql
- 3. 应用打包:Maven打包为可执行JAR
- 4. 服务启动:后台运行Spring Boot应用
- 5. 健康检查:验证服务正常启动
- </backend_deployment>
- ## 配置文件示例
- <configuration_files>
- ### 前端config.js
- ```javascript
- const config = {
- baseURL: 'http://localhost:7626',
- uploadLimit: 50 * 1024 * 1024, // 50MB
- maxFiles: 10,
- expirationOptions: [1, 2, 3, 6, 12, 24],
- // 可配置的服务器地址
- server: {
- ip: '127.0.0.1',
- port: '7626'
- }
- };
- ```
- ### 后端application.properties
- ```
- server.port=7626
- spring.datasource.url=jdbc:
- spring.datasource.username=root
- spring.datasource.password=asdqwe123!
- spring.servlet.multipart.max-file-size=50MB
- spring.servlet.multipart.max-request-size=50MB
- ```
- </configuration_files>
- </deployment_requirements>
- <implementation_priority>
- ## 开发优先级建议
- 1. **第一阶段**:搭建项目基础结构,创建数据库表
- 2. **第二阶段**:实现后端核心API和文件处理逻辑
- 3. **第三阶段**:开发前端基础界面和组件
- 4. **第四阶段**:实现前后端联调和交互功能
- 5. **第五阶段**:添加高级功能(前缀匹配、银河背景等)
- 6. **第六阶段**:安全加固和部署脚本编写
- </implementation_priority>
- <claude_specific_instructions>
- ## 给Claude Code的特别指示
- 1. **代码风格**:使用清晰的命名规范,添加必要的注释
- 2. **错误处理**:全面的异常捕获和日志记录
- 3. **性能优化**:文件上传下载使用流式处理,避免内存溢出
- 4. **代码复用**:提取公共组件和工具函数
- 5. **文档完整**:为每个主要函数和组件添加文档注释
- 请按照以上结构化要求,分别生成前端和后端的完整代码文件,确保项目可以正常运行和部署。
- </claude_specific_instructions>
|