All checks were successful
Build and Deploy LTY / build-and-deploy (push) Successful in 8m44s
- Add affinity level/setting models and migrations - Migrate favorability data to UserDevice - Add management commands for userapp - Add admin CLAUDE.md and docs - Update affinity system design doc and task checklist - Update device_interaction and userapp models Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
107 lines
4.5 KiB
Markdown
107 lines
4.5 KiB
Markdown
# 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) —— 后端项目上下文与跨仓库联动规则
|