增加活动页面

Change-Id: I63cf84e250d16b2af401f335562fcadd3be13170
diff --git a/react-ui/src/pages/Activity/data.d.ts b/react-ui/src/pages/Activity/data.d.ts
new file mode 100644
index 0000000..d66d25f
--- /dev/null
+++ b/react-ui/src/pages/Activity/data.d.ts
@@ -0,0 +1,101 @@
+// data.d.ts - 活动系统类型定义文件
+
+// 活动类型枚举
+export type ActivityType = 'UPLOAD' | 'DOWNLOAD';
+
+// 活动状态
+export type ActivityStatus = 0 | 1; // 0=已结束,1=进行中
+
+// 活动信息 - 适配后端返回的字段
+export interface SysActivity {
+    createBy?: string | null;
+    createTime?: string | null;
+    updateBy?: string | null;
+    updateTime?: string | null;
+    remark?: string | null;
+    activityId: number;
+    activityName: string;
+    rewardBonus: number;
+    conditionValue: string; // 上传:如"10GB",下载:torrent_id
+    startTime: string; // ISO 8601 格式:2025-06-01T00:00:00.000+08:00
+    endTime: string;   // ISO 8601 格式:2025-06-30T23:59:59.000+08:00
+    status: ActivityStatus;
+    activityType: ActivityType;
+}
+
+// 活动记录
+export interface SysActivityRecord {
+    recordId: number;
+    activityId: number;
+    userId: number;
+    rewardBonus: number;
+    completeTime: string;
+}
+
+// 排行榜条目
+export interface LeaderboardEntry {
+    userId: number;
+    userName: string;
+    score: number;
+}
+
+// 后端实际返回的活动列表响应格式
+export interface GetActivityListResponse {
+    total: number;
+    rows: SysActivity[];
+    code: number;
+    msg: string;
+}
+
+// 获取排行榜响应 - 假设也遵循相同格式
+export interface GetLeaderboardResponse {
+    total: number;
+    rows: LeaderboardEntry[];
+    code: number;
+    msg: string;
+}
+
+// 参与活动响应
+export interface ParticipateActivityResponse {
+    code: number;
+    msg: string;
+    data?: any;
+}
+
+// 活动列表查询参数
+export interface ActivityListParams {
+    pageNum?: number;
+    pageSize?: number;
+    activityName?: string;
+    activityType?: ActivityType;
+    status?: ActivityStatus;
+}
+
+// 排行榜查询参数
+export interface LeaderboardParams {
+    pageNum?: number;
+    pageSize?: number;
+}
+
+// 前端组件使用的标准化数据格式(保持原有格式以减少组件改动)
+export interface StandardizedActivityListResponse {
+    code: number;
+    msg: string;
+    data: {
+        list: SysActivity[];
+        total: number;
+        pageSize: number;
+        current: number;
+    };
+}
+
+export interface StandardizedLeaderboardResponse {
+    code: number;
+    msg: string;
+    data: {
+        list: LeaderboardEntry[];
+        total: number;
+        pageSize: number;
+        current: number;
+    };
+}
\ No newline at end of file