Skip to content

Latest commit

 

History

History
618 lines (490 loc) · 21 KB

File metadata and controls

618 lines (490 loc) · 21 KB

IntelliHub 功能开发计划

基于项目现状分析,制定后续功能开发计划


一、项目现状分析

1.1 已完成模块

模块 完成度 说明
intelli-common ✅ 98% 公共组件、工具类、用户上下文、Dubbo接口、枚举、签名工具
intelli-auth-iam-service ✅ 90% 用户认证、角色权限、租户管理
intelli-gateway-service ✅ 98% JWT鉴权、限流、动态路由、访问日志、开放API转发、Redis Pub/Sub路由刷新、调用日志采集上报
intelli-api-platform-service ✅ 90% API生命周期、开放API认证、订阅校验、路由配置、公告管理、系统配置
intelli-app-center-service ✅ 90% 应用管理、AppKey生命周期、API订阅、Dubbo服务
intelli-governance-service ✅ 85% 调用统计、统计查询、调用日志消费、告警管理
intelli-sdk ✅ 100% Java SDK(签名认证、HTTP客户端、异常处理)
intellihub-frontend ✅ 92% 控制台页面、API管理、应用管理、统计仪表盘、开发文档、API市场、系统设置、公告管理

1.2 待完成模块

模块 完成度 说明
intelli-governance-service(告警) ❌ 10% SLA管理、告警规则、告警通知(表结构已预留)
intelli-aigc-service ❌ 5% 智能分析、文档生成
intelli-event-service ❌ 5% 事件驱动、消息中心
intelli-search-service ❌ 5% 聚合搜索
intelli-log-audit-service ❌ 5% 操作审计、日志管理

1.3 已完成的核心功能

后端

  • 用户登录/登出、Token签发
  • 租户管理(创建、查询、停用)
  • 用户管理(CRUD、角色分配)
  • 角色权限管理
  • API生命周期(创建、发布、下线、废弃、删除)
  • API分组管理
  • API参数配置(Query/Header/Path/Body)
  • API后端配置(HTTP/Dubbo/Mock)
  • Gateway JWT鉴权过滤器
  • Gateway 限流过滤器
  • Gateway 租户上下文透传
  • 开放API动态路由(OpenApiRouteFilter)
  • 路由配置热更新(Redis Pub/Sub)
  • HTTP后端转发(LoadBalancer + WebClient)
  • Dubbo泛化调用支持
  • 用户上下文ThreadLocal方案
  • 应用中心完整功能(CRUD、AppKey管理)
  • AppKey/Secret生成(安全随机)
  • API订阅关系管理
  • 开放API认证过滤器(HMAC-SHA256签名)
  • 防重放攻击(Nonce + Timestamp)
  • 订阅关系校验(路径匹配)
  • Dubbo服务接口(AppCenterDubboService)
  • 状态枚举(AppStatus、AppType、SubscriptionStatus)
  • Gateway调用日志采集(AccessLogFilter + CallLogReportService)
  • 调用统计服务(StatsService + CallLogService)
  • 统计查询接口(StatsController)
  • 调用日志查询接口(CallLogController)

前端

  • 登录页面
  • 控制台布局
  • API列表页(搜索、筛选、分页)
  • API创建/编辑页(完整表单)
  • API详情页
  • API分组管理页
  • 用户管理页
  • Token管理页
  • 应用列表页(创建、编辑、筛选)
  • 应用详情弹窗
  • 密钥管理弹窗
  • API授权弹窗
  • 统计仪表盘页面(StatsPage.vue)
  • 调用日志列表页(CallLogsPage.vue)

二、开发计划

阶段一:应用中心(优先级:高)✅ 已完成

目标:实现应用的创建、AppKey/Secret管理,支持API调用方接入

1.1 后端开发(intelli-app-center-service)

任务 优先级 状态
应用实体设计(Application) P0 ✅ 已完成
AppKey/Secret生成与管理 P0 ✅ 已完成
应用CRUD接口 P0 ✅ 已完成
应用与API绑定关系 P0 ✅ 已完成
应用配额管理 P1 ✅ 已完成
AppKey状态管理(启用/禁用/重置) P1 ✅ 已完成
Dubbo服务接口 P0 ✅ 已完成

数据模型

-- 应用表
CREATE TABLE app_info (
    id VARCHAR(32) PRIMARY KEY,
    tenant_id VARCHAR(32) NOT NULL,
    name VARCHAR(100) NOT NULL,
    code VARCHAR(50) NOT NULL,
    description VARCHAR(500),
    app_key VARCHAR(64) NOT NULL UNIQUE,
    app_secret VARCHAR(128) NOT NULL,
    status VARCHAR(20) DEFAULT 'active',
    quota_limit INT DEFAULT 10000,
    created_by VARCHAR(32),
    created_at DATETIME,
    updated_at DATETIME
);

