Complete implementation of the Goa Government e-Licensing platform with: Backend: - NestJS API with JWT authentication - PostgreSQL database with Knex ORM - Redis caching and session management - MinIO document storage - Hyperledger Besu blockchain integration - Multi-department workflow system - Comprehensive API tests (266/282 passing) Frontend: - Angular 21 with standalone components - Angular Material + TailwindCSS UI - Visual workflow builder - Document upload with progress tracking - Blockchain explorer integration - Role-based dashboards (Admin, Department, Citizen) - E2E tests with Playwright (37 tests) Infrastructure: - Docker Compose orchestration - Blockscout blockchain explorer - Development and production configurations
43 lines
741 B
TypeScript
43 lines
741 B
TypeScript
import {
|
|
IsString,
|
|
IsOptional,
|
|
IsArray,
|
|
ValidateNested,
|
|
} from 'class-validator';
|
|
import { Type } from 'class-transformer';
|
|
import { WorkflowStageDto } from './workflow-stage.dto';
|
|
|
|
export class CreateWorkflowDto {
|
|
@IsString()
|
|
workflowType: string;
|
|
|
|
@IsString()
|
|
name: string;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
description?: string;
|
|
|
|
@IsArray()
|
|
@ValidateNested({ each: true })
|
|
@Type(() => WorkflowStageDto)
|
|
stages: WorkflowStageDto[];
|
|
|
|
@IsOptional()
|
|
@IsArray()
|
|
@IsString({ each: true })
|
|
onSuccessActions?: string[];
|
|
|
|
@IsOptional()
|
|
@IsArray()
|
|
@IsString({ each: true })
|
|
onFailureActions?: string[];
|
|
|
|
@IsOptional()
|
|
metadata?: Record<string, any>;
|
|
|
|
@IsOptional()
|
|
@IsString()
|
|
createdBy?: string;
|
|
}
|