import 'package:ainoval/models/next_outline/next_outline_dto.dart'; import 'package:equatable/equatable.dart'; /// 剧情推演事件 abstract class NextOutlineEvent extends Equatable { const NextOutlineEvent(); @override List get props => []; } /// 初始化事件 class NextOutlineInitialized extends NextOutlineEvent { final String novelId; const NextOutlineInitialized({required this.novelId}); @override List get props => [novelId]; } /// 加载章节列表事件 class LoadChaptersRequested extends NextOutlineEvent { final String novelId; const LoadChaptersRequested({required this.novelId}); @override List get props => [novelId]; } /// 加载AI模型配置事件 class LoadAIModelConfigsRequested extends NextOutlineEvent { const LoadAIModelConfigsRequested(); } /// 更新上下文章节范围事件 class UpdateChapterRangeRequested extends NextOutlineEvent { final String? startChapterId; final String? endChapterId; const UpdateChapterRangeRequested({ this.startChapterId, this.endChapterId, }); @override List get props => [startChapterId, endChapterId]; } /// 生成剧情大纲事件 class GenerateNextOutlinesRequested extends NextOutlineEvent { final GenerateNextOutlinesRequest request; const GenerateNextOutlinesRequested({required this.request}); @override List get props => [request]; } /// 重新生成全部剧情大纲事件 class RegenerateAllOutlinesRequested extends NextOutlineEvent { final String? regenerateHint; const RegenerateAllOutlinesRequested({this.regenerateHint}); @override List get props => [regenerateHint]; } /// 重新生成单个剧情大纲事件 class RegenerateSingleOutlineRequested extends NextOutlineEvent { final RegenerateOptionRequest request; const RegenerateSingleOutlineRequested({required this.request}); @override List get props => [request]; } /// 选择剧情大纲事件 class OutlineSelected extends NextOutlineEvent { final String optionId; const OutlineSelected({required this.optionId}); @override List get props => [optionId]; } /// 保存选中的剧情大纲事件 class SaveSelectedOutlineRequested extends NextOutlineEvent { final SaveNextOutlineRequest request; final int? selectedOutlineIndex; const SaveSelectedOutlineRequested({ required this.request, this.selectedOutlineIndex, }); @override List get props => [request, selectedOutlineIndex]; } /// 接收到大纲生成块事件 class OutlineGenerationChunkReceived extends NextOutlineEvent { final String optionId; final String? optionTitle; final String textChunk; final bool isFinalChunk; final String? error; const OutlineGenerationChunkReceived({ required this.optionId, this.optionTitle, required this.textChunk, required this.isFinalChunk, this.error, }); @override List get props => [optionId, optionTitle, textChunk, isFinalChunk, error]; } /// 生成错误事件 class GenerationErrorOccurred extends NextOutlineEvent { final String error; const GenerationErrorOccurred({required this.error}); @override List get props => [error]; }