startup-plan/工作日志/2026-05-21.md
2026-05-21 17:14:06 +08:00

6.8 KiB
Raw Blame History

工作日志 — 2026-05-21


Admin Starter 全栈搭建

概览

从空壳脚手架搭建完整的知习 Admin 企业后台管理系统,前后端总计 7 个阶段。


前端admin-projects— 7 阶段

Stage 1基础设施

  • 安装 dayjsechartsecharts-for-react
  • 新建 src/types/admin.ts — AdminUser, DashboardStats, AuditLog, TrendPoint 类型
  • 新建 src/types/api.ts — PaginatedResult, PaginationParams, ApiError
  • 新建 src/constants/roles.ts — 角色名映射、层级判断 hasRole()
  • 新建 src/services/token-store.ts — localStorage 读写
  • 新建 src/services/http-client.ts — Fetch 封装401 自动刷新队列)
  • 新建 src/services/admin-api.ts — 类型化 API 函数login/logout/dashboard/users/audit
  • 新建 src/services/mock-data.ts — DEV 模式 Dashboard / 审计日志 mock 数据
  • 配置 @/ 路径别名vite.config.ts + tsconfig.app.json

Stage 2认证体系重构

  • 新建 src/hooks/use-auth-query.ts — useAdminUserQuery / useLoginMutation / useLogoutMutation
  • 重构 AuthContext — 改为消费 React Query hooks新增 hasPermission(role)

Stage 3布局与路由

  • 新建 PageLoading — 路由懒加载 Spin
  • 新建 PermissionGuard — 角色不足重定向 /403
  • 新建 config/menu.tsx — 集中式菜单树,带角色过滤 filterMenuByRole()
  • 新建 routes/index.tsx — 路由配置 + React.lazy 懒加载
  • 新建 AdminLayout — 环境标识 Tag、角色过滤菜单、面包屑、用户下拉含角色显示
  • 新建错误页403 / 404 / 500antd Result
  • 重构 App.tsx — 懒加载 + PermissionGuard + Suspense + 404 catch-all
  • 删除旧 MainLayout.tsx

Stage 4共享组件库7 个)

组件 说明
StatusTag 彩色状态标签,支持自定义 statusMap
EmptyState 空状态占位,带可选操作按钮
DetailDrawer 侧滑详情抽屉560pxloading 态)
ConfirmDangerModal 高危确认弹窗(需输入名称二次确认)
EChartsChartContainer 图表容器Card + loading/empty 态)
MetricCard 指标卡(数值 + 趋势箭头 + loading
AuditLogTable 审计日志 ProTable预设列 + 详情抽屉)

Stage 5页面

  • Dashboard — 4 MetricCard + 2 ECharts日活/AI 调用趋势)+ AuditLogTable
  • UserManagement — ProTable搜索/筛选/详情抽屉/删除确认)
  • Login — 左右分栏设计(浅蓝渐变品牌面板 + 白色表单区)

Stage 6后端 API

新建 3 个 NestJS 模块:

  • AdminDashboardModuleGET /admin-api/dashboard/stats(聚合统计 + 30 天趋势)
  • AdminUsersModule — CRUD /admin-api/admin-users(分页/搜索/角色筛选SUPER_ADMIN 守卫)
  • AdminAuditLogModuleGET /admin-api/audit-logs(分页/用户/操作/日期筛选)

Prisma SchemaAdminAuditLog 新增 adminUser 反向关系。

Stage 7收尾

  • index.html title → "知习 Admin"
  • index.css 替换为 admin 最小重置
  • 删除 Vite 模板遗留资源hero.png, react.svg, vite.svg
  • 修复 TS 6 baseUrl deprecation
  • 更新 README.md技术栈/目录结构/认证流程/角色体系)
  • 新增 CHANGELOG.md

Bug 修复

1. structuredClone React 19 兼容性

  • 现象/audit 等页面白屏
  • 根因AdminLayout 对包含 React 元素的菜单数据使用 structuredCloneReact 19 内部 Symbol 无法被结构化克隆:DataCloneError: Symbol(react.transitional.element) could not be cloned
  • 修复filterMenuByRole 内部用 spread 创建新对象,不需要 deep clone直接移除 structuredClone 调用

2. echarts-for-react CJS/ESM 互操作

  • 现象Dashboard 报错 Element type is invalid: expected a string but got: object
  • 根因echarts-for-react/lib/core 是 CJS 产物default export 在 Vite ESM 环境下解析失败
  • 修复:改用 echarts-for-react/esm/core

3. Login 页面样式优化

  • 左侧面板从深蓝黑渐变 #001529 → 改为浅蓝色 #e6f4ff → #bae0ff → primary
  • 去掉 DEV 环境标签
  • 去掉装饰性统计数字
  • 副标题改为"企业知识管理中台"

4. MetricCard 高度不一致

  • 修复Card 加 height: '100%' 配合 Row flex 等高
  • 恢复 antd 默认紧凑 padding
  • 趋势区不强制占位

5. AuditLogTable 分页边距

  • 去掉 cardProps: { bodyStyle: { padding: 0 } }
  • 标题改用 ProTable headerTitle 属性
  • 恢复 ProTable Card 默认内边距

6. 杂项

  • AuthGuard Spin tip 属性警告 → 移除
  • useRef<ActionType> 需要初始值 → 改为 useRef<ActionType>(undefined)
  • AdminRoles 装饰器参数需用 enum 值而非字符串字面量

当前状态

前端

  • TypeScript 编译
  • Vite 生产构建
  • 所有路由可访问,权限守卫生效
  • Mock 数据在 DEV 模式下正常回退Dashboard + AuditLog

后端

  • NestJS 编译
  • Prisma 模型就绪AdminUser + AdminSession + AdminAuditLog 含关系)
  • 3 个新模块已注册到 app.module.ts
  • 待部署到生产并跑 migration

待做

  • Admin API 部署到 8核32G 生产服务器
  • Prisma migrateAdminAuditLog 新增 adminUser 关系)
  • 前后端联调验证
  • Dashboard 真实数据验证
  • 管理员 CRUD 端到端测试

Agent View 工作流配置(实验 → 废弃)

创建

  • 根目录 CLAUDE.md + .claude/agents/ 下 6 个 Agent 配置
  • 5 个子项目各创建 CLAUDE.md + AI_xxx_WORKSPACE.md
  • startup-plan/agent-config/ 备份目录
  • 设计完整工作流任务分级、文件所有权、Review 触发、错误回滚、提交后归档

问题

  • Agent View 实测无法使用
  • 文档冗余README.md + CLAUDE.md + WORKSPACE 三层重叠

清理

  • 删除所有 Agent 配置、CLAUDE.md、AI_WORKSPACE.md
  • 删除 startup-plan/agent-config/
  • 还原各 README 中 "For AI Agents" 章节
  • 推送所有仓库

devops-projects 仓库

  • 新建 devops-projects/ 目录
  • startup-plan/凭据配置/ 迁移服务器凭据
  • 创建 devops-projects/README.md
  • 推送到 wangdl/devops-projects

Hermes Agent 部署4核4G 轻量云)

项目
镜像 nousresearch/hermes-agent:latest
模型 deepseek-v4-flash
Provider DeepSeek 官方 API
Thinking reasoning_effort: max
内网地址 http://10.2.0.7:9119
持久化 sleep infinity 保活 + --restart unless-stopped

踩坑记录

  • 容器交互模式无 TTY 立即退出 → sleep infinity 保活
  • Dashboard 需 HERMES_DASHBOARD=true 开启
  • 内网访问需同时开 Lighthouse 防火墙 + iptableslo 回环规则不覆盖 eth0
  • Gitea push 需用 ssh://git@git.longde.cloud:2222 格式认证为 repo 所有者