-- 应用API订阅关系
CREATE TABLE app_api_subscription (
    id VARCHAR(32) PRIMARY KEY,
    app_id VARCHAR(32) NOT NULL,
    api_id VARCHAR(32) NOT NULL,
    status VARCHAR(20) DEFAULT 'active',
    created_at DATETIME
);

1.2 前端开发

任务 优先级 状态
应用创建弹窗 P0 ✅ 已完成
应用详情页 P0 ✅ 已完成
AppKey显示与复制 P0 ✅ 已完成
API订阅管理 P1 ✅ 已完成
应用配额展示 P1 ✅ 已完成
应用筛选功能 P1 ✅ 已完成

阶段二:开放API认证(优先级:高)✅ 已完成

目标:完善开放API鉴权能力,支持AppKey签名认证

架构调整:认证逻辑从Gateway迁移到API Platform服务,Gateway仅负责路由转发

2.1 AppKey签名认证(API Platform服务)

任务 优先级 状态
开放API认证过滤器 P0 ✅ 已完成
签名算法实现(HMAC-SHA256) P0 ✅ 已完成
防重放攻击(Nonce + Timestamp) P0 ✅ 已完成
AppKey缓存(Redis) P1 ✅ 已完成
应用订阅关系校验 P1 ✅ 已完成
Dubbo服务调用 P0 ✅ 已完成

签名规则

签名字符串 = HTTP_METHOD + "\n" + REQUEST_PATH + "\n" + TIMESTAMP + "\n" + NONCE
签名 = Base64(HMAC-SHA256(签名字符串, AppSecret))

请求头:
X-App-Key: {appKey}
X-Timestamp: {timestamp}
X-Nonce: {nonce}
X-Signature: {signature}

2.2 Gateway简化

任务 优先级 状态
禁用Gateway AppKey认证 P0 ✅ 已完成
添加开放API路由规则 P0 ✅ 已完成
保留JWT认证和限流 P0 ✅ 已完成

2.3 动态路由 ✅ 已完成

任务 优先级 状态
API路由配置加载 P0 ✅ 已完成
路由规则缓存(本地+Redis) P0 ✅ 已完成
路由配置热更新(Redis Pub/Sub) P1 ✅ 已完成
HTTP后端转发(负载均衡) P0 ✅ 已完成
Dubbo泛化调用 P1 ✅ 已完成
灰度路由支持 P2 ❌ 待开发

阶段三:治理中心(优先级:中)✅ 核心功能已完成

目标:实现API调用统计、监控告警

3.1 调用统计(intelli-governance-service)

任务 优先级 状态
数据库表结构设计 P0 ✅ 已完成
调用日志采集(Gateway异步上报) P0 ✅ 已完成
调用日志消费服务 P0 ✅ 已完成
实时统计(Redis) P0 ✅ 已完成
统计数据持久化(小时/天维度) P0 ✅ 已完成
多维度统计接口 P0 ✅ 已完成
趋势分析接口 P1 ✅ 已完成
Top API统计 P1 ✅ 已完成

数据模型

-- 调用统计汇总表(按小时)
CREATE TABLE api_call_stats_hourly (
    id BIGINT AUTO_INCREMENT PRIMARY KEY,
    tenant_id VARCHAR(32) NOT NULL,
    api_id VARCHAR(32) NOT NULL,
    app_id VARCHAR(32),
    stat_hour DATETIME NOT NULL,
    total_count BIGINT DEFAULT 0,
    success_count BIGINT DEFAULT 0,
    fail_count BIGINT DEFAULT 0,
    avg_latency INT DEFAULT 0,
    max_latency INT DEFAULT 0,
    INDEX idx_stat_hour (stat_hour),
    INDEX idx_api_id (api_id)
);

3.2 监控告警 ✅ 核心功能已完成

任务 优先级 预估工时 状态
告警规则配置 P1 3h ✅ 已完成
告警触发检测 P1 3h ✅ 已完成
告警通知(邮件/钉钉/Kafka) P1 3h ✅ 已完成(框架已搭建,待集成具体通知服务)
告警历史查询 P2 2h ✅ 已完成

3.3 前端页面

