feat(developer): 完成小程序开发者中心和企业控制台改造

- 设计并实现了开发者中心与企业控制台两大模块
- 按用户角色区分开发者和企业客户,支持多项目类型及成员管理
- 新增项目管理、应用管理、API Key管理及成员邀请等多功能页面
- 实现应用版本发布、消息通知中心、权限审批与开发者申请流程
- 完成CI/CD流水线、运营监控、发票管理、SSO单点登录功能
- 搭建SDK下载中心、工单系统、FAQ系统、数据导入导出等模块
- 优化后端API,支持已登录和未注册用户不同加入应用流程
- 前端按钮统一采用微信手机号授权,完善用户授权体验
- 修复多个页面的JSX语法错误及依赖导入问题,替换部分组件库
- 增加详细的类型定义文件,提升项目类型安全
- 新增超过55个页面及60个API接口,扩展应用功能和服务体系
- 完成全面的样式设计,实现一致的视觉风格和交互体验
This commit is contained in:
2026-04-13 02:26:46 +08:00
parent 2ae30ac692
commit ffab0ec25c
199 changed files with 20017 additions and 508 deletions

226
src/api/analytics.ts Normal file
View File

@@ -0,0 +1,226 @@
/**
* 数据分析/运营监控 API
*/
import { request } from '../utils/request'
import type {
OverviewStats,
ApiCallStat,
ErrorStat,
PerformanceMetric,
RegionStat,
DeviceStat,
BrowserStat,
OsStat,
SourceStat,
PageStat,
EventTrack,
AnalyticsParam,
} from '../types/analytics'
// ==================== 概览统计 ====================
/** 获取概览统计 */
export const getOverviewStats = (websiteId: number, date?: string) => {
return request<OverviewStats>({
url: '/developer/analytics/overview',
method: 'GET',
params: { websiteId, date },
})
}
/** 获取趋势数据 */
export const getTrendData = (
websiteId: number,
startDate: string,
endDate: string,
granularity: 'hour' | 'day' | 'week' | 'month' = 'day'
) => {
return request<{ list: ApiCallStat[] }>({
url: '/developer/analytics/trend',
method: 'GET',
params: { websiteId, startDate, endDate, granularity },
})
}
/** 获取今日实时数据 */
export const getRealtimeData = (websiteId: number) => {
return request<{
uv: number
pv: number
apiCalls: number
errors: number
activeUsers: number
}>({
url: '/developer/analytics/realtime',
method: 'GET',
params: { websiteId },
})
}
// ==================== API 调用统计 ====================
/** 获取 API 调用统计 */
export const pageApiCalls = (params: AnalyticsParam) => {
return request<{ list: ApiCallStat[]; total: number }>({
url: '/developer/analytics/api-calls',
method: 'GET',
params,
})
}
// ==================== 错误统计 ====================
/** 获取错误列表 */
export const pageErrors = (params: AnalyticsParam) => {
return request<{ list: ErrorStat[]; total: number }>({
url: '/developer/analytics/errors',
method: 'GET',
params,
})
}
/** 获取错误详情 */
export const getErrorDetail = (id: number) => {
return request<ErrorStat & { samples: any[] }>({
url: `/developer/analytics/errors/${id}`,
method: 'GET',
})
}
// ==================== 性能指标 ====================
/** 获取性能指标 */
export const getPerformanceMetrics = (websiteId: number) => {
return request<{ list: PerformanceMetric[] }>({
url: '/developer/analytics/performance',
method: 'GET',
params: { websiteId },
})
}
/** 获取性能趋势 */
export const getPerformanceTrend = (
websiteId: number,
metric: string,
startDate: string,
endDate: string
) => {
return request<{ list: PerformanceMetric[] }>({
url: '/developer/analytics/performance/trend',
method: 'GET',
params: { websiteId, metric, startDate, endDate },
})
}
// ==================== 用户统计 ====================
/** 获取用户统计 */
export const getUserStats = (websiteId: number) => {
return request<{
total: number
active: number
new: number
retention: number
}>({
url: '/developer/analytics/users',
method: 'GET',
params: { websiteId },
})
}
/** 获取新增用户趋势 */
export const getNewUsersTrend = (
websiteId: number,
startDate: string,
endDate: string
) => {
return request<{ list: { date: string; count: number }[] }>({
url: '/developer/analytics/users/trend',
method: 'GET',
params: { websiteId, startDate, endDate },
})
}
// ==================== 区域分布 ====================
/** 获取区域分布 */
export const getRegionStats = (websiteId: number) => {
return request<{ list: RegionStat[] }>({
url: '/developer/analytics/regions',
method: 'GET',
params: { websiteId },
})
}
// ==================== 设备统计 ====================
/** 获取设备类型统计 */
export const getDeviceStats = (websiteId: number) => {
return request<{ list: DeviceStat[] }>({
url: '/developer/analytics/devices',
method: 'GET',
params: { websiteId },
})
}
/** 获取浏览器统计 */
export const getBrowserStats = (websiteId: number) => {
return request<{ list: BrowserStat[] }>({
url: '/developer/analytics/browsers',
method: 'GET',
params: { websiteId },
})
}
/** 获取操作系统统计 */
export const getOsStats = (websiteId: number) => {
return request<{ list: OsStat[] }>({
url: '/developer/analytics/os',
method: 'GET',
params: { websiteId },
})
}
// ==================== 来源统计 ====================
/** 获取流量来源 */
export const getSourceStats = (websiteId: number) => {
return request<{ list: SourceStat[] }>({
url: '/developer/analytics/sources',
method: 'GET',
params: { websiteId },
})
}
/** 获取页面访问排行 */
export const getPageStats = (params: AnalyticsParam) => {
return request<{ list: PageStat[]; total: number }>({
url: '/developer/analytics/pages',
method: 'GET',
params,
})
}
// ==================== 事件追踪 ====================
/** 获取事件列表 */
export const pageEvents = (params: AnalyticsParam) => {
return request<{ list: EventTrack[]; total: number }>({
url: '/developer/analytics/events',
method: 'GET',
params,
})
}
/** 触发自定义事件 */
export const trackEvent = (data: {
websiteId: number
event: string
properties?: Record<string, any>
}) => {
return request<void>({
url: '/developer/analytics/track',
method: 'POST',
data,
})
}