library-picturebook-activity/docs/design/org-admin/tenant-portal-optimization.md
aid 9215465bd5 Day5: 租户端全面优化 + 数据统计看板 + 成果发布完善
租户端基础设施:
- 新增工作台首页(欢迎信息/统计/待办/快捷操作/新手引导)
- 新增机构信息管理页(自助查看编辑机构信息)
- 修复403报错(fetchTenants加超管守卫)
- 修复权限(log:read/notice:update/notice:delete/contest:work:read)
- 修复评审规则组件映射

活动管理全模块优化(机构端视角):
- 活动列表:加统计概览+精简列+筛选自动查询+发布弹窗修复+操作逻辑优化
- 创建/编辑活动:重构布局(去card嵌套+栅格响应式+分区卡片)
- 评委管理:统一主色调+冻结确认+导入导出disabled
- 报名管理:去Tab+统计+审核状态列+批量审核接口
- 报名记录:统计概览+去机构列+撤销审核+返回按钮+去参与方式列
- 作品管理:去Tab+统计+递交进度彩色+筛选修复(assignStatus/submitTime)
- 评审进度:去Tab+统计+实际完成率状态+筛选修复
- 评审规则:表格加评委数/计算方式+描述列修复+删除保护
- 成果发布:去Tab+统计+操作文案优化
- 通知公告:统一主色调+发布确认+操作逻辑+状态筛选+时间范围

成果发布详情功能补全:
- 计算得分/排名/设置奖项三步操作流程
- 排名列(金银铜徽章)+奖项列+奖项筛选
- 自定义奖项(动态添加行替代硬编码一二三等奖)
- 后端AutoSetAwardsDto改为awards数组格式

数据统计看板(新模块):
- 后端analytics module(overview+review两个接口)
- 运营概览:6指标卡片+报名转化漏斗+ECharts月度趋势+活动对比表
- 评审分析:4效率卡片+评委工作量表+ECharts奖项分布饼图
- 菜单注册:数据统计→运营概览+评审分析

Bug修复:
- 超管重置其他租户用户密码报"用户不存在"
- gdlib登录快捷标签密码不一致
- 分配评委去掉评审时间限制

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-31 20:02:24 +08:00

181 lines
8.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 租户端(机构管理端)全面优化记录
> 所属端:租户端(机构管理员视角)
> 状态:已优化
> 创建日期2026-03-31
> 最后更新2026-03-31
---
## 概述
以广东省立中山图书馆gdlib为典型租户从机构管理员/运营人员视角全面审查并优化了租户端的所有模块。
## Day5 (2026-03-31) — 优化内容
### 基础设施
- [x] 数据隔离验证:确认活动/报名/作品查询全部带 tenantId 过滤
- [x] 日志菜单权限修复:补充 log:read 权限
- [x] 公告权限修复:补充 notice:update / notice:delete 权限
- [x] 403 报错修复fetchTenants 调用加 isSuperAdmin 守卫contests/Index, system/users/Index
- [x] 评审规则组件映射修复contests/ReviewRules 指向正确的 reviews/Index.vue
- [x] 作品详情路由权限修复work:read 改为 contest:work:read
### 工作台(新增)
- [x] 新增租户端工作台页面TenantDashboard.vue
- [x] 欢迎信息 + 机构标识(时段问候、管理员姓名、机构名称/类型)
- [x] 6个统计卡片可见活动/进行中/总报名/待审核报名/总作品/今日报名),可点击跳转
- [x] 空数据新手引导(三步:创建活动→添加成员→邀请评委)
- [x] 快捷操作按权限动态显示
- [x] 待办提醒(待审核报名 + 即将截止的活动)
- [x] 最近活动列表 + 查看全部入口
- [x] 后端 GET /contests/dashboard 接口
### 机构信息(新增)
- [x] 新增机构信息管理页面tenant-info/Index.vue
- [x] 查看/编辑机构名称和描述
- [x] 复制登录地址
- [x] 后端 GET/PATCH /tenants/my-tenant 接口
### 活动列表
- [x] 租户端加统计概览6个阶段卡片后端 getStats 加 tenantId 过滤)
- [x] 精简表格列(去掉主办方/可见范围/公开机构,加活动阶段列)
- [x] 筛选自动查询(下拉 @change
- [x] 报名/作品数可点击跳转
- [x] 修复发布弹窗机构选择 bug租户端用 my-tenant 接口获取自己信息)
- [x] 操作按钮逻辑优化(未发布:发布/编辑/删除;已发布:查看/评委/编辑/取消发布)
### 创建/编辑活动
- [x] 重构页面布局:去掉 card 嵌套,改为独立分区卡片
- [x] 修复 form layout 冲突vertical + labelCol
- [x] 去掉固定宽度,改用栅格响应式
- [x] 4 个分区:主办信息、活动信息、图片附件、时间配置
### 评委管理
- [x] 筛选自动查询
- [x] 导入/导出改为 disabled + tooltip
- [x] 主色调统一 #6366f1
- [x] 冻结/解冻二次确认
### 报名管理Index
- [x] 去掉个人/团队 Tab合并展示加类型列
- [x] 统计概览(总报名/待审核/已通过/已拒绝)
- [x] 表格加审核状态分类计数列(并行查询每个活动的统计)
- [x] 去掉手动启动/关闭报名
### 报名记录Records
- [x] 主色调统一
- [x] 统计概览 + 可点击筛选
- [x] 租户端去掉机构列
- [x] 筛选自动查询
- [x] 通过加二次确认
- [x] 批量审核改用后端批量接口 POST /contests/registrations/batch-review
- [x] 返回按钮
- [x] 去掉「参与方式」列(子女已改为独立账号)
- [x] 撤销审核功能 PATCH /contests/registrations/:id/revoke
### 作品管理Index
- [x] 去掉 Tab加统计概览 + 类型筛选
- [x] 递交进度彩色数字(已交/应交)
- [x] 活动名可点击
### 作品详情WorksDetail
- [x] 返回按钮
- [x] 统计概览
- [x] 租户端去掉机构筛选
- [x] 筛选自动查询(分配状态、递交时间、机构下拉)
- [x] 后端支持 assignStatus / name / submitStartTime / submitEndTime 筛选
- [x] 分配评委去掉评审时间限制(任何时候都可分配)
### 评审进度
- [x] 去掉 Tab加统计概览 + 类型筛选
- [x] 评审状态改用实际完成率(无作品/未开始/进行中/已完成)
- [x] 进度数字颜色区分
- [x] 评审进度详情页筛选修复(评审进度前端过滤生效)
### 评审规则
- [x] 组件映射修复
- [x] 主色调统一
- [x] 表格加评委数/计算方式列
- [x] 修复规则描述列数据展示错误
- [x] 已关联活动删除保护提示
- [x] Drawer 标题区分新建/编辑
### 成果发布Index
- [x] 去掉 Tab加统计概览全部/已发布/未发布)
- [x] 加发布状态筛选 + 类型筛选
- [x] 活动名可点击
- [x] 操作按钮文案优化(查看成果/发布成果)
### 成果发布详情Detail— 功能补全
- [x] 统计摘要(总作品/已评分/已排名/已设奖/平均分)
- [x] 三步操作流程(计算得分→计算排名→设置奖项)
- [x] 排名列(金银铜色徽章)
- [x] 奖项列(彩色标签)
- [x] 奖项筛选(动态从数据提取)
- [x] 单个设奖combobox选项来自自动设奖配置 + 已有数据)
- [x] 自动设奖改为自定义奖项(动态添加行:奖项名称+人数)
- [x] 后端 AutoSetAwardsDto 改为 awards 数组格式
- [x] 发布按钮二次确认
### 通知公告
- [x] 主色调统一
- [x] 发布/取消发布二次确认
- [x] 操作逻辑优化(未发布:发布/编辑/删除;已发布:查看/取消发布)
- [x] 发布状态筛选
- [x] 日期改为时间范围选择器
- [x] 创建时间列 + 按创建时间倒序
- [x] 后端支持 publishStartDate / publishEndDate 范围查询
### 新增 API
```
GET /contests/dashboard — 租户端仪表盘
GET /contests/stats (加 tenantId) — 活动统计支持租户过滤
GET /tenants/my-tenant — 获取当前租户信息
PATCH /tenants/my-tenant — 更新当前租户信息
POST /contests/registrations/batch-review — 批量审核报名
PATCH /contests/registrations/:id/revoke — 撤销报名审核
GET /contests/registrations/stats (加 tenantId) — 报名统计支持租户过滤
```
### 成果发布详情Detail— 功能补全
- [x] 统计摘要(总作品/已评分/已排名/已设奖/平均分)
- [x] 三步操作流程(计算得分→计算排名→设置奖项)
- [x] 排名列(金银铜色徽章)+ 奖项列(彩色标签)+ 奖项筛选
- [x] 自定义奖项支持(动态添加奖项名称+人数,替代硬编码一/二/三等奖)
- [x] 单个设奖combobox选项来自自动设奖配置 + 已有数据)
- [x] 后端 AutoSetAwardsDto 改为 awards 数组格式
### 数据统计模块(新增)
- [x] 后端 analytics.module / controller / service
- [x] GET /analytics/overview — 核心指标+漏斗+月度趋势+活动对比
- [x] GET /analytics/review — 评审效率+评委工作量+奖项分布
- [x] 前端安装 echarts + vue-echarts
- [x] analytics/Overview.vue — 6个指标卡片 + 报名转化漏斗 + ECharts月度趋势折线图 + 活动对比表
- [x] analytics/Review.vue — 4个效率卡片 + 评委工作量表 + ECharts奖项分布饼图
- [x] 菜单注册:数据统计(运营概览 + 评审分析)
### Bug 修复
- [x] 超管端重置其他租户用户密码报「用户不存在」— controller 增加超管判断跳过租户过滤
- [x] gdlib 登录快捷标签密码与实际不一致 — 更新为 admin123
### 新增 API完整
```
GET /contests/dashboard — 租户端仪表盘
GET /contests/stats (加 tenantId) — 活动统计支持租户过滤
GET /tenants/my-tenant — 获取当前租户信息
PATCH /tenants/my-tenant — 更新当前租户信息
POST /contests/registrations/batch-review — 批量审核报名
PATCH /contests/registrations/:id/revoke — 撤销报名审核
GET /contests/registrations/stats (加 tenantId) — 报名统计支持租户过滤
GET /analytics/overview — 运营概览统计
GET /analytics/review — 评审分析统计
```
### 数据库变更
- menus 表新增:工作台(id=50)、机构信息(id=51)、数据统计(id=52)、运营概览(id=53)、评审分析(id=54)
- permissions 表新增log:read、notice:update、notice:deletegdlib 租户)
- work_tags 表新增 color 字段
- 前端依赖新增echarts、vue-echarts