任务 优先级 状态
调用统计仪表盘 P0 ✅ 已完成(StatsPage.vue)
API调用趋势图 P0 ✅ 已完成(ECharts集成)
调用日志列表 P1 ✅ 已完成(CallLogsPage.vue)
告警配置页面 P1 ❌ 待开发
告警历史页面 P2 ❌ 待开发

阶段四:AIGC智能增强(优先级:中)

目标:集成AI能力,提供智能分析和文档生成

4.1 智能分析

任务 优先级 预估工时
AI服务接入封装 P0 3h
API异常分析 P1 4h
性能优化建议 P1 4h
Token消耗统计 P1 2h

4.2 文档生成

任务 优先级 预估工时
API文档自动生成 P1 4h
使用说明生成 P2 3h
示例代码生成 P2 3h

阶段五:完善与优化(优先级:低)

5.1 事件驱动

任务 优先级 预估工时
事件模型定义 P2 2h
Kafka集成 P2 3h
事件发布/订阅 P2 3h

5.2 操作审计

任务 优先级 预估工时
审计日志采集 P2 2h
审计日志查询 P2 2h
审计报表 P3 3h

5.3 搜索能力

任务 优先级 预估工时
Elasticsearch集成 P3 3h
API搜索功能 P3 3h
全文检索 P3 3h

三、开发优先级排序

第一批 ✅ 已完成

  1. 应用中心后端 - 应用CRUD、AppKey管理 ✅
  2. 应用中心前端 - 应用创建、详情页 ✅
  3. Gateway AppKey认证 - 签名验证过滤器 ✅
  4. 开放API动态路由 - HTTP/Dubbo转发 ✅
  5. 路由热更新 - Redis Pub/Sub通知 ✅

第二批 ✅ 已完成(调用统计核心功能)

  1. 调用统计采集 - Gateway上报调用数据 ✅
  2. 统计仪表盘 - 前端可视化 ✅
  3. 调用日志查询 - 分页查询、筛选 ✅

第三批(当前阶段)

  1. 告警管理 - 规则配置、通知
  2. AIGC集成 - 智能分析、文档生成

第四批(可选)

  1. 事件驱动 - Kafka集成
  2. 审计日志 - 操作记录
  3. 搜索能力 - ES集成

四、技术债务清理

项目 说明 优先级
包路径统一 common模块包路径调整为com.intellihub ✅ 已完成
异常处理规范 统一业务异常处理 P1
接口文档 Swagger/OpenAPI集成 P1
单元测试 核心服务单元测试 P2
代码规范 Checkstyle/PMD集成 P2

五、里程碑

里程碑 目标 预计时间
M1 应用中心上线,支持AppKey认证 ✅ 已完成
M2 调用统计上线,基础监控能力 ✅ 已完成
M3 告警管理上线,主动运维能力 ✅ 已完成
M3.5 平台增强:SDK、系统设置、公告管理 ✅ 已完成
M4 AIGC集成,智能化能力 待开始
M5 全功能上线,生产就绪 待开始

六、下一步行动

建议从「AIGC 智能增强」开始,因为:

  1. 核心功能已完成:API 管理、调用统计、告警管理、SDK 均已上线
  2. 差异化能力:AI 驱动的智能分析是平台亮点
  3. 用户价值:智能文档生成、异常分析能显著提升用户体验

立即执行任务

  1. 完成网关核心流程测试(验证码接口)
  2. 开发调用统计采集(intelli-governance-service)
  3. 前端统计仪表盘页面
  4. 告警规则配置服务开发
  5. 告警触发检测定时任务
  6. 前端告警配置页面
  7. Java SDK 模块开发
  8. 系统设置与公告管理
  9. AIGC 服务接入封装
  10. API 文档智能生成
  11. 告警通知实际集成(邮件/钉钉/Webhook)


七、已完成工作记录

2024-12-23 网关核心流程调试

