managarten/services/mana-core-auth/src/feedback/dto/feedback-query.dto.ts
Till-JS 819e4c9a2f feat(feedback): add centralized feedback system with AI-generated titles
- Add shared-feedback-types package with TypeScript types
- Add shared-feedback-service package with factory function
- Add shared-feedback-ui package with Svelte 5 components
- Add feedback module to mana-core-auth backend
- Add AI service using Gemini 2.0 Flash for title/category generation
- Add database schema and migration for feedback tables
- Integrate feedback page into Chat web app
- Add CORS support for X-App-Id header
- Add COMMANDS.md documentation for all dev commands

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 22:46:37 +01:00

33 lines
738 B
TypeScript

import { IsString, IsOptional, IsEnum, IsInt, Min, Max } from 'class-validator';
import { Transform } from 'class-transformer';
export class FeedbackQueryDto {
@IsString()
@IsOptional()
appId?: string;
@IsEnum(['submitted', 'under_review', 'planned', 'in_progress', 'completed', 'declined'])
@IsOptional()
status?: string;
@IsEnum(['bug', 'feature', 'improvement', 'question', 'other'])
@IsOptional()
category?: string;
@IsEnum(['votes', 'recent'])
@IsOptional()
sort?: 'votes' | 'recent' = 'votes';
@Transform(({ value }) => parseInt(value, 10))
@IsInt()
@Min(1)
@Max(50)
@IsOptional()
limit?: number = 20;
@Transform(({ value }) => parseInt(value, 10))
@IsInt()
@Min(0)
@IsOptional()
offset?: number = 0;
}