api-server/src/modules/focus-items/focus-items.controller.ts
WangDL 08f31dd5b6 feat: P0 后端补全 — BullMQ Workers 注册 + 用户 Profile API + 角色权限
- AppModule 注册 3 个 BullMQ Workers (AiAnalysis/DocumentImport/Notification)
- Users 模块新增 GET/PATCH /users/me/profile 端点:
  - GET 读取 UserProfile (learningIdentity, learningDirection, bio, currentGoal)
  - PATCH upsert UserProfile
  - GET /users/me 返回 profile + preferences (include join)
- 新增 RolesGuard + @Roles() 装饰器 (UserRole enum)
- QueueModule/QueueService 改进
- 各模块 controller/repository/service 完善

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-17 19:08:07 +08:00

37 lines
1.3 KiB
TypeScript

import { Controller, Get, Post, Patch, Body, Param, Query } from '@nestjs/common';
import { ApiTags, ApiOperation } from '@nestjs/swagger';
import { FocusItemsService } from './focus-items.service';
import { CurrentUser } from '../../common/decorators/current-user.decorator';
import { PaginationDto } from '../../common/dto/pagination.dto';
import type { UserPayload } from '../../common/types';
@ApiTags('focus-items')
@Controller('focus-items')
export class FocusItemsController {
constructor(private readonly focusItemsService: FocusItemsService) {}
@Get()
@ApiOperation({ summary: '获取待巩固项列表' })
async findAll(@CurrentUser() user: UserPayload, @Query() pagination: PaginationDto) {
return this.focusItemsService.findAll(String(user?.id || 'anonymous'), pagination);
}
@Post()
@ApiOperation({ summary: '创建待巩固项' })
async create(@CurrentUser() user: UserPayload, @Body() dto: any) {
return this.focusItemsService.create(String(user?.id || 'anonymous'), dto);
}
@Patch(':id')
@ApiOperation({ summary: '更新待巩固项' })
async update(@Param('id') id: string, @Body() dto: any) {
return this.focusItemsService.update(id, dto);
}
@Post(':id/complete')
@ApiOperation({ summary: '完成待巩固项' })
async complete(@Param('id') id: string) {
return this.focusItemsService.complete(id);
}
}