api-server/src/modules/learning-activity/learning-activity.controller.ts

37 lines
1.3 KiB
TypeScript
Raw Normal View History

import { Controller, Get, Query } from '@nestjs/common';
import { ApiTags, ApiOperation } from '@nestjs/swagger';
import { LearningActivityService } from './learning-activity.service';
import { CurrentUser } from '../../common/decorators/current-user.decorator';
import type { UserPayload } from '../../common/types';
@ApiTags('learning-activity')
@Controller('activity')
export class LearningActivityController {
constructor(private readonly activityService: LearningActivityService) {}
@Get('heatmap')
@ApiOperation({ summary: '获取学习热力图数据' })
async getHeatmap(@CurrentUser() user: UserPayload) {
return this.activityService.getHeatmap(String(user?.id || 'anonymous'));
}
@Get('summary')
@ApiOperation({ summary: '获取学习统计概览' })
async getSummary(@CurrentUser() user: UserPayload) {
return this.activityService.getSummary(String(user?.id || 'anonymous'));
}
@Get('trend')
@ApiOperation({ summary: '获取 AI 学习趋势分析' })
async getTrend(
@CurrentUser() user: UserPayload,
@Query('days') days?: string,
) {
const periodDays = parseInt(days || '7', 10);
return this.activityService.getTrend(
String(user?.id || 'anonymous'),
Math.min(Math.max(periodDays, 7), 30),
);
}
}