Kahozue/thesis-admin-console
GitHub: Kahozue/thesis-admin-console
面向企业即时通讯中隐私保护社会工程学检测的前端管理控制台,支持多角色审批与审计追踪的重识别工作流。
Stars: 0 | Forks: 0
# thesis-admin-console
企业即时通讯(Microsoft Teams)中隐私保护社会工程学检测系统的管理控制台 MVP。作为关于 LLM 辅助威胁检测的硕士论文的实现产物而开发。
## 概述
该前端仪表板支持三种分析师角色 —— 安全分析师(SA)、合规经理(CM)和授权重识别员(AR)—— 审查由 LLM 风险评分流水线标记的假名化聊天对话,并在严格的审计追踪下授权受控的身份重识别。
系统刻意**仅在假名化数据上运行**:除非完成完整的 CM 审批 + AR 揭示工作流并记录在审计追踪中,否则绝不会暴露真实的用户身份。
## 架构上下文
```
Microsoft Teams
↓
System A (data collection + PII filtering + token mapping)
↓ pseudonymized text only
System B (LLM risk scoring) ← this UI consumes System B output
↓
Admin Console (this repo) — dashboard / alerts / re-identify / audit
```
PII 检测流水线(System A 组件)位于 [thesis-pii-pipeline](https://github.com/KahoKozue/thesis-pii-pipeline)。
## 技术栈
- React 18.3 + TypeScript 5.4(严格模式)
- Vite 5.4,Tailwind CSS 3.4,shadcn/ui
- react-router-dom 6,TanStack Query 5,Zustand 4
- react-hook-form 7 + Zod 3
- Recharts 2(折线图,环形图,自定义热力图)
- MSW 2(Service Worker 模拟 —— 无需后端即可运行)
- Vitest 2 + Testing Library 16(46 个单元/组件测试)
## 快速开始
```
npm install
npm run dev # http://localhost:5173
npm run test # run test suite
npm run typecheck # tsc --noEmit
npm run build # production build
```
复制 `.env.example` 到 `.env.local`(默认配置在 MSW 模拟下即可直接运行):
```
VITE_USE_MOCK=true
VITE_API_BASE_URL=/api/v1
```
## 演示流程
1. 打开 `http://localhost:5173` → 重定向至 `/login`
2. 选择角色:
- **SA** — 直接登录,可查看仪表板和警报
- **CM** — 触发 MFA 对话框(输入 `000000`)
- **AR** — 与 CM 相同
3. 完整的重识别流程:
1. SA:`/dashboard` → 热力图 → 点击高风险事件 → `/alerts/{id}`
2. SA:点击“发起重识别”(需要 ≥ 20 个字符的理由说明)
3. CM 登录 → `/reidentify/queue` → 批准 → MFA
4. AR 登录 → `/reidentify` → 揭示 → 第二次 MFA → 查看真实身份
5. AR:“结束会话并清除” → `/audit` 显示 5 条记录的追踪
边缘状态测试:
```
/dashboard?mockState=empty
/dashboard?mockState=5xx
/dashboard?mockState=forbidden
/dashboard?mockState=delayed
```
## PII 流水线集成
在与 PII API 服务器一同运行时,接入(Ingest)页面会显示实时的假名化处理:
```
# 终端 1:PII API
cd ../thesis-pii-pipeline/pii && python api_server.py # port 8503
# 终端 2:此 app
npm run dev
```
导航至 `/ingest`,加载内置示例,并检查显示 `PERSON_A`、`EMAIL_B` 等的别名映射。
## 项目结构
```
src/
├── pages/ 11 pages (dashboard, alerts, reidentify, audit, settings, ...)
├── components/
│ ├── ui/ shadcn/ui base components
│ └── domain/ heatmap, stability indicator, identity badge
├── features/
│ ├── auth/ roleStore (Zustand) + AR candidate list
│ └── dashboard/ risk trend and distribution charts
├── api/ 12 endpoint modules (aligned to spec)
├── types/ graph / analysis / audit / api / role / common
├── schemas/ Zod runtime validators
├── mocks/ MSW handlers + in-memory store + scenario data
└── lib/ permissions / alias / dateTime / risk / queryClient
```
## 已实现的功能
| ID | 功能 | 状态 |
|----|---------|--------|
| F-1 | 登录 + MFA 触发 | 完成 —— 角色切换器替代了 SSO;CM/AR 需要 000000 |
| F-2 | 仪表板热力图 | 完成 —— Tailwind 网格,点击进入过滤后的警报列表 |
| F-3 | 风险趋势折线图 | 完成 —— 高/中/低,D/W/M 切换 |
| F-4 | 风险分布环形图 | 完成 —— 扇区点击可过滤警报列表 |
| F-5 | 带分页和过滤器的警报列表 | 完成 |
| F-6 | 事件上下文页面 | 完成 —— 假名化,三面板布局 |
| F-7 | 威胁消息高亮 + 原因同步 | 完成 —— 双向 scrollIntoView |
| F-8 | 重识别请求 | 完成 —— RHF + Zod,≥ 20 个字符的理由,审计写入 |
| F-9 | 批准队列 + MFA | 完成 —— 仅限 CM |
| F-10 | AR 揭示(一次性 token) | 完成 —— 仅限状态,倒计时,beforeunload 清理 |
| F-11 | 拒绝路径 | 完成 —— 强制要求原因 + 第二次 MFA |
| F-12 | 标记为已处理 | 完成 —— 不可逆,审计写入 |
| F-13 | 审计追踪查询 | 完成 —— SA/AR 查看自己的;CM 查看所有的 |
| F-14 | 报告导出 | 完成(CSV) |
| F-15 | 系统设置(CM) | 完成(前端状态) |
## 已知的 MVP 限制
| 项目 | 原因 |
|------|--------|
| 真实的 SSO(SAML/OIDC) | 超出 MVP 范围;前端使用角色切换器 |
| 会话空闲超时 | 需要后端会话;已实现揭示的 15 分钟倒计时 |
| 真实的后端 API | 完整的 MSW 模拟;Zod schema 已准备好直接对接 API |
| XLSX 报告导出 | 因规格说明待澄清而暂缓 |
标签:AMSI绕过, React, Syscalls, TypeScript, Ubuntu, 前端管理后台, 威胁检测, 安全插件, 社交工程, 网络安全, 自动化攻击, 隐私保护