完成内容

  • ✅ 修复Gateway路由配置(添加/open/**路径匹配)
  • ✅ 修复Bean名称冲突(RouteRefreshListener → ApiRouteChangeListener)
  • ✅ 修复后端地址拼接问题(去除重复协议前缀)
  • ✅ 实现HTTP后端转发(LoadBalancerClient + WebClient)
  • ✅ 完善API下发指南文档(添加Dubbo配置示例)

测试验证

# 验证码接口测试
curl http://localhost:8080/open/auth/captcha

相关文件

  • OpenApiRouteFilter.java - 开放API动态路由过滤器
  • ApiRouteChangeListener.java - 路由变更监听器
  • RedisMessageConfig.java - Redis Pub/Sub配置
  • API下发指南.md - 操作文档


2024-12-24 治理中心核心功能开发完成

完成内容

  • ✅ 数据库表结构(api_call_log、api_call_stats_hourly、api_call_stats_daily、alert_rule、alert_record)
  • ✅ Gateway调用日志采集(AccessLogFilter + CallLogReportService)
  • ✅ 调用日志消费服务(CallLogService)
  • ✅ 统计查询服务(StatsService)
  • ✅ 统计接口(StatsController)
  • ✅ 调用日志接口(CallLogController)
  • ✅ 前端统计仪表盘(StatsPage.vue)
  • ✅ 前端调用日志列表(CallLogsPage.vue)

相关文件

  • intelli-governance-service/src/main/resources/sql/governance_tables.sql
  • intelli-gateway-service/.../filter/AccessLogFilter.java
  • intelli-gateway-service/.../service/CallLogReportService.java
  • intelli-governance-service/.../service/StatsService.java
  • intelli-governance-service/.../service/CallLogService.java
  • intellihub-frontend/src/views/console/stats/StatsPage.vue
  • intellihub-frontend/src/views/console/stats/CallLogsPage.vue


2024-12-24 告警管理功能开发完成

完成内容

  • ✅ 告警规则实体(AlertRule)和DTO
  • ✅ 告警记录实体(AlertRecord)和DTO
  • ✅ 告警规则CRUD服务(AlertRuleService)
  • ✅ 告警记录服务(AlertRecordService)
  • ✅ 告警规则API(AlertRuleController)
  • ✅ 告警记录API(AlertRecordController)
  • ✅ 告警检测定时任务(AlertDetectionJob)
  • ✅ 告警通知定时任务(AlertNotifyJob)
  • ✅ 告警通知服务框架(AlertNotifyService)
  • ✅ 启用定时任务(@EnableScheduling)
  • ✅ StatsService新增getRealtimeStats方法

支持的告警规则类型

  • error_rate - 错误率告警
  • latency - 平均延迟告警
  • qps - QPS告警

支持的通知渠道

  • email - 邮件通知(待集成)
  • webhook - Webhook通知(待集成)
  • dingtalk - 钉钉机器人(待集成)
  • kafka - Kafka消息(待集成)

相关文件

  • entity/AlertRule.java
  • entity/AlertRecord.java
  • dto/AlertRuleDTO.java
  • dto/AlertRecordDTO.java
  • mapper/AlertRuleMapper.java
  • mapper/AlertRecordMapper.java
  • service/AlertRuleService.java
  • service/AlertRecordService.java
  • service/AlertNotifyService.java
  • controller/AlertRuleController.java
  • controller/AlertRecordController.java
  • job/AlertDetectionJob.java
  • job/AlertNotifyJob.java

2024-12-25 监控中心增强 + API市场改造

完成内容

  • ✅ 监控中心 QPS 显示修复(从正确的 Redis Key 读取)
  • ✅ 监控中心响应状态分布改为 ECharts 饼图
  • ✅ 监控中心 API 调用趋势图表实现
  • ✅ 监控中心时间范围选择功能
  • ✅ 监控中心 API 选择下拉动态加载
  • ✅ API 市场改造为从后端获取真实数据
  • ✅ 创建跨租户公开 API 接口(/v1/public/apis/list
  • ✅ Gateway 添加公开 API 路由规则
  • ✅ 实体关系设计文档(架构设计-实体关系说明.md

相关文件

  • intelli-governance-service/.../service/StatsService.java - QPS 计算修复
  • intellihub-frontend/src/views/monitor/MonitorPage.vue - 监控中心增强
  • intelli-api-platform-service/.../controller/PublicApiController.java - 公开 API 控制器
  • intelli-gateway-service/.../application.yml - 路由规则更新
  • docs/架构设计-实体关系说明.md - 实体关系文档

2024-12-25 调用次数同步任务

完成内容

  • ✅ 创建 StatsCallCountSyncJob 定时任务
  • ✅ 添加 Dubbo 接口:ApiPlatformDubboService.batchUpdateApiCallCounts()
  • ✅ 添加 Dubbo 接口:AppCenterDubboService.batchUpdateAppQuotaUsed()
  • ✅ 创建 DTO:ApiCallCountDTOAppCallCountDTO
  • ✅ 创建 Mapper XML:ApiCallLogMapper.xml
  • ✅ governance-service 添加 Dubbo 依赖和配置

相关文件

  • intelli-governance-service/.../job/StatsCallCountSyncJob.java
  • common-dubbo-api/.../ApiCallCountDTO.java
  • common-dubbo-api/.../AppCallCountDTO.java
  • intelli-api-platform-service/.../dubbo/ApiPlatformDubboServiceImpl.java
  • intelli-app-center-service/.../dubbo/AppCenterDubboServiceImpl.java
  • intelli-governance-service/src/main/resources/mapper/ApiCallLogMapper.xml

八、待开发功能(Backlog)

高优先级

功能 说明 状态
告警规则前端页面 告警规则配置界面 ✅ 已完成
告警历史前端页面 告警记录查看界面 ✅ 已完成
告警通知集成 邮件/钉钉/Webhook 实际对接 ❌ 待开发

中优先级

功能 说明 状态
内部 API 调用统计 当前只统计开放API,内部API缺少apiId/appId ❌ 待开发
灰度路由支持 按百分比或规则分流 ❌ 待开发
API 版本管理增强 版本对比、回滚 ❌ 待开发

低优先级

功能 说明 状态
AIGC 智能分析 AI 驱动的异常分析 ❌ 待开发
操作审计日志 用户操作记录 ❌ 待开发
Elasticsearch 集成 全文搜索 ❌ 待开发

九、已知问题

1. 内部 API 调用无法统计

问题描述

  • 内部管理 API(如 /api/v1/apis/list)调用时,apiIdappId 为空
  • 原因:这些请求不经过 OpenApiRouteMatchFilter,前端也不带 X-App-Id

影响范围

  • api_info.todayCallstotalCalls 只统计开放 API
  • app_info.quotaUsed 只统计开放 API 调用

决策

  • 方案1(已选):只统计开放 API,内部 API 不计入
  • 方案2(备选):扩展内部 API 统计,需要修改网关逻辑

2024-12-26 平台功能增强与 SDK 开发

完成内容

1. 控制台优化

  • ✅ 合并调用统计和监控中心为统一入口
  • ✅ 删除控制台数据看板和监控中心冗余菜单
  • ✅ 控制台首页改为从后端加载真实数据

2. 开发文档界面增强

  • ✅ 动态内容加载(快速开始、认证鉴权、请求规范、响应格式)
  • ✅ SDK 文档(Java/Python/Node.js/Go 示例)
  • ✅ 更新日志、常见问题模块
  • ✅ 代码复制功能

3. API 市场界面优化

  • ✅ Hero 区域重新设计(白色背景 + 天蓝色色块)
  • ✅ 分类标签筛选
  • ✅ 排序功能(最新/热门/评分)
  • ✅ API 卡片布局优化

4. 系统设置页面

  • ✅ 基础设置(平台信息、联系方式)
  • ✅ 安全设置(登录安全、会话管理)
  • ✅ API 设置(网关配置、限流配置)
  • ✅ 通知设置(邮件、告警、Webhook)

5. 公告管理功能

  • ✅ 后端:公告实体、DTO、Mapper、Service、Controller
  • ✅ 后端:系统配置实体、Service、Controller
  • ✅ 前端:公告管理页面(CRUD、发布/下线)
  • ✅ 数据库迁移脚本(sys_announcement、sys_config 表)
  • ✅ 网关路由配置(添加 /api/platform/** 路由)

6. Java SDK 模块

  • ✅ SDK 模块结构创建(intelli-sdk)
  • ✅ IntelliHubClient 主客户端(GET/POST/PUT/DELETE)
  • ✅ IntelliHubConfig 配置类(Builder 模式)
  • ✅ SignatureUtils 签名工具(HMAC-SHA256)
  • ✅ ApiResponse 响应模型
  • ✅ IntelliHubException 异常类
  • ✅ SDK 使用文档(README.md)
  • ✅ 集成到父项目 pom.xml

相关文件

  • intellihub-frontend/src/views/docs/DocsPage.vue - 开发文档页面
  • intellihub-frontend/src/views/api-market/ApiMarketPage.vue - API 市场页面
  • intellihub-frontend/src/views/console/settings/SettingsPage.vue - 系统设置页面
  • intellihub-frontend/src/views/console/settings/AnnouncementsPage.vue - 公告管理页面
  • intellihub-frontend/src/views/console/DashboardPage.vue - 控制台首页
  • intelli-api-platform-service/.../controller/AnnouncementController.java - 公告 API
  • intelli-api-platform-service/.../controller/SysConfigController.java - 配置 API
  • intelli-api-platform-service/.../entity/Announcement.java - 公告实体
  • intelli-api-platform-service/.../entity/SysConfig.java - 配置实体
  • intelli-gateway-service/src/main/resources/application.yml - 网关路由更新
  • intelli-sdk/ - Java SDK 完整模块

文档版本:v1.5 更新时间:2024-12-26