Skip to content

yangsa666/aka-platform

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

54 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AKA Platform - 企业级短链接管理平台

项目概述

AKA Platform是一个企业级短链接管理平台,提供安全、可靠的短链接生成、管理、审批和统计功能。系统支持Azure AD认证,实现了完善的权限控制和审批流程,帮助企业有效管理内部短链接资源。

用户指南

登录

打开应用后,点击 Sign in with Azure AD 按钮,通过 Azure AD 账号完成身份验证。登录成功后将自动跳转到主页面。


我的短链接(My Redirects)

查看列表

左侧导航点击 My Redirects,可以看到你作为所有者的所有短链接,表格展示以下信息:

  • Name:短链接名称,点击可跳转到详情页
  • Short URL:生成的短链接地址,点击可直接访问
  • Target URL:目标长链接
  • Status:审批状态(Pending / Approved / Rejected)
  • Owners:该短链接的所有者,鼠标悬停可查看邮箱
  • Created At:创建时间,可点击表头排序

搜索与筛选

每一列支持独立搜索:点击列头的 🔍 图标,在输入框中输入关键词后按 Enter 或点击 Search 确认。Status 列支持多选筛选。有筛选条件激活时,表格右上方出现 Reset All Filters 按钮,点击可一键清除所有过滤条件。

分页

表格右下角可调整每页显示数量(10 / 20 / 50 / 100)并支持页码跳转,设置在翻页后保持生效。

创建短链接

点击右上角 Create Redirect 按钮,填写以下信息:

  • Name:短链接的显示名称
  • Short Name:短链接的自定义路径(全局唯一,只允许小写字母、数字和连字符)
  • Target URL:目标地址(支持 https://http:// 及自定义 scheme,如 weixin://
  • Owners:至少添加一名所有者(包括你自己)
  • Description(可选):描述信息

提交后短链接进入 Pending 状态,等待管理员审批。审批结果会通过铃铛通知推送给所有 owners。

编辑短链接

在列表中点击对应行的 Edit 按钮,修改后重新提交,短链接将重置为 Pending 状态并再次进入审批流程,同时通知所有管理员。

删除短链接

点击 Delete 按钮,在确认弹窗中点击 Delete 永久删除,此操作不可恢复。

查看详情

点击 View 按钮或短链接名称,可查看详细信息,包括审批记录和点击统计。


Dashboard(统计面板)

左侧导航点击 Dashboard,可查看你的短链接整体统计数据:

  • 点击量趋势图
  • 各短链接访问排行
  • 设备类型分布等统计信息

通知铃铛

页面右上角导航栏右侧有一个铃铛图标 🔔。

  • 红色数字徽标:表示当前未读通知数量
  • 点击铃铛:展开通知列表,显示所有未读通知
  • 点击某条通知:标记为已读,并跳转到对应页面(审批类通知跳转到审批页,结果类通知跳转到 redirect 详情页)
  • Mark all read:一键将所有通知标记为已读并清空列表
  • 自动刷新:每 30 秒自动拉取一次最新通知,有新消息时徽标数量自动更新

通知类型说明:

通知类型 触发时机 接收人
Pending Review 创建或更新 redirect 后 所有管理员
Approved 管理员审批通过后 该 redirect 的所有 owners
Rejected 管理员审批拒绝后 该 redirect 的所有 owners

管理员功能(Admin)

以下功能仅限 Admin 角色用户可见。

Redirect Approval(审批页)

左侧导航点击 Admin → Redirect Approval,可查看所有用户提交的短链接并进行审批。

  • 顶部 Status 筛选器:快速过滤 Pending / Approved / Rejected 状态(server-side 查询)
  • 顶部 搜索框:全局关键词搜索(server-side 查询,支持名称、描述、短链接、目标URL)
  • 列头搜索(🔍):对 Name、Short URL、Target URL、Owners 进行 client-side 二次过滤,与server-side 搜索互补
  • Reset All Filters:清除所有列级过滤条件

对每条 Pending 状态的 redirect:

  • 点击 Approve:通过审批,该 redirect 的所有 owners 将收到"已批准"通知
  • 点击 Reject:拒绝申请,该 redirect 的所有 owners 将收到"已拒绝"通知

Admin Dashboard

左侧导航点击 Admin → Admin Dashboard,可查看全平台的统计数据,包括:

  • 总短链接数及趋势
  • 全平台点击量排行
  • 用户活跃度统计
  • 数据导出(CSV)

系统架构

整体架构

┌─────────────────┐     ┌─────────────────┐     ┌─────────────────┐
│   前端应用      │────▶│   后端服务       │────▶│   数据库服务     │
│  (React + Antd) │     │ (Node.js + Express) │     │    (MongoDB)    │
└─────────────────┘     └─────────────────┘     └─────────────────┘
        │                       ▲
        ▼                       │
┌─────────────────┐     ┌─────────────────┐
│ Azure AD 认证   │◀────│   外部API       │
└─────────────────┘     └─────────────────┘

技术栈

分类 技术框架/工具 版本要求
前端框架 React 18.x
构建工具 Vite 5.x
UI组件库 Ant Design 5.x
后端框架 Node.js + Express 18.x
数据库 MongoDB 5.0+
认证服务 Azure AD (OAuth 2.0) -
容器化部署 Docker + Docker Compose 20.x+
认证库 @azure/msal-browser 3.x
@azure/msal-react 2.x
HTTP客户端 Axios 1.x

功能模块

1. 用户认证与授权

  • ✅ Azure AD单点登录
  • ✅ 基于角色的访问控制(RBAC)
  • ✅ 用户信息自动同步
  • ✅ 会话状态持久化管理

2. 短链接管理

  • ✅ 短链接生成
  • ✅ 自定义短链接
  • ✅ 项目信息完整管理
  • ✅ 状态跟踪(待审批、已批准、已拒绝)
  • ✅ 目标URL验证
  • ✅ 项目所有者验证

3. 审批流程

  • ✅ 管理员审批机制
  • ✅ 审批历史记录
  • ⏳ 审批通知(待实现)

4. 统计分析

  • ✅ 点击量统计
  • ✅ 访问趋势分析
  • ✅ 设备类型分布
  • ⏳ 地理位置统计(待实现)
  • ✅ 管理员全局统计视图

5. 系统管理

  • ⏳ 用户管理(待实现)
  • ✅ 系统监控
  • ✅ 访问日志记录
  • ⏳ 日志管理界面(待实现)

安装部署

本地开发

前置条件

  • Node.js 18.x+
  • MongoDB 5.0+
  • npm 或 yarn

后端安装

# 进入后端目录
cd backend

# 安装依赖
npm install

# 复制环境变量示例文件并修改
cp .env.example .env

# 启动开发服务器
npm run dev

前端安装

# 进入前端目录
cd frontend

# 安装依赖
npm install

# 复制环境变量示例文件并修改(开发环境)
cp .env.development .env

# 启动开发服务器
npm run dev

Docker部署

前置条件

  • Docker 20.x+
  • Docker Compose 1.29+

部署步骤

# 在项目根目录下执行
docker-compose up -d

环境变量配置

后端环境变量 (backend/.env)

# 服务器配置
PORT=3000
NODE_ENV=development

# MongoDB 连接配置
MONGODB_URI=mongodb://localhost:27017/aka-platform

# Azure AD 配置
AZURE_AD_CLIENT_ID=your-azure-ad-client-id
AZURE_AD_TENANT_ID=your-azure-ad-tenant-id
AZURE_AD_CLIENT_SECRET=your-azure-ad-client-secret
AZURE_AD_REDIRECT_URI=http://localhost:3000/auth/callback
AZURE_AD_GRAPH_API_URL=https://graph.microsoft.com/v1.0

# JWT 配置
JWT_SECRET=your-jwt-secret
JWT_EXPIRY=24h

# 基础URL配置
BASE_URL=http://localhost:3000
CORS_ORIGIN=http://localhost:5173,http://localhost

# 管理员邮箱(多个用逗号分隔)
ADMIN_EMAILS=admin@example.com,admin2@example.com

# 所有者搜索功能开关
ENABLE_OWNER_SEARCH=false

前端环境变量 (frontend/.env.development)

# API 配置
VITE_API_URL=http://localhost:3000

# Azure AD 配置
VITE_AZURE_AD_CLIENT_ID=your-spa-client-id
VITE_AZURE_AD_TENANT_ID=your-tenant-id
VITE_AZURE_AD_API_CLIENT_ID=your-api-client-id
VITE_REDIRECT_URI=http://localhost:5173

# 短链接域名
VITE_SHORT_URL_DOMAIN=https://your-domain.com

# 所有者搜索功能开关
VITE_ENABLE_OWNER_SEARCH=false

前端生产环境变量 (frontend/.env.production)

# API 配置
VITE_API_URL=https://your-api-domain.com

# Azure AD 配置
VITE_AZURE_AD_CLIENT_ID=your-spa-client-id
VITE_AZURE_AD_TENANT_ID=your-tenant-id
VITE_AZURE_AD_API_CLIENT_ID=your-api-client-id
VITE_REDIRECT_URI=https://your-frontend-domain.com

# 短链接域名
VITE_SHORT_URL_DOMAIN=https://your-short-domain.com

# 所有者搜索功能开关
VITE_ENABLE_OWNER_SEARCH=true

Docker Compose 环境变量 (根目录 .env)

# Azure AD 租户ID
AZURE_AD_TENANT_ID=your-tenant-id

# SPA 应用配置
SPA_AZURE_AD_CLIENT_ID=your-spa-client-id
SPA_REDIRECT_URI=http://localhost:5173

# API 应用配置
API_AZURE_AD_CLIENT_ID=your-api-client-id

# JWT 配置
JWT_SECRET=your-jwt-secret
JWT_EXPIRY=24h

# 基础URL
BASE_URL=http://localhost:3000

# CORS 配置
CORS_ORIGIN=http://localhost:5173,http://localhost

# 管理员邮箱
ADMIN_EMAILS=admin@example.com

# 所有者搜索开关
ENABLE_OWNER_SEARCH=false

API文档

认证相关

接口路径 方法 功能描述 权限要求
/auth/me GET 获取当前用户信息 已认证
/auth/refresh-token POST 刷新访问令牌 已认证

项目管理

接口路径 方法 功能描述 权限要求
/projects POST 创建新短链接项目 已认证
/projects GET 获取用户项目列表 已认证
/projects/:id GET 获取项目详情 已认证/管理员
/projects/:id PUT 更新项目信息 项目所有者/管理员
/projects/:id DELETE 删除项目 项目所有者/管理员

管理员接口

接口路径 方法 功能描述 权限要求
/admin/projects GET 获取所有项目列表 管理员
/admin/projects/:id/approve PUT 批准项目 管理员
/admin/projects/:id/reject PUT 拒绝项目 管理员
/admin/stats GET 获取系统统计数据 管理员

用户搜索接口

接口路径 方法 功能描述 权限要求
/users/search GET 搜索用户 已认证

统计接口

接口路径 方法 功能描述 权限要求
/stats/clicks/:shortUrl GET 获取短链接点击统计 项目所有者/管理员
/stats/user GET 获取用户统计数据 已认证
/stats/project/:id GET 获取项目统计数据 项目所有者/管理员

短链接重定向

接口路径 方法 功能描述 权限要求
/:shortUrl GET 短链接重定向 公开
/api/short-urls/:shortUrl GET 获取短链接信息 已认证/管理员

项目结构

后端项目结构

backend/
├── src/
│   ├── config/          # 配置文件
│   │   ├── azureAd.js   # Azure AD配置
│   │   └── database.js  # 数据库配置
│   ├── controllers/     # 控制器
│   │   ├── authController.js
│   │   ├── projectController.js
│   │   ├── adminController.js
│   │   └── statsController.js
│   ├── middleware/      # 中间件
│   │   ├── authMiddleware.js
│   │   └── errorMiddleware.js
│   ├── models/          # 数据模型
│   │   ├── User.js
│   │   ├── Project.js
│   │   └── Click.js
│   ├── routes/          # 路由
│   │   ├── authRoutes.js
│   │   ├── projectRoutes.js
│   │   ├── adminRoutes.js
│   │   └── statsRoutes.js
│   ├── scripts/         # 脚本文件
│   ├── services/        # 业务逻辑
│   │   ├── authService.js
│   │   ├── projectService.js
│   │   └── statsService.js
│   └── index.js         # 应用入口
├── .env.example         # 环境变量示例
├── package.json         # 依赖配置
└── Dockerfile

前端项目结构

frontend/
├── src/
│   ├── components/      # 通用组件
│   │   ├── Layout.jsx   # 布局组件
│   ├── pages/           # 页面组件
│   │   ├── AdminDashboard.jsx   # 管理员仪表盘
│   │   ├── AppInitializer.jsx   # 应用初始化组件
│   │   ├── Dashboard.jsx        # 用户仪表盘
│   │   ├── LoginPage.jsx        # 登录页面
│   │   ├── ProjectApproval.jsx  # 项目审批页面
│   │   ├── ProjectDetail.jsx    # 项目详情页面
│   │   ├── ProjectForm.jsx      # 项目表单页面
│   │   └── ProjectList.jsx      # 项目列表页面
│   ├── services/        # API服务
│   │   └── api.js       # API请求配置
│   ├── utils/           # 工具函数
│   ├── App.jsx          # 应用组件
│   ├── main.jsx         # 应用入口
│   └── theme.js         # 主题配置
├── public/              # 静态资源
├── .env.example         # 环境变量示例
├── package.json         # 依赖配置
├── vite.config.js       # Vite配置
└── Dockerfile

开发指南

代码规范

  • 前端:使用ESLint和Prettier进行代码检查和格式化
  • 后端:使用ESLint进行代码检查

提交规范

遵循Conventional Commits规范:

<type>[optional scope]: <description>

[optional body]

[optional footer(s)]

常用type:

  • feat: 添加新功能
  • fix: 修复bug
  • docs: 文档更新
  • style: 代码格式修改
  • refactor: 代码重构
  • test: 测试用例更新
  • chore: 构建过程或辅助工具的变动

许可证

MIT License

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors