# CLAUDE.md 本文件为 Claude Code (claude.ai/code) 在本仓库中工作时提供指导。 ## 项目概述 **洛天依应用管理后台 (qy-lty-admin)** —— 基于 **Next.js 15 (App Router) + React 19 + TypeScript** 构建的 Web 管理后台,搭配 Tailwind CSS + Radix UI / shadcn 风格组件库。 后端 API 由独立项目 [qy_lty](../qy_lty/) 提供(Django,路径 `C:\Users\admin\Desktop\Lila-Server\qy_lty`),通过 `NEXT_PUBLIC_API_BASE_URL` 配置接入,主要使用 `/api/v1/admin/` 模块。 ## 开发命令 ```bash # 安装依赖(Dockerfile 用 yarn + 淘宝镜像源;本地 npm/pnpm 也可) npm install # 开发模式 npm run dev # 默认 http://localhost:3000 # 生产构建(standalone 输出) npm run build && npm run start # 类型检查 npm run lint ``` 环境变量(`.env.local`): - `NEXT_PUBLIC_API_BASE_URL` —— 后端 qy_lty 服务地址 ## 架构要点 ### 技术栈 | 类别 | 选型 | |------|------| | 框架 | Next.js 15.2.4(App Router、standalone 输出)| | 语言 | TypeScript 5、React 19 | | 样式 | Tailwind CSS 3.4 + `tailwindcss-animate` | | 组件 | Radix UI + shadcn 风格封装([components/ui/](components/ui/))| | HTTP 客户端 | Axios(含请求/响应拦截器)| | 表单 | React Hook Form + Zod | | 图表 | Recharts | | 通知 | Sonner + Radix Toast | ### 路由与页面(App Router) - `app/page.tsx` —— 仪表盘首页 - `app/login/`、`app/register/`、`app/forgot-password/` —— 账户流 - 业务模块(按权限分组): - **AI 管理**:`/ai-model` - **内容管理**:`/outfits`、`/props`、`/home-decor`、`/food`、`/songs`、`/dances`、`/achievements`、`/affinity` - **系统管理**:`/users`、`/permissions`、`/settings` ### 鉴权与权限 - 角色信息存于 `localStorage.user_role` - 模块权限矩阵定义在 [lib/permissions.ts](lib/permissions.ts) - 侧边栏 [components/sidebar.tsx](components/sidebar.tsx) 客户端按角色过滤可见菜单 - 路由保护中间件:[middleware.ts](middleware.ts) ### API 集成 - Axios 实例 + 拦截器统一注入 token - 所有请求走 `NEXT_PUBLIC_API_BASE_URL + /api/v1/admin/...` - 后端鉴权 token 复用 qy_lty 的 Redis token 体系(admin token key 为 `admin_token:{token}`) ## 跨仓库联动 本仓库**依赖** [qy_lty](../qy_lty/) 后端的 `/api/v1/admin/` 接口。修改任何接口契约(请求/响应结构、字段、URL)的改动**必须同时**: 1. 在 [qy_lty/docs/修改记录.md](../qy_lty/docs/修改记录.md) 记录服务端改动 2. 在 [docs/修改记录.md](docs/修改记录.md) 记录前端配套改动 3. 两端条目相互引用对方的同期条目 ## 项目修改记录规则(重要 — 自动执行) 每次对本仓库代码做出改动后,**必须**在同一会话内把变更追加到 [docs/修改记录.md](docs/修改记录.md) **顶部**(最新在最前),不要等用户提醒。条目格式遵循该文件头部"修改格式说明"约定: ``` ### [日期] 修改简述 - **文件路径**: 相对于项目根目录的文件路径 - **修改类型**: 新增 / 修改 / 删除 / 重构 / 修复Bug - **修改内容**: 具体修改了什么 - **修改原因**: 为什么要做这个修改 ``` ### `qy-lty-admin` 与 `qy_lty` 是独立项目,各自维护 - `qy-lty-admin/docs/修改记录.md` —— **仅**记录管理后台前端(本仓库)改动 - `qy_lty/docs/修改记录.md` —— **仅**记录服务端改动 跨项目联动改动:**两端各写一条**,相互引用对方的修改记录条目,不要混在同一条记录里。 ### 适用范围 - 业务代码、配置、`package.json`、Dockerfile、CI、文档结构性改动 → **必须**记录 - 单纯的 typo 修复、注释微调 → 可省略 - 临时调试脚本、`.gitignore` 中文件、本地实验文件 → 不记录 ## 注意事项 - **语言**:用户偏好**中文**沟通;注释、commit message 用中文 - **包管理器**:项目同时存在 `package-lock.json` 和 `pnpm-lock.yaml`;Dockerfile 用 yarn + 淘宝镜像源。本地开发任选其一即可,但**不要混用**导致 lock 文件冲突 - **shadcn 组件**:[components/ui/](components/ui/) 下的组件是 shadcn 复制粘贴风格(不是 npm 包),可以直接修改源码而不破坏第三方升级 ## 相关文档 - [README.md](README.md) —— 完整功能概览、权限矩阵、部署指南 - [docs/修改记录.md](docs/修改记录.md) —— 本仓库变更历史(强制维护) - [../qy_lty/CLAUDE.md](../qy_lty/CLAUDE.md) —— 后端项目上下文与跨仓库联动规则