Files
my_site/.clinerules

137 lines
6.7 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Cline Rules — yoyuzh/my_site
本项目包含 Java 后端、Vite/React 前端、`docs/` 文档区和工具脚本。以下规则适用于所有在此仓库中的操作。
---
## 项目结构
- `backend/`Spring Boot 3.3.8Java 17Maven领域包位于 `com.yoyuzh.{auth,cqu,files,config,common,admin,transfer}`。
- `front/`Vite 6React 19TypeScriptTailwind CSS v4路由/页面代码在 `src/pages`,可复用 UI 在 `src/components`,共享逻辑在 `src/lib`。
- `docs/`:实现计划存放于 `docs/superpowers/plans/`。
- `scripts/`:部署、迁移、冒烟测试和本地启动辅助脚本。
---
## 命令来源(只使用已存在的命令)
不得发明未在 `front/package.json`、`backend/pom.xml`、`backend/README.md`、`front/README.md` 或已签入脚本文件中存在的命令。
### 前端命令(在 `front/` 目录下执行)
```
npm run dev
npm run build
npm run preview
npm run clean
npm run lint
npm run test
```
**重要:**
- `npm run lint` 运行 `tsc --noEmit`,这是当前的 TypeScript 类型检查方式。
- 不存在独立的 ESLint 命令,也不存在独立的 `typecheck` 脚本。
- **禁止在仓库根目录运行 `npm` 命令**,根目录有 `package-lock.json` 但没有 `package.json`。
### 后端命令(在 `backend/` 目录下执行)
```
mvn spring-boot:run
mvn spring-boot:run -Dspring-boot.run.profiles=dev
mvn test
mvn package
```
**重要:** 后端没有定义专用的 lint 或 typecheck 命令。如果任务要求 lint/typecheck请明确说明后端当前未定义这些命令。
### 脚本文件(使用已存在的脚本,不创建新的包装命令)
- `scripts/deploy-front-oss.mjs`
- `scripts/migrate-file-storage-to-oss.mjs`
- `scripts/oss-deploy-lib.mjs`
- `scripts/oss-deploy-lib.test.mjs`
- `scripts/local-smoke.ps1`
- `scripts/start-backend-dev.ps1`
- `scripts/start-frontend-dev.ps1`
### 发布和部署命令
- 前端 OSS 发布(从仓库根目录):`node scripts/deploy-front-oss.mjs`
- 前端 OSS 试运行:`node scripts/deploy-front-oss.mjs --dry-run`
- 前端 OSS 发布(跳过构建):`node scripts/deploy-front-oss.mjs --skip-build`
- 后端打包(从 `backend/``mvn package`
**重要:**
- `scripts/deploy-front-oss.mjs` 从环境变量或 `.env.oss.local` 读取 OSS 凭证。
- 仓库中不存在后端部署脚本。后端交付是两步流程:在 `backend/` 打包生成 `backend/target/yoyuzh-portal-backend-0.0.1-SNAPSHOT.jar`,然后通过 `ssh`/`scp` 上传并重启。
- **禁止发明**远程目录、服务名、进程管理器或重启命令。从服务器发现,或在无法安全发现时询问用户。
---
## 工作流程
1. **分析阶段**:如果任务涉及多个文件、多个层次或同时跨越前后端,先制定计划再动手。
2. **探索阶段**:如果现有行为或所属模块不明显,先调查代码路径、现有行为和相关配置/测试,再实现。
3. **实现阶段**:进行实际代码修改。拥有 `backend/`、`front/`、`scripts/` 或 docs 中的编辑权,实现时可同步更新附近的测试。
4. **验证阶段**:运行已有的仓库支持命令,报告确切的失败或缺失命令。不要重写源文件来"修复"测试失败。
5. **部署阶段**:代码提交或准备好发布后,使用现有命令构建前后端,通过已签入的 OSS 部署脚本发布前端,通过 SSH 处理后端 jar 上传/重启。
---
## 核心规则
### 第一性原理思考
- 从原始需求和问题出发,不要从用户偏好的实现路径假设出发。
- 不要假设用户已经确切知道他们想要什么或如何实现。
- 对动机、目标和范围保持谨慎。如果底层目标或业务目标不清晰,先与用户讨论再实现。
### 解决方案和重构规则
- **不要**提出兼容性补丁式或临时修复式方案。
- **不要**过度设计。使用最短的正确实现路径。
- **不要**添加用户未要求的回退、降级或额外解决方案分支。
- **不要**提出超出用户明确需求且可能改变业务逻辑的任何方案。
- 每个修改或重构方案在呈现前,必须在完整请求路径中进行逻辑验证。
---
## 仓库专项规范
### 前端专项规范(适用于 `front/` 目录操作)
- 路由行为保留在 `src/pages`,共享非 UI 逻辑保留在 `src/lib`。
- 测试文件紧邻其验证的状态/辅助模块,遵循已有的 `*.test.ts` 模式。
- 保留当前的 Vite 别名用法:`@/*` 从 `front/` 目录根解析。
- 如果修改依赖后端 API 行为,修改前先验证 `vite.config.ts` 中的代理配置,不要硬编码 URL。
- 前端 API 代理定义在 `front/vite.config.ts``VITE_BACKEND_URL` 默认值为 `http://localhost:8080`。
- 前端发布使用 `node scripts/deploy-front-oss.mjs`,不要手动上传对象。
- 前端测试已存在于 `front/src/**/*.test.ts`,新测试紧邻其验证的状态或库模块。
### 后端专项规范(适用于 `backend/` 目录操作)
- 包布局:
- `auth`认证、JWT、登录/注册/个人资料 DTO 和服务
- `files`:文件 API 和存储流,包括 `files/storage`
- `cqu`CQU 课程表/成绩聚合
- `config`Spring 和安全配置
- `common`:共享异常和通用工具
- `admin`:管理员功能
- `transfer`:文件传输功能
- 保持 controller、service、DTO、config 和 storage 职责按当前包边界分离。
- 修改 `auth`、`files` 或 `cqu` 时,先检查现有测试包是否已覆盖该区域,再在其他地方添加新文件。
- 遵守 `application-dev.yml` 中的 `dev` profile不要硬编码绕过 H2 或模拟 CQU 行为的假设。
- 后端本地开发行为分布在 `backend/src/main/resources/application.yml` 和 `application-dev.yml` 中;`dev` profile 使用 H2 和模拟 CQU 数据。
- 如果修改影响文件存储行为,注意仓库当前支持本地存储和 OSS 相关迁移/部署脚本。
- 优先使用 Maven 命令进行验证,而不是临时 shell 管道。
- 后端测试已存在于 `backend/src/test/java/com/yoyuzh/...`;优先在匹配的包中添加或更新测试。
- 不要将 `backend/target/` 产物提交到 git除非用户明确要求。
### 文档专项规范(适用于 `docs/` 目录操作)
- 文档应是具体的、与仓库相关的。
- 优先记录 `front/package.json`、`backend/pom.xml`、`backend/README.md`、`front/README.md` 或已签入脚本文件中已存在的命令。
- 不要引入占位符命令,如虚构的根目录 `npm test`、后端 lint 脚本或独立的前端 typecheck 脚本。
- 文档验证时,明确说明差距:后端 lint/typecheck 命令未定义,前端类型检查通过 `npm run lint` 进行。
- 计划或交接文档应绑定到实际仓库路径,如 `backend/...`、`front/...`、`scripts/...` 和 `docs/...`。