修改网盘显示等细节,登陆验证更加严格,同时允许一台设备在线

This commit is contained in:
yoyuzh
2026-03-20 18:08:59 +08:00
parent 43358e29d7
commit f8ea5a6f85
37 changed files with 1541 additions and 100 deletions

136
.clinerules Normal file
View File

@@ -0,0 +1,136 @@
# 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/...`。