snapshot-prompts.txt 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239
  1. 我正在使用Claude Code。请帮我在F:\projects/下创建一个项目,项目名为snapshot,作用是提供一个临时的文件、文本等的中转服务。其中区分两个文件夹,一个前端项目,使用Vue3编写,一个后端项目,使用Java1.8.0+Spring Boot 2编写。前后端项目由你自己命名。
  2. 我对项目的需求如下:
  3. 1. 前端页面标题"Snapshot:致力于做最好用的临时文件分享平台"位于最上方居中,下方为一段描述,为使用者描绘使用场景,激发使用者使用的兴趣。再下方,左右分栏,左侧为临时文件上传区域,可上传文件,每个文件不大于50MB,文件列表选择后也可以删除调整和继续上传,列表中最多包含10个文件;右侧为文本输入区域,可以粘贴文本。下方有一个可选的密码设置输入框,再下方有一个统一的"上传"按钮,用于将上面的文件和文本上传至服务器,点击后弹出临时文件有效期选择按钮,可选择1小时、2小时、3小时、6小时、12小时、24小时,也可自定义小时数;同时可以设置文件被打包下载多少次后自动删除文件。再下方是一个上传内容ID输入框,通过输入ID,点击"查看"按钮,可查看自己或他人分享的临时文件和文本,其中文件可以打包下载,也可单个文件下载。
  4. 2. 上传完成后,系统自动生成一个分享链接,并显示在页面上,链接格式为"http://ip:port/s/上传内容ID",ip、port可在前端项目的config.js中配置。用户可将链接分享给他人。
  5. 3. 在上传内容ID输入框中,输入ID,点击"查看"按钮,也可跳转至对应内容的分享链接。此处为方便用户查阅,若输入框中输入内容只包含ID的前几位,但已经可以通过字典树唯一确定一个上传内容,则也可成功跳转至对应分享链接。
  6. 4. 上传过程无需等待,其他用户可在上传者上传完成之前就开始下载;
  7. 5. 前端页面背景做成酷炫的银河星空背景,整个页面美观大方;
  8. 6. **整个项目需要在Windows项目部署**,我要求部署简单,包含内容简单的前端和后端部署脚本,**不使用docker部署**;
  9. 7. **使用Spring boot 2和Java 1.8语法进行后端开发**;
  10. 8. 使用MySQL作为数据库,数据库名为snapshot,访问地址为localhost:3306,登录名root,密码"asdqwe123!";**生成名为create.sql的建表语句文件,**在后端服务启动时,若无数据表,则创建,否则不做操作**;
  11. 9. 保证整个项目的安全性,杜绝通过网页和接口入侵服务器的漏洞;
  12. 10. **在前后端项目编码之前,务必在api目录下生成供前后端交互的RESTful API接口文档,并由我确认**。
  13. # Snapshot项目开发任务说明书
  14. <project_overview>
  15. 本项目旨在创建一个名为"Snapshot"的临时文件分享平台,包含Vue3前端和Spring Boot 2后端。项目位于F:\projects\snapshot目录,提供安全的临时文件、文本中转服务。
  16. </project_overview>
  17. <technical_requirements>
  18. 1. 前端技术栈:Vue3 + JavaScript/TypeScript
  19. 2. 后端技术栈:Spring Boot 2 + Java 1.8
  20. 3. 数据库:MySQL 8.0+,数据库名snapshot,连接地址localhost:3306,用户名root,密码asdqwe123!
  21. 4. 部署环境:Windows系统,不使用Docker
  22. 5. 文件限制:单个文件≤50MB,最多10个文件
  23. </technical_requirements>
  24. <project_structure>
  25. F:\projects\snapshot/
  26. ├── frontend/ # Vue3前端项目 (命名为snapshot-frontend)
  27. │ ├── public/
  28. │ ├── src/
  29. │ │ ├── assets/ # 静态资源
  30. │ │ ├── components/ # 可复用组件
  31. │ │ ├── views/ # 页面视图
  32. │ │ ├── router/ # 路由配置
  33. │ │ ├── utils/ # 工具函数
  34. │ │ ├── config.js # 配置文件(IP、端口等)
  35. │ │ └── main.js # 入口文件
  36. │ ├── package.json
  37. │ └── deploy.bat # 前端部署脚本
  38. ├── backend/ # Spring Boot后端项目 (命名为snapshot-backend)
  39. │ ├── src/main/java/
  40. │ │ └── com/snapshot/
  41. │ │ ├── Application.java # 启动类
  42. │ │ ├── controller/ # 控制器层
  43. │ │ ├── service/ # 业务逻辑层
  44. │ │ ├── repository/ # 数据访问层
  45. │ │ ├── entity/ # 实体类
  46. │ │ ├── dto/ # 数据传输对象
  47. │ │ ├── config/ # 配置类
  48. │ │ └── util/ # 工具类
  49. │ ├── src/main/resources/
  50. │ │ ├── application.properties # 应用配置
  51. │ │ └── create.sql # 数据库初始化脚本
  52. │ └── deploy.bat # 后端部署脚本
  53. └── README.md # 项目说明文档
  54. </project_structure>
  55. <frontend_detailed_requirements>
  56. ## 页面布局与样式要求
  57. <layout>
  58. 1. 顶部标题:居中显示"Snapshot:致力于做最好用的临时文件分享平台",使用大号字体加粗
  59. 2. 描述区域:标题下方添加吸引人的使用场景描述,激发使用兴趣
  60. 3. 主要内容区:左右分栏布局,左侧文件上传区,右侧文本输入区
  61. 4. 底部功能区:密码设置、上传按钮、ID查询区域
  62. 5. 背景效果:银河星空动态背景,使用深色主题配合星星、星系动画效果
  63. </layout>
  64. ## 文件上传区域功能
  65. <file_upload_section>
  66. 1. 拖拽上传:支持文件拖拽和点击选择两种方式
  67. 2. 文件列表:实时显示已选文件列表,包含文件名、大小、上传进度
  68. 3. 文件管理:支持删除单个文件、清空全部、重新选择
  69. 4. 限制验证:文件大小限制(50MB)、数量限制(10个)、类型提示
  70. 5. 实时预览:图片文件支持缩略图预览
  71. </file_upload_section>
  72. ## 文本输入区域功能
  73. <text_input_section>
  74. 1. 大文本区域:支持多行文本输入,带行号显示
  75. 2. 语法高亮:支持常见编程语言语法高亮
  76. 3. 字数统计:实时显示文本长度
  77. 4. 自动保存:防止意外丢失输入内容
  78. </text_input_section>
  79. ## 上传配置选项
  80. <upload_options>
  81. 1. 密码保护:可选密码输入框,支持显示/隐藏密码
  82. 2. 有效期选择:下拉选择(1/2/3/6/12/24小时) + 自定义小时数输入
  83. 3. 下载次数限制:设置最大下载次数(1-100次)
  84. 4. 上传按钮:醒目设计,点击后弹出配置对话框
  85. </upload_options>
  86. ## 内容查看与下载功能
  87. <content_viewer>
  88. 1. ID输入查询:支持完整ID或前缀模糊匹配(字典树优化)
  89. 2. 内容展示:文件列表+文本内容分别展示
  90. 3. 下载选项:打包下载所有文件或单个文件下载
  91. 4. 分享链接:自动生成格式为"http://ip:port/s/ID"的链接,一键复制
  92. </content_viewer>
  93. ## 交互体验优化
  94. <ux_requirements>
  95. 1. 实时反馈:上传进度条、操作成功/失败提示
  96. 2. 响应式设计:适配不同屏幕尺寸
  97. 3. 加载状态:异步操作时的加载动画
  98. 4. 错误处理:友好的错误提示和恢复指导
  99. </ux_requirements>
  100. </frontend_detailed_requirements>
  101. <backend_detailed_requirements>
  102. ## 数据库设计
  103. <database_schema>
  104. 1. 创建snapshot数据库,字符集utf8mb4
  105. 2. 主要数据表:
  106. - upload_records: 上传记录表(主键ID、密码哈希、创建时间、过期时间、最大下载次数、当前下载次数)
  107. - file_entries: 文件记录表(文件ID、上传记录ID、文件名、存储路径、文件大小、MIME类型)
  108. - text_contents: 文本内容表(上传记录ID、文本内容、文本类型)
  109. 3. 索引优化:为ID前缀查询创建合适索引
  110. </database_schema>
  111. ## API接口设计
  112. <api_endpoints>
  113. ### 文件上传相关
  114. 1. POST /api/upload - 创建上传记录
  115. 2. POST /api/upload/{id}/files - 分片上传文件
  116. 3. GET /api/upload/{id} - 获取上传记录详情
  117. 4. DELETE /api/upload/{id} - 删除上传记录(管理员功能)
  118. ### 内容访问相关
  119. 1. GET /s/{id} - 分享链接访问入口(前端路由)
  120. 2. GET /api/content/{id} - 获取分享内容
  121. 3. GET /api/download/{fileId} - 下载单个文件
  122. 4. GET /api/download/bundle/{id} - 打包下载所有文件
  123. </api_endpoints>
  124. ## 核心业务逻辑
  125. <business_logic>
  126. 1. 文件分片上传:支持大文件断点续传
  127. 2. 过期清理机制:定时任务清理过期文件
  128. 3. 下载次数统计:达到限制后自动删除
  129. 4. ID生成策略:短ID生成,支持前缀匹配
  130. 5. 存储优化:文件分目录存储,防止单目录文件过多
  131. </business_logic>
  132. ## 安全防护措施
  133. <security_measures>
  134. 1. 文件类型校验:防止恶意文件上传
  135. 2. 大小限制验证:防止服务器资源耗尽
  136. 3. 频率限制:API调用频率限制
  137. 4. XSS防护:输入内容转义处理
  138. 5. SQL注入防护:使用参数化查询
  139. 6. 路径遍历防护:文件名安全处理
  140. </security_measures>
  141. </backend_detailed_requirements>
  142. <deployment_requirements>
  143. ## 前端部署脚本(deploy.bat)
  144. <frontend_deployment>
  145. 1. 环境检查:验证Node.js和npm版本
  146. 2. 依赖安装:npm install安装依赖
  147. 3. 构建项目:npm run build生成生产版本
  148. 4. 配置服务:使用nginx或简单HTTP服务器
  149. 5. 启动服务:指定端口和IP地址
  150. </frontend_deployment>
  151. ## 后端部署脚本(deploy.bat)
  152. <backend_deployment>
  153. 1. 环境检查:Java 1.8验证
  154. 2. 数据库初始化:自动执行create.sql
  155. 3. 应用打包:Maven打包为可执行JAR
  156. 4. 服务启动:后台运行Spring Boot应用
  157. 5. 健康检查:验证服务正常启动
  158. </backend_deployment>
  159. ## 配置文件示例
  160. <configuration_files>
  161. ### 前端config.js
  162. ```javascript
  163. const config = {
  164. baseURL: 'http://localhost:7626',
  165. uploadLimit: 50 * 1024 * 1024, // 50MB
  166. maxFiles: 10,
  167. expirationOptions: [1, 2, 3, 6, 12, 24],
  168. // 可配置的服务器地址
  169. server: {
  170. ip: '127.0.0.1',
  171. port: '7626'
  172. }
  173. };
  174. ```
  175. ### 后端application.properties
  176. ```
  177. server.port=7626
  178. spring.datasource.url=jdbc:
  179. spring.datasource.username=root
  180. spring.datasource.password=asdqwe123!
  181. spring.servlet.multipart.max-file-size=50MB
  182. spring.servlet.multipart.max-request-size=50MB
  183. ```
  184. </configuration_files>
  185. </deployment_requirements>
  186. <implementation_priority>
  187. ## 开发优先级建议
  188. 1. **第一阶段**:搭建项目基础结构,创建数据库表
  189. 2. **第二阶段**:实现后端核心API和文件处理逻辑
  190. 3. **第三阶段**:开发前端基础界面和组件
  191. 4. **第四阶段**:实现前后端联调和交互功能
  192. 5. **第五阶段**:添加高级功能(前缀匹配、银河背景等)
  193. 6. **第六阶段**:安全加固和部署脚本编写
  194. </implementation_priority>
  195. <claude_specific_instructions>
  196. ## 给Claude Code的特别指示
  197. 1. **代码风格**:使用清晰的命名规范,添加必要的注释
  198. 2. **错误处理**:全面的异常捕获和日志记录
  199. 3. **性能优化**:文件上传下载使用流式处理,避免内存溢出
  200. 4. **代码复用**:提取公共组件和工具函数
  201. 5. **文档完整**:为每个主要函数和组件添加文档注释
  202. 请按照以上结构化要求,分别生成前端和后端的完整代码文件,确保项目可以正常运行和部署。
  203. </claude_specific_instructions>