feat(admin): add user-level direct permission system and enhance activity tracking
Features: - Add user_permissions table for direct user-to-permission grants (ops:user-ops) - Merge role_permissions + user_permissions in auth chain (login, middleware, getCurrentUser) - Add getUserQueryScope support for USER role with ops:user-ops (cross-tenant access) - Unify cross-tenant operation checks via getUserQueryScope (remove hardcoded SUPER_ADMIN checks) - Add 3 new API endpoints: GET/PUT /:id/permissions, GET /options/permissions - Support ops:user-ops as alternative permission on all user/tenant management routes - Frontend: add user-ops permission toggle on UserFormPage and UserDetailPage - Enhance DC module activity tracking (StreamAIController, SessionController, QuickActionController) - Fix DC AIController user ID extraction and feature name consistency - Add verify-activity-tracking.ts validation script - Update deployment checklist and admin module documentation DB Migration: 20260309_add_user_permissions_table Made-with: Cursor
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
# ADMIN-运营管理端 - 模块当前状态与开发指南
|
||||
|
||||
> **最后更新:** 2026-01-28
|
||||
> **状态:** ✅ Phase 4.6 Prompt 知识库集成功能完成!
|
||||
> **版本:** v0.8 (Alpha)
|
||||
> **最后更新:** 2026-03-10
|
||||
> **状态:** ✅ Phase 5.1 用户运营权限体系 + 运营埋点增强完成!
|
||||
> **版本:** v1.0 (Beta)
|
||||
|
||||
---
|
||||
|
||||
@@ -135,12 +135,40 @@
|
||||
- [x] 修复:发布按钮 400 错误
|
||||
- [x] 修复:发布后缓存未清除问题
|
||||
|
||||
**Phase 5.0:运营埋点增强** ✅ 已完成(2026-03-10)🎉
|
||||
- [x] 后端:ActivityService 增强(DAU/MAU/API Token/最活跃用户/模块统计)
|
||||
- [x] 后端:运营看板 API(`getTodayOverview` 新增 MAU、apiTokenTotal、topActiveUser)
|
||||
- [x] 后端:分页查询运营日志 API(`getActivityLogs` 支持日期/模块/动作/关键词筛选)
|
||||
- [x] 后端:用户360画像 API(`getUserOverview` 资产+行为概览)
|
||||
- [x] 后端:运营埋点全模块覆盖(9 大埋点全部到位)
|
||||
- SYSTEM(登录、顶部导航点击)
|
||||
- ASL(意图识别、启动 Deep Research)
|
||||
- AIA(10 个智能体对话使用)
|
||||
- PKB(创建知识库)
|
||||
- DC(上传数据文件、AI 流式清洗、快速操作)
|
||||
- RVW(稿件审查)
|
||||
- IIT(CRA 质控启动/完成)
|
||||
- [x] 前端:顶部导航点击埋点上报(fire-and-forget)
|
||||
- [x] 前端:运营看板展示 MAU/Token/最活跃用户(4 个统计卡片)
|
||||
- [x] 工具:埋点验证脚本 `npm run test:tracking`(9/9 覆盖)
|
||||
|
||||
**Phase 5.1:用户直授权限体系** ✅ 已完成(2026-03-10)🎉
|
||||
- [x] 数据库:新增 `user_permissions` 用户直授权限表(`platform_schema`)
|
||||
- [x] 数据库:Seed `ops:user-ops` 权限记录
|
||||
- [x] 后端:认证链路合并 role_permissions + user_permissions(`auth.service.ts`、`auth.middleware.ts`)
|
||||
- [x] 后端:`getUserQueryScope` 支持 USER 角色 + `ops:user-ops`(跨租户查看能力)
|
||||
- [x] 后端:用户管理 API 新增直授权限读写接口(`GET/PUT /:id/permissions`、`GET /options/permissions`)
|
||||
- [x] 后端:所有用户管理/租户管理 API 路由支持 `ops:user-ops` 替代权限
|
||||
- [x] 后端:跨租户操作检查统一收敛到 `getUserQueryScope`(消除硬编码角色白名单)
|
||||
- [x] 前端:用户创建/编辑页新增"用户运营权限"开关(Switch 组件)
|
||||
- [x] 前端:用户详情页支持查看和切换运营权限
|
||||
- [x] 前端:AdminLayout/TopNavigation 支持 `ops:user-ops` 入口
|
||||
|
||||
### ⏳ 待开发(按优先级)
|
||||
|
||||
**P2 - 用户管理增强(可选)**
|
||||
- [ ] 用户批量操作(批量禁用、批量分配租户)
|
||||
- [ ] 用户操作日志(audit_logs 集成)
|
||||
- [ ] 用户统计分析(活跃度、模块使用率)
|
||||
- [ ] 更多直授权限种类(当前仅 `ops:user-ops`,未来可扩展)
|
||||
|
||||
**P2 - Prompt 管理优化**
|
||||
- [ ] Prompt 版本对比功能
|
||||
@@ -152,6 +180,11 @@
|
||||
- [ ] 租户专属登录页
|
||||
- [ ] 配额管理界面
|
||||
|
||||
**P2 - 运营监控增强**
|
||||
- [ ] 用户停留时长统计(前端心跳上报)
|
||||
- [ ] 点击流分析与可视化
|
||||
- [ ] 单模块重试按钮(RVW partial_completed 场景)
|
||||
|
||||
---
|
||||
|
||||
## 🗄️ 数据库状态
|
||||
@@ -181,6 +214,7 @@ public.AdminLog -- 旧的审计日志
|
||||
- ✅ `role_permissions` - 角色权限
|
||||
- ✅ `verification_codes` - 验证码表
|
||||
- ✅ `modules` - 系统模块表(动态管理可用模块)🆕 2026-01-12
|
||||
- ✅ `user_permissions` - 用户直授权限表(不依赖角色的独立授权)🆕 2026-03-10
|
||||
|
||||
**capability_schema(通用能力)** ✅ 新增
|
||||
- ✅ `prompt_templates` - Prompt模板
|
||||
@@ -225,16 +259,17 @@ public.AdminLog -- 旧的审计日志
|
||||
|
||||
## 🔐 角色与权限矩阵
|
||||
|
||||
| 功能模块 | SUPER_ADMIN | PROMPT_ENGINEER | HOSPITAL_ADMIN | PHARMA_ADMIN | USER |
|
||||
|---------|-------------|-----------------|----------------|--------------|------|
|
||||
| 租户管理 | ✅ 全部 | ❌ | ❌ | ❌ | ❌ |
|
||||
| Prompt管理 | ✅ 全部 | ✅ 全部 | ❌ | ❌ | ❌ |
|
||||
| 用户管理(全局) | ✅ | ❌ | ❌ | ❌ | ❌ |
|
||||
| 用户管理(租户内) | ✅ | ❌ | ✅ | ✅ | ❌ |
|
||||
| 配额分配 | ✅ | ❌ | ✅ | ✅ | ❌ |
|
||||
| 审计日志(全局) | ✅ | ❌ | ❌ | ❌ | ❌ |
|
||||
| 审计日志(租户内) | ✅ | ❌ | ✅ | ✅ | ❌ |
|
||||
| 业务模块使用 | ✅ | ✅ | ✅ | ✅ | ✅ |
|
||||
| 功能模块 | SUPER_ADMIN | PROMPT_ENGINEER | HOSPITAL_ADMIN | PHARMA_ADMIN | USER | USER + ops:user-ops |
|
||||
|---------|-------------|-----------------|----------------|--------------|------|---------------------|
|
||||
| 租户管理(查看) | ✅ | ❌ | ❌ | ❌ | ❌ | ✅ |
|
||||
| 租户管理(创建/编辑) | ✅ | ❌ | ❌ | ❌ | ❌ | ✅ |
|
||||
| 租户管理(删除) | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
|
||||
| Prompt管理 | ✅ 全部 | ✅ 全部 | ❌ | ❌ | ❌ | ❌ |
|
||||
| 用户管理(全局) | ✅ | ❌ | ❌ | ❌ | ❌ | ✅ |
|
||||
| 用户管理(租户内) | ✅ | ❌ | ✅ | ✅ | ❌ | ✅ |
|
||||
| 配额分配 | ✅ | ❌ | ✅ | ✅ | ❌ | ❌ |
|
||||
| 运营日志/看板 | ✅ | ❌ | ❌ | ❌ | ❌ | ✅ |
|
||||
| 业务模块使用 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -3,7 +3,8 @@
|
||||
> **用途**: 开发过程中实时记录所有待部署的变更,下次部署时按此清单逐项执行
|
||||
> **维护规则**: 每次修改 Schema / 新增依赖 / 改配置时,**立即**在此文档追加记录
|
||||
> **Cursor Rule**: `.cursor/rules/deployment-change-tracking.mdc` 会自动提醒
|
||||
> **最后清零**: 2026-03-09(0309 二次部署完成后清零)
|
||||
> **最后清零**: 2026-03-09(0309 二次部署完成后清零)
|
||||
> **本次变更**: 用户直授权限体系 + 运营埋点增强 + 运营看板 MAU/Token(2026-03-10)
|
||||
|
||||
---
|
||||
|
||||
@@ -15,19 +16,29 @@
|
||||
|
||||
| # | 变更内容 | 迁移文件 | 优先级 | 备注 |
|
||||
|---|---------|---------|--------|------|
|
||||
| — | *暂无* | | | |
|
||||
| DB-1 | 新增 `user_permissions` 用户直授权限表 | `20260309_add_user_permissions_table` | 高 | 支持不依赖角色给单个用户授权(如 `ops:user-ops`),`platform_schema` 下,含外键和唯一约束 |
|
||||
| DB-2 | Seed:`permissions` 表插入 `ops:user-ops` 记录 | `prisma/seed.ts` 或手动 SQL | 高 | DB-1 之后执行;`INSERT INTO platform_schema.permissions (code,name,description,module) VALUES ('ops:user-ops','用户运营','运营管理端用户运营视图权限','ops') ON CONFLICT (code) DO NOTHING;` |
|
||||
|
||||
### 后端变更 (Node.js)
|
||||
|
||||
| # | 变更内容 | 涉及文件 | 需要操作 | 备注 |
|
||||
|---|---------|---------|---------|------|
|
||||
| — | *暂无* | | | |
|
||||
| BE-1 | 认证链路支持用户直授权限合并 | `auth.service.ts`, `auth.middleware.ts` | 重新构建镜像 | `getUserPermissions` 合并 `role_permissions` + `user_permissions`;`requirePermission` / `requireAnyPermission` 两级检查 |
|
||||
| BE-2 | 用户管理 API 新增直授权限读写接口 | `userController.ts`, `userService.ts`, `userRoutes.ts` | 重新构建镜像 | `GET/PUT /api/admin/users/:id/permissions` + `GET /api/admin/users/options/permissions` |
|
||||
| BE-3 | 用户详情 API 返回合并权限 | `userService.ts` (getUserById) | 重新构建镜像 | 详情页权限列表 = 角色权限 ∪ 用户直授权限 |
|
||||
| BE-4 | 运营埋点覆盖 6 大模块 | `deepResearchController.ts`, `reviewController.ts`, `AIController.ts`, `StreamAIController.ts`, `SessionController.ts`, `QuickActionController.ts`, `iitBatchController.ts`, `auth.controller.ts`, `auth.routes.ts` | 重新构建镜像 | ASL/RVW/DC/IIT/AIA/SYSTEM 埋点;DC 模块覆盖上传/流式AI/快速操作/非流式AI 全部 4 个入口 + 前端通用上报接口 `POST /api/v1/auth/activity` |
|
||||
| BE-5 | 运营看板增强(MAU/Token/最活跃用户) | `activity.service.ts`, `statsController.ts` | 重新构建镜像 | `getTodayOverview` 新增 MAU、apiTokenTotal、topActiveUser |
|
||||
| BE-6 | 埋点验证脚本 | `scripts/verify-activity-tracking.ts` | 无需部署 | `npm run test:tracking` 开发/运维自测用 |
|
||||
|
||||
### 前端变更
|
||||
|
||||
| # | 变更内容 | 涉及文件 | 需要操作 | 备注 |
|
||||
|---|---------|---------|---------|------|
|
||||
| — | *暂无* | | | |
|
||||
| FE-1 | 运营管理端支持 `ops:user-ops` 权限入口 | `AdminLayout.tsx`, `TopNavigation.tsx` | 重新构建镜像 | 非 SUPER_ADMIN 有 `ops:user-ops` 也可进入运营端 |
|
||||
| FE-2 | 用户创建/编辑页新增"用户运营权限"开关 | `UserFormPage.tsx`, `UserDetailPage.tsx` | 重新构建镜像 | Switch 控件,保存时调 `PUT /api/admin/users/:id/permissions` |
|
||||
| FE-3 | 用户管理 API 层新增权限接口 | `userApi.ts` | 重新构建镜像 | `getUserDirectPermissions` / `updateUserDirectPermissions` / `getPermissionOptions` |
|
||||
| FE-4 | 运营看板展示 MAU/Token/最活跃用户 | `StatsDashboardPage.tsx`, `statsApi.ts` | 重新构建镜像 | 新增 4 个统计卡片 |
|
||||
| FE-5 | 顶部导航点击埋点上报 | `TopNavigation.tsx` | 重新构建镜像 | 点击模块导航时 fire-and-forget 上报 |
|
||||
|
||||
### Python 微服务变更
|
||||
|
||||
@@ -45,7 +56,7 @@
|
||||
|
||||
| # | 变更内容 | 服务 | 变量名 | 备注 |
|
||||
|---|---------|------|--------|------|
|
||||
| — | *暂无* | | | |
|
||||
| — | *暂无*(本次无新增环境变量) | | | |
|
||||
|
||||
### 基础设施变更
|
||||
|
||||
|
||||
Reference in New Issue
Block a user