继续进行法律文书智能摘要系统的开发,加入了管理员的页面,并优化了一些功能
设计管理员页面
现有前端信息
| 数据模型 | 说明 |
|---|---|
| users | 用户账号信息,包括登录凭证、个人资料等 |
| documents | 文档基础信息,如标题、类型、上传者、存储路径等 |
| annotations | 文档内的批注/标注记录(如高亮、评论等) |
| annotation_threads | 批注的讨论线程,支持多轮回复与协作 |
| chat_sessions | 对话会话,记录用户与AI助手的每一次连续对话 |
| chat_messages | 对话消息,每条会话中的具体问答内容 |
| feedback | 用户对系统功能或AI输出的反馈(评分、意见等) |
| batch_tasks | 批量处理任务,如批量摘要、批量导入等异步作业 |
| summary_feedback | 用户对摘要生成结果的针对性反馈(准确性、完整性等) |
现有后端 API (15 个模块)
/api/auth/* 、 /api/documents/* 、 /api/summary/* 、 /api/annotations/* 、 /api/chat/* 、 /api/storage/* 、 /api/feedback/* 、 /api/knowledge-graph/* 、 /api/batch-summary/* 、 /api/user-db/* 、 /api/similar-cases/* 、 /api/export/* 、 /api/keywords/* 、 /api/statistics/* 、 /api/law/*
核心数据模型
users 、 documents 、 annotations 、 annotation_threads 、 chat_sessions 、 chat_messages 、 feedback 、 batch_tasks 、 summary_feedback这一部分用表格的形式呈现
问题
系统里有两套用户体系 ,但都没有可以直接登录的管理员账号:
-
批注系统的用户 (
annotation_users表)-
在代码中硬编码了三个用户:
admin、editor、viewer -
但它们没有密码 ,只用于控制"批注功能"的权限,不能用来登录系统。
-
-
主登录系统的用户 (
users表)-
只存了
username、email、password -
没有角色字段 (如
role),所以所有普通账号在登录后都没有"管理员"身份。
-
-
前端管理路由 (
/admin)-
配置了
requiresAdmin: true守卫,要求管理员才能访问 -
但后端没有任何判断用户是否为管理员的逻辑,所以这个守卫实际无效。
-

阶段1
新增文件 (4 个)
1.AdminLayout.vue
管理端基础布局:深色左侧导航栏 + 白色顶栏 + 内容区,可收缩侧边栏,用户头像下拉菜单
2.admin/DashboardView.vue
系统仪表盘:4 个统计卡片(用户/文书/AI对话/反馈)+ 活跃度柱状图 + 最新动态列表
3.admin/UsersView.vue
用户管理:搜索/筛选/分页表格,支持编辑角色、启用/禁用、重置密码、删除用户
4.admin/DocumentsView.vue
文档管理:搜索/类型/状态筛选表格,支持下载、删除、处理状态监控
修改文件 (2 个)
main.ts 新增管理端路由( /admin 嵌套路由 + 角色守卫),旧的 /admin/feedback 路由整合到管理端布局下
App.vue 管理端页面使用独立布局(不套用用户端侧边栏),用户面板新增"管理后台"入口
管理员账号信息
-
用户名 : admin
-
密码 : admin123
-
角色 : admin
改动
后端 (3个文件) :
-
db.py --- users 表增加 role 字段, init_db() 启动时自动创建默认管理员账号, create_user() 支持 role 参数
-
main.py --- 登录/验证码登录接口返回用户完整信息(含角色),登录后自动同步到批注用户表
-
connection.py --- 新增 sync_annotation_user() 函数,将主系统用户自动同步到 annotation_users 表
前端 (3个文件) :
-
auth.ts --- 新增 setUserRole() / getUserRole() 函数, clearToken() 同时清除角色
-
LoginView.vue --- 密码登录和验证码登录成功后保存用户角色
-
main.ts --- 路由守卫改为基于 getUserRole() 判断是否为管理员(不再使用用户名模糊匹配)
登录方式
-
启动后端后, admin / admin123 默认账号会自动创建(如果数据库中不存在)
-
使用该账号登录即可访问 /admin 管理后台
-
普通用户通过注册页面创建,默认角色为 user ,无法访问管理后台

优化
1.管理员登录后直接进入的是后台管理页面而不是上传文档的主界面
2.管理员的管理后台界面的左侧栏需要跟用户界面的参数相同,统一参数
管理员也可以到用户界面,也可以从用户界面跳转

阶段2
1. 后端管理端鉴权中间件
- 描述:当前所有 /api/admin/* 接口无认证校验,任何知道接口的人都能调用
- 价值:防止未授权访问,保护用户数据和系统安全
- 技术实现 :
- 新增 admin_required 中间件/依赖注入
- 验证请求携带的 token,查询用户 role = 'admin'
- 所有 admin API 统一挂载此依赖
2. 操作审计日志
- 描述:记录管理员的关键操作(修改角色、删除用户、删除文档)
- 价值:追溯操作历史,满足合规要求
- 技术实现 :
- 新建 audit_logs 表(id, admin_id, action, target_type, target_id, detail, created_at)
- 在更新角色、删除用户等操作时写入日志
- 新增 /admin/audit-logs API 和前端页面
3. 反馈管理真实数据
- 描述:反馈管理页面当前返回空数据 stub
- 价值:让反馈收集功能真正可用
- 技术实现 :
- 在 app.db 或 legal_docs.db 中创建 feedbacks 表
- 实现 get_feedback_stats_global、list_feedbacks 函数
- 前端反馈页面替换 emoji 为线性 SVG 图标
- 后端管理端鉴权中间件
-
admin_auth.py --- 新增 get_admin_user 依赖注入函数,验证 X-Admin-Username 请求头对应的用户角色为 admin ,非管理员返回 403
-
admin_api.py --- 所有管理端 API( /stats 、 /users 、 /documents )统一挂载 admin=Depends(get_admin_user) ,非管理员无法调用
-
http.ts --- 前端请求 /admin/ 路径时自动携带 X-Admin-Username 、 X-Admin-Role 、 X-Admin-Token 请求头
- 操作审计日志
-
db.py --- 新增 audit_logs 表(管理员用户名、操作、目标类型、目标 ID、详情、时间戳)
-
admin_api.py --- 新增 GET /admin/audit-logs 分页接口
-
AuditLogsView.vue --- 新增审计日志页面,展示操作时间、管理员、操作类型、目标、详情
-
AdminLayout.vue --- 左侧导航新增"审计日志"入口(盾牌图标 SVG)
-
审计自动记录 :修改用户角色、删除用户时自动写入日志
- 反馈管理真实数据
-
db.py --- 新增 feedbacks 表(文档 ID、角色、评分、评论、IP、状态、管理员备注等)
-
db.py --- 实现完整的反馈 CRUD 函数: save_summary_feedback 、 get_feedback_stats 、 get_user_feedback 、 get_feedback_stats_global 、 list_feedbacks
-
summary.py --- 恢复所有反馈 API 端点调用真实数据库函数
-
AdminFeedbackView.vue --- 全面重写:去除所有 emoji,改用线性 SVG 图标,对接真实统计数据,支持筛选、分页、状态展示
操作审计日志
操作审计日志用于 记录管理员在管理后台中的关键操作 ,实现对管理行为的追溯和审计。每次管理员执行敏感操作时,系统自动记录操作人、操作类型、目标对象和详细信息。
记录范围
当前自动记录以下操作:
记录内容 修改用户角色 在用户管理中编辑用户角色 用户名、被修改用户 ID、新角色(admin/user)
删除用户 在用户管理中删除用户 用户名、被删除用户 ID
未来可扩展记录的操作:删除文档、修改系统配置、导出数据等。

阶段3
1.仪表盘趋势图表
- 描述:当前仅展示静态数字,缺少时间维度的趋势分析
- 价值:帮助管理员快速了解系统增长情况
- 技术实现 :
- 后端新增 /admin/stats/history 接口,返回过去 7/30 天的日统计数据
- 前端使用 Canvas 或 SVG 绘制折线图(不引入第三方图表库,保持轻量)
- 展示文书上传量、对话量趋势
2. 用户管理增强
- 描述:补充缺失的用户管理功能
- 价值:提升管理效率,满足日常运维需求
- 具体功能 :
- 禁用/启用用户:不删除账号但禁止登录(增加 status 字段到 users 表)
- 最后登录时间:登录时更新 last_login_at 字段
- 批量操作:支持批量禁用/删除/修改角色
- 用户详情页:查看该用户上传的文书、对话历史、反馈记录
3. 文档管理增强
- 描述:补充文档管理的核心运维功能
- 价值:减少异常文档处理工作量
- 具体功能 :
- 上传者关联:文档列表显示上传者用户名
- 文档状态:展示处理中、已完成、处理失败状态
- 重新处理:对处理失败的文档触发重新向量化
- 批量下载/删除:支持多选操作
- 存储统计:显示总存储占用、文档大小分布

1.仪表盘趋势图
-
后端 --- admin_api.py GET /admin/stats/history?days=7|30 ,返回过去 N 天每日文书上传量和对话消息数
-
前端 --- DashboardView.vue 使用纯 SVG 折线图展示趋势,支持 7 天/30 天切换,蓝色线=文书上传、紫色线=对话消息,带坐标轴和图例
- 用户管理增强
-
数据库 --- db.py users 表新增 status (active/disabled)和 last_login_at 字段
-
登录拦截 --- main.py 被禁用用户登录时返回 403
-
最后登录 --- 登录成功后自动更新 last_login_at 时间戳
-
禁用/启用 --- admin_api.py PUT /admin/users/{id}/status ,前端 UsersView.vue 增加禁用按钮(锁/勾选图标)和状态徽章
-
批量操作 --- 复选框多选 + 批量启用/禁用/删除,确认弹窗二次确认
-
审计 --- 所有状态修改和删除操作自动记录审计日志
- 文档管理增强
-
上传者关联 --- db.py 新增 doc_uploaders 映射表,文档列表显示上传者用户名
-
文档状态 --- admin_api.py 通过 chunks 表判断文档状态(有切片=已处理,否则=处理中)
-
重新处理 --- admin_api.py POST /admin/documents/{doc_id}/reprocess ,触发重新向量化
-
前端展示 --- DocumentsView.vue 新增状态列、上传者列、状态筛选、重新处理按钮
优化
1.加入批注时的具体角色的标注(之前为解决的批注的角色为管理员,解决这里的标记错误)
另外,补充批注的删除按钮,现在的问题是,标准为已解决的批注无法删除;
解决问题:打开右侧面板的批注页面的时候,用户如果点击添加批注,右侧面板要回滚到最上方添加批注的页面;
另外,在文本的标注版页面,AI要点编辑按钮无效,这里换成删除按钮;

2.知识图谱构建按钮,更加明显
-
强化视觉层级
-
将按钮颜色改为品牌主色(如蓝色、绿色),使用高对比度背景。
-
增加按钮的圆角 和轻微阴影,使其从白色/浅灰背景中浮出。
-
-
调整按钮尺寸与位置
-
放大按钮的宽高(例如高度 40px → 48px),内边距更宽。
-
如果"构建图谱"是核心操作,可将其固定在左上角 或右侧操作栏顶部,与普通筛选器(如案由聚类、中精度)分开区域。
-
-
优化周围布局
-
把同类操作("重新聚类""导出CSV")归为一组,用分割线或背景色区块区分。
-
"构建图谱"按钮与这组操作之间留出更大间距,并置于最左或最上位置。
-

3.管理员界面加入退出的功能
管理员登录,然后管理界面和文书页面相互跳转的时候,加强了跳转按钮

4.管理员用户管理页面错误:操作中的修改密码与禁用的图标相同

5.管理员界面,打开文书返回时,返回的管理员的文书管理而不是用户的文书管理

小结
本次开发重点完成了法律文书智能摘要系统的管理员后台建设,并系统性地优化了多项核心功能。首先,新增了独立的管理端布局与四个管理页面(仪表盘、用户管理、文档管理、审计日志),通过数据库扩展和路由守卫实现了基于角色的访问控制,默认管理员账号可一键登录。同时,针对批注模块修复了角色标识错误、补充了删除功能并优化了交互体验;知识图谱构建按钮得到突出显示,管理界面与用户界面之间的跳转逻辑更加清晰,解决了返回路径错误和图标混淆等问题。
在系统安全与数据管理方面,引入了管理端鉴权中间件,所有 /api/admin/* 接口均需验证管理员身份,并新增操作审计日志表自动记录角色修改、用户删除等关键行为。反馈管理模块从空数据 stub 升级为真实数据库驱动,支持统计分析、筛选分页和 SVG 图标展示。仪表盘增加了基于 7/30 天的文书上传与对话消息趋势折线图;用户管理支持禁用/启用、最后登录时间记录、批量操作及用户详情页;文档管理完善了上传者关联、处理状态显示、重新处理失败文档以及批量下载/删除功能。整体而言,系统在功能性、安全性和运维效率上均得到显著提升。