lty/qy-lty-admin
pmc c0db8560c9
All checks were successful
Build and Deploy LTY / build-and-deploy (push) Successful in 9m39s
docs(03-03): 完成「Milestone v1.0 收尾」plan
- 03-03-SUMMARY.md 落地:Phase 3 收尾 plan + Milestone v1.0 收尾态确认(5 条 ROADMAP success criteria + 11 条需求 100% 交付)
- STATE.md:milestone status → completed,progress 100%(3/3 phase + 7/7 plan),决策段补 Plan 03-03 落地详情,会话连续性 + 下一步行动切到候选下一周期 milestone
- ROADMAP.md:Phase 3  Complete(3/3 plan),Milestones 段 v1.0  100% 交付
- REQUIREMENTS.md:CRED-FE-04 + CRED-FE-05 已勾选完成(Plan 03-02 已落地),更新条目记录 Plan 03-03 落地

Plan 级整体双重验证 4 段全过:
- A 段 tsc 反向断言:整体 67 条存量错误(与 Phase 1+2 持平)+ 反向断言对 3 个改动文件(layout.tsx / credential-slot-dialog.tsx / page.tsx)0 行命中
- B 段 grep specifics 全表:13 条 specifics + 2 条 Layout Toaster + 2 条反向防回归全部命中
- C 段 lockfile diff:4 个 manifest+lockfile 工作区 0 行 diff + Phase 3 全程(069c01d → HEAD)累计 0 行 diff
- D 段 lint:沿用 Phase 1+2 跳过判定(项目无 .eslintrc* / eslint-config-next)

3 处 Rule 3 环境兼容偏差(PowerShell ExecutionPolicy → npx.cmd / 正则 \l 警告 → [\\/] 字符类 / lockfile diff 锚点 HEAD~3 → 7065d73^ 更精确)已记入 SUMMARY,结论与 PLAN 期望一致

Milestone v1.0「通用凭据槽位前端集成」100% 交付:3/3 phase + 7/7 plan + 11/11 需求(CRED-01~06 后端 + CRED-FE-01~05 前端)+ 5/5 ROADMAP success criteria 全部确认通过
CLAUDE.md L70-94 修改记录强制规则闭环:Phase 1 / Phase 2 / Phase 3 三条 [2026-05-08] 条目按时间倒序排列在 docs/修改记录.md 顶部
2026-05-08 12:47:43 +08:00
..
2026-03-17 13:17:02 +08:00
2026-03-17 13:17:02 +08:00
2026-03-17 13:17:02 +08:00
2026-03-17 13:17:02 +08:00
2026-03-17 13:17:02 +08:00
2026-03-17 13:17:02 +08:00
2026-03-17 13:17:02 +08:00
2026-03-17 13:17:02 +08:00
2026-03-17 13:17:02 +08:00
2026-03-17 13:17:02 +08:00
2026-03-17 13:17:02 +08:00
2026-03-17 13:17:02 +08:00
2026-03-17 13:17:02 +08:00
2026-03-17 13:17:02 +08:00
2026-03-17 13:17:02 +08:00
2026-03-17 13:17:02 +08:00
2026-03-17 13:17:02 +08:00

洛天依应用管理后台 (qy-lty-admin)

洛天依 APP 配套的 Web 管理后台,基于 Next.js 15 (App Router) + React 19 + TypeScript 构建,搭配 Tailwind CSS 与 Radix UI/shadcn 风格组件库为运营与研发团队提供用户、AI 模型、卡牌、内容、权限等一体化的管理能力。后端 API 由 qy_lty 服务器项目统一提供(位于 C:\Users\admin\Desktop\Lila-Server\qy_lty)。


目录


功能概览

根据左侧导航及 lib/permissions.ts 中声明的权限模块,后台分为三大功能分组:

AI 管理

  • 大模型管理 /ai-model — 大模型框架接入、微调、语音克隆与合成、知识库管理入口

内容管理

  • 服装管理 /outfits
  • 道具管理 /props
  • 家居装饰管理 /home-decor
  • 食物管理 /food
  • 歌曲管理 /songs
  • 舞蹈管理 /dances
  • 成就管理 /achievements
  • 好感度系统 /affinity

系统管理

  • 用户管理 /users — 用户列表、检索、创建/编辑/删除、登录历史
  • 权限管理 /permissions — 角色与模块访问控制
  • 系统设置 /settings

仪表盘

首页 app/page.tsx 汇总关键指标(总用户、活跃用户、卡牌激活、对话次数)、系统概览图表与最近活动,并提供主要业务模块的快捷入口。

账户

  • 登录 /login、注册 /register、忘记密码 /forgot-password

技术栈

类别 选型
框架 Next.js 15.2.4App Router、standalone 输出)
语言 TypeScript 5
UI 库 React 19
样式 Tailwind CSS 3.4 + tailwindcss-animate
组件 Radix UI + shadcn 风格封装(见 components/ui/
图标 Lucide React
图表 Recharts
表单 React Hook Form + Zod + @hookform/resolvers
HTTP 客户端 Axios(含请求/响应拦截器)
通知 Sonner + Radix Toast
主题 next-themes
其他 js-cookiedate-fnsreact-day-pickerembla-carousel-reactcmdkvaul
包管理 兼容 npm / yarn / pnpmDockerfile 使用 yarn + 淘宝镜像源)

权限矩阵

基于角色 (RBAC) 控制模块访问,定义位于 lib/permissions.ts。角色信息存储在 localStorage.user_role,由侧边栏 components/sidebar.tsx 在客户端根据角色过滤可见菜单。

模块 / 角色 超级管理员 内容管理员 AI模型管理员 卡牌管理员 查看者
仪表盘
用户管理
权限管理
AI 模型管理
服装 / 道具 / 家居 / 食物
歌曲 / 舞蹈 / 成就 / 好感度
系统设置

辅助 APIgetUserRole()getAllowedModules()hasPermission(module)hasPathPermission(pathname)


快速开始

环境要求

  • Node.js 22.x 及以上(与 Dockerfile 中的 node:22.10.0-alpine 对齐)
  • 包管理器npm / yarn / pnpm 任意其一
  • 可访问的 Lila-Server API 服务

本地开发

# 1. 安装依赖
pnpm install       # 或 yarn / npm install

# 2. 配置环境变量
cp .env.example .env.local
# 编辑 .env.local填入 NEXT_PUBLIC_API_BASE_URL

# 3. 启动开发服务器(默认 http://localhost:3000
pnpm dev           # 或 yarn dev / npm run dev

可用脚本

命令 说明
next dev 启动开发服务器HMR
next build 生产构建(启用 webpackBuildWorker 与并行编译)
next start 启动生产服务器
next lint ESLint 检查(构建时已通过 ignoreDuringBuilds 忽略)

注意:next.config.mjseslint.ignoreDuringBuildstypescript.ignoreBuildErrors 均为 true,构建不会因 lint / 类型错误而失败,务必在本地执行 next linttsc --noEmit 保证质量。


环境变量

采用 Next.js 标准的环境变量机制,加载优先级(从低到高):

.env → .env.development / .env.production → .env.local

暴露给浏览器的变量必须以 NEXT_PUBLIC_ 前缀声明。

变量 说明 默认值
NEXT_PUBLIC_API_BASE_URL 后端 API 基础地址,被 lib/api/client.ts 的 axios 实例使用 http://localhost:8000/api

初始化示例(存在 .env.example / .env.local.example 时):

cp .env.example .env
cp .env.local.example .env.local

项目结构

qy-lty-admin/
├── app/                        # Next.js App Router 页面
│   ├── page.tsx                # 仪表盘首页
│   ├── layout.tsx              # 根布局
│   ├── globals.css             # 全局样式
│   ├── login/ register/ forgot-password/
│   ├── ai-model/               # AI 模型管理
│   ├── outfits/ props/ home-decor/ food/   # 卡牌管理
│   ├── songs/ dances/ achievements/ affinity/  # 内容管理
│   ├── users/ permissions/ settings/       # 系统管理
├── components/
│   ├── ui/                     # shadcn 风格的 Radix UI 封装
│   ├── sidebar.tsx             # 带权限过滤的侧边栏
│   ├── dashboard-shell.tsx     # 后台外壳布局
│   ├── dashboard-header.tsx    # 页头
│   ├── overview.tsx            # 仪表盘图表
│   ├── recent-activity.tsx     # 最近活动列表
│   ├── stat-card.tsx           # 指标卡片
│   ├── *-dialog.tsx            # 新增 / 删除 / 发布等对话框
│   └── <module>/               # 按业务模块拆分的业务组件
├── hooks/
│   ├── use-mobile.tsx          # 响应式断点 hook
│   └── use-toast.ts            # Toast hook
├── lib/
│   ├── api/                    # 业务 API 模块(见下节)
│   ├── permissions.ts          # 角色 / 权限矩阵
│   └── utils.ts                # cn 等通用工具
├── middleware.ts               # 基于 cookie 的路由保护
├── public/                     # 静态资源
├── styles/                     # 附加样式
├── Dockerfile                  # 多阶段构建builder + runner
├── docker-compose.yml          # 容器编排(端口 3030→3000
├── next.config.mjs             # standalone 输出、实验项
├── tailwind.config.ts
└── tsconfig.json

鉴权与路由保护

项目采用"Cookie + localStorage + 前端权限矩阵"的三层方案:

  1. Cookie (auth_token) — 由 middleware.ts 读取。受保护路径列表见 protectedPaths,未携带 token 时重定向至 /login?callbackUrl=<original>
  2. localStorage (auth_token) — 由 lib/api/client.ts 的 axios 请求拦截器在每个请求上自动附加 Authorization: Bearer <token>;响应拦截器捕获 401 时清除 token 并跳转至 /login
  3. 前端权限矩阵lib/permissions.ts + components/sidebar.tsx,根据 localStorage.user_role 过滤菜单与页面入口。

服务端Next.js Middleware仅校验 token 是否存在;真正的权限校验由后端 API 在业务接口中执行,前端权限矩阵用于提升 UX 而非安全边界。


API 集成

所有业务 API 模块集中在 lib/api/

文件 职责
client.ts axios 实例、拦截器、基础 URL、Mock 辅助工具
auth.ts 登录 / 注册 / 登出 / Token 管理
users.ts / roles.ts 用户与角色
ai-models.ts AI 模型相关接口
outfits.ts / props.ts / home-decor.ts / food.ts / card.ts 卡牌体系
songs.ts / dances.ts / achievements.ts / affinity.ts 内容与互动
upload.ts 文件上传
adapters.ts 后端 DTO → 前端 ViewModel 转换
error-handler.ts 统一错误处理
token-debug.ts Token 调试工具
types.ts / song.type.ts 共享类型定义
index.ts 聚合导出与 Mock 用户 / 角色 API

index.ts 中包含 Mock 数据与 simulateDelay,供联调或离线开发使用;生产环境应确保实际请求打向 NEXT_PUBLIC_API_BASE_URL


构建与部署

本地构建

pnpm build
pnpm start         # 启动生产服务器

next.config.mjs 配置了 output: 'standalone',构建产物位于 .next/standalone,适合作为独立部署单元。

Docker

项目提供多阶段 Dockerfilebuilder + runner基于 node:22.10.0-alpine,使用淘宝 npm 镜像)与 docker-compose.yml

# 构建镜像并启动
docker-compose up -d --build

# 访问 http://<host>:3030

Compose 关键配置:

  • 容器名:lty-admin
  • 端口映射:宿主机 3030 → 容器 3000
  • 环境文件:.env.production
  • 挂载 ./public 以便热更新静态资源
  • restart: always 故障自动恢复

部署前确认 .env.production 已正确配置 NEXT_PUBLIC_API_BASE_URL


浏览器支持

最新稳定版本的 Chrome / Firefox / Safari / Edge。项目使用 React 19 与现代 CSS 特性,不再适配 IE。


许可证

MIT