Files
sftp-manager/AGENTS.md

7.6 KiB
Raw Blame History

sftp-manager AGENTS 指南

本文件面向在本仓库内执行任务的自动化 Coding Agent。 请将其作为本项目在构建、测试、编码规范方面的本地权威说明。

1项目概览

  • 技术栈Spring Boot 2.7.18、Java 8、Maven、Spring Data JPA、H2、JSch、原生 HTML/CSS/JS。
  • 启动入口:src/main/java/com/sftp/manager/SftpManagerApplication.java
  • 主要目录结构:
    • src/main/java/com/sftp/manager/controller/HTTP 控制器
    • src/main/java/com/sftp/manager/service/业务逻辑SFTP、本地文件
    • src/main/java/com/sftp/manager/model/:实体模型
    • src/main/java/com/sftp/manager/repository/JPA 仓库
    • src/main/java/com/sftp/manager/dto/:接口请求/响应 DTO
    • src/main/resources/static/:前端静态资源
    • src/main/resources/application*.yml:运行配置
  • 默认端口:48081(见 application.yml)。
  • 生产环境可启用 prod profileapplication-prod.yml)。

2Cursor / Copilot 规则检查结果

已检查以下路径,当前未发现规则文件:

  • .cursor/rules/
  • .cursorrules
  • .github/copilot-instructions.md

若后续新增上述文件,请立即同步更新本 AGENTS.md。 新增规则应视为更高优先级约束并优先遵循。

3构建、运行、测试命令

默认在仓库根目录执行命令。

3.1 Maven 构建与打包

  • 仅编译:mvn clean compile
  • 完整打包(含测试):mvn clean package
  • 跳过测试打包:mvn clean package -DskipTests
  • 安装到本地仓库:mvn clean install

3.2 本地运行

  • 开发运行:mvn spring-boot:run
  • 运行 JARjava -jar target/sftp-manager-1.0.0.jar
  • 生产配置运行:java -jar target/sftp-manager-1.0.0.jar --spring.profiles.active=prod

3.3 Docker 运行

  • Linux/Mac 一键启动:./run.sh
  • Windows 一键启动:run.bat
  • 手动启动:docker compose up -d --build
  • 手动停止:docker compose down

3.4 测试命令(重点:单测定向执行)

当前仓库尚无 src/test/**/*.java 文件。 当新增测试后,按以下方式执行:

  • 执行全部测试:mvn test
  • 执行单个测试类:mvn -Dtest=ConnectionServiceTest test
  • 执行单个测试方法:mvn -Dtest=ConnectionServiceTest#connect_success test
  • 执行多个测试类:mvn -Dtest=ConnectionServiceTest,FileControllerTest test

若出现“测试未执行”,优先检查命名是否满足 Surefire 默认规则:

  • *Test
  • *Tests
  • *TestCase

3.5 Lint / 质量门禁

pom.xml 当前未配置 Checkstyle、Spotless、PMD 等专用 lint 插件。 因此以“编译 + 测试”作为质量门禁:

  • 快速门禁:mvn clean compile
  • 完整门禁:mvn clean test

3.6 当前测试覆盖(供 Agent 参考)

目前已存在以下单测类,可按需定向执行:

  • ConnectionControllerTest
  • FileControllerTest
  • ConnectionServiceTest
  • SessionManagerTest
  • LocalFileServiceTest

示例:

  • 执行单个测试类:mvn -Dtest=LocalFileServiceTest test
  • 执行单个测试方法:mvn -Dtest=LocalFileServiceTest#renameFile_shouldAllowRenameInSameDirectory test

4代码风格与工程约定

4.1 Java / Spring 通用约定

  • 必须保持 Java 8 兼容,不使用 Java 9+ 语法。
  • 包路径维持在 com.sftp.manager 下。
  • 控制器保持轻量,核心逻辑放到 service 层。
  • API 返回统一使用 ApiResponse<T>
  • 延续既有接口前缀:
    • /api/connection/*
    • /api/files/*
  • 沿用已有术语命名:sessionIdsourcePathtargetPathrecursive

4.2 依赖注入风格

  • 现有代码大量使用字段注入 @Autowired,修改旧文件时保持一致。
  • 新增类可用构造器注入,但同一类内不要混用多种注入风格。
  • 避免“仅改一点却全文件重构注入方式”的无关变更。

4.3 Imports 与格式

  • 保持文件现有 import 分组习惯,尽量与周边代码一致。
  • 一般顺序:项目/第三方 → Spring → javax.*java.*
  • 避免通配符导入(*),优先显式导入。
  • 使用 4 空格缩进,不使用 Tab。
  • 保持现有大括号、注解换行和空行风格。

4.4 类型、DTO 与实体

  • 避免原始类型集合,优先使用泛型(如 List<FileInfo>)。
  • DTO/实体中,允许为空的数值或布尔优先用包装类型(IntegerLongBoolean)。
  • DTO 只做传输,不承载业务逻辑。
  • 若同类文件已使用 Lombok @Data,新增同类对象可延续该模式。

4.5 命名规范

  • 类名PascalCaseConnectionService)。
  • 方法/变量/参数camelCasegetFileInfo)。
  • 常量UPPER_SNAKE_CASEAPI_BASE)。
  • REST 路径:小写,必要时使用连字符,优先复用已有路径。
  • Service 方法名优先“动词 + 对象”(如 uploadToSftpdownloadFromSftp)。

4.6 错误处理规范

  • 先做参数校验,再执行核心逻辑。
  • 控制器边界统一捕获异常,并映射为 ApiResponse.error(...)
  • 错误信息要包含上下文(路径、会话、操作类型),但不得泄露敏感信息。
  • 清理流程中的异常可按现有模式忽略,但主流程异常不可静默吞掉。
  • 保持面向用户的提示语风格与现有代码一致(当前以中文提示为主)。

4.7 文件与流处理

  • 所有 InputStream / OutputStream 优先使用 try-with-resources
  • 明确“由谁负责关闭流”,避免重复关闭或泄漏。
  • 递归文件操作需考虑部分失败、非法路径、权限不足等场景。
  • 跨平台路径处理继续使用现有模式(File.separator、路径规范化)。
  • 本地路径处理应统一规范化(getCanonicalFile),拒绝 .. 上级目录穿越。
  • 删除操作应防护根目录与系统关键目录Windows 与 Unix 路径均需考虑)。
  • 重命名默认按“同目录重命名”语义实现,不在重命名接口里隐式做跨目录移动。

4.8 持久化与配置约定

  • 实体默认值与时间戳钩子(@PrePersist / @PreUpdate)保持一致。
  • 不提交 data/ 下数据库产物(.gitignore 已忽略相关文件)。
  • 生产配置中的环境变量占位符应保留(如 DB_USERNAMEDB_PASSWORD)。
  • 非需求驱动情况下,不扩展 Actuator 暴露范围。

4.9 前端静态资源约定

  • 项目未配置 Node 构建链路,前端资源直接编辑 static 目录。
  • 保持当前 jQuery 风格与状态驱动结构(见 static/js/app.js)。
  • 保持双面板交互和响应式行为,不破坏现有 UX。
  • 保持 CSS 变量与设计令牌风格,不做大规模 UI 体系替换。

5Agent 工作流程建议

  • 开始改动前,先阅读目标文件及相邻文件风格。
  • 以最小必要改动为原则,避免无关重构。
  • 未明确要求时不更改端口、context-path、profile 行为。
  • 新增功能优先补充可验证逻辑;有测试目录后优先补单元测试。
  • 完成后至少运行一次编译校验;如有测试则执行相关测试。
  • 若新增关键命令或流程,请同步更新本 AGENTS.md
  • 涉及安全边界认证、文件系统、CORS、主机密钥变更后必须补至少一条对应单测。

6常用命令速查

  • mvn clean compile
  • mvn test
  • mvn -Dtest=ClassName test
  • mvn -Dtest=ClassName#methodName test
  • mvn spring-boot:run
  • mvn clean package -DskipTests
  • java -jar target/sftp-manager-1.0.0.jar --spring.profiles.active=prod
  • docker compose up -d --build

请随项目演进持续维护本文件,确保其内容始终与仓库实际配置一致。