马良AI写作初始化仓库

This commit is contained in:
邓滨杰
2025-09-10 00:07:52 +08:00
parent 3c06bb1a03
commit 39c0f8840f
1309 changed files with 318528 additions and 0 deletions

View File

@@ -0,0 +1,482 @@
import 'package:equatable/equatable.dart';
abstract class SettingGenerationBlocEvent extends Equatable {
const SettingGenerationBlocEvent();
@override
List<Object?> get props => [];
}
/// 加载可用策略
class LoadStrategiesEvent extends SettingGenerationBlocEvent {
final String? novelId;
final String? userId;
const LoadStrategiesEvent({
this.novelId,
this.userId,
});
@override
List<Object?> get props => [novelId, userId];
}
/// 加载历史记录
class LoadHistoriesEvent extends SettingGenerationBlocEvent {
final String novelId;
final String userId;
final int page;
final int size;
const LoadHistoriesEvent({
required this.novelId,
required this.userId,
this.page = 0,
this.size = 20,
});
@override
List<Object?> get props => [novelId, userId, page, size];
}
/// 从小说设定创建编辑会话
class StartSessionFromNovelEvent extends SettingGenerationBlocEvent {
final String novelId;
final String editReason;
final String modelConfigId;
final bool createNewSnapshot;
const StartSessionFromNovelEvent({
required this.novelId,
required this.editReason,
required this.modelConfigId,
required this.createNewSnapshot,
});
@override
List<Object?> get props => [novelId, editReason, modelConfigId, createNewSnapshot];
}
/// 开始生成设定
class StartGenerationEvent extends SettingGenerationBlocEvent {
final String initialPrompt;
final String promptTemplateId;
final String? novelId;
final String modelConfigId;
final String? userId;
// 文本阶段公共模型透传(仅记录,不改变文本阶段默认使用私有模型)
final bool? usePublicTextModel;
final String? textPhasePublicProvider;
final String? textPhasePublicModelId;
const StartGenerationEvent({
required this.initialPrompt,
required this.promptTemplateId,
this.novelId,
required this.modelConfigId,
this.userId,
this.usePublicTextModel,
this.textPhasePublicProvider,
this.textPhasePublicModelId,
});
@override
List<Object?> get props => [
initialPrompt,
promptTemplateId,
novelId,
modelConfigId,
userId,
usePublicTextModel,
textPhasePublicProvider,
textPhasePublicModelId,
];
}
/// 基于当前会话进行整体调整生成
class AdjustGenerationEvent extends SettingGenerationBlocEvent {
final String sessionId;
final String adjustmentPrompt;
final String modelConfigId;
final String? promptTemplateId;
const AdjustGenerationEvent({
required this.sessionId,
required this.adjustmentPrompt,
required this.modelConfigId,
this.promptTemplateId,
});
@override
List<Object?> get props => [sessionId, adjustmentPrompt, modelConfigId, promptTemplateId];
}
/// 修改节点
class UpdateNodeEvent extends SettingGenerationBlocEvent {
final String nodeId;
final String modificationPrompt;
final String modelConfigId;
final String scope; // 'self' | 'self_and_children' | 'children_only'
const UpdateNodeEvent({
required this.nodeId,
required this.modificationPrompt,
required this.modelConfigId,
this.scope = 'self',
});
@override
List<Object?> get props => [
nodeId,
modificationPrompt,
modelConfigId,
scope,
];
}
/// 选择节点
class SelectNodeEvent extends SettingGenerationBlocEvent {
final String? nodeId;
const SelectNodeEvent(this.nodeId);
@override
List<Object?> get props => [nodeId];
}
/// 切换视图模式
class ToggleViewModeEvent extends SettingGenerationBlocEvent {
final String viewMode; // 'compact' | 'detailed'
const ToggleViewModeEvent(this.viewMode);
@override
List<Object?> get props => [viewMode];
}
/// 应用待处理的更改
class ApplyPendingChangesEvent extends SettingGenerationBlocEvent {
const ApplyPendingChangesEvent();
}
/// 取消待处理的更改
class CancelPendingChangesEvent extends SettingGenerationBlocEvent {
const CancelPendingChangesEvent();
}
/// 撤销节点更改
class UndoNodeChangeEvent extends SettingGenerationBlocEvent {
final String nodeId;
const UndoNodeChangeEvent(this.nodeId);
@override
List<Object?> get props => [nodeId];
}
/// 保存生成的设定
class SaveGeneratedSettingsEvent extends SettingGenerationBlocEvent {
final String? novelId; // 改为可空,支持独立快照
final bool updateExisting; // 是否更新现有历史记录
final String? targetHistoryId; // 目标历史记录ID
const SaveGeneratedSettingsEvent(
this.novelId, {
this.updateExisting = false,
this.targetHistoryId,
});
@override
List<Object?> get props => [novelId, updateExisting, targetHistoryId];
}
/// 创建新会话
class CreateNewSessionEvent extends SettingGenerationBlocEvent {
const CreateNewSessionEvent();
}
/// 选择会话
class SelectSessionEvent extends SettingGenerationBlocEvent {
final String sessionId;
final bool isHistorySession;
const SelectSessionEvent(
this.sessionId, {
this.isHistorySession = false,
});
@override
List<Object?> get props => [sessionId, isHistorySession];
}
/// 从历史记录创建编辑会话
class CreateSessionFromHistoryEvent extends SettingGenerationBlocEvent {
final String historyId;
final String userId;
final String editReason;
final String modelConfigId;
const CreateSessionFromHistoryEvent({
required this.historyId,
required this.userId,
this.editReason = '从历史记录编辑',
required this.modelConfigId,
});
@override
List<Object?> get props => [historyId, userId, editReason, modelConfigId];
}
/// 更新调整提示词
class UpdateAdjustmentPromptEvent extends SettingGenerationBlocEvent {
final String prompt;
const UpdateAdjustmentPromptEvent(this.prompt);
@override
List<Object?> get props => [prompt];
}
/// 重置状态事件
class ResetEvent extends SettingGenerationBlocEvent {
const ResetEvent();
}
/// 重试事件(从错误状态恢复)
class RetryEvent extends SettingGenerationBlocEvent {
const RetryEvent();
}
/// 开始渲染节点事件
class StartNodeRenderEvent extends SettingGenerationBlocEvent {
final String nodeId;
const StartNodeRenderEvent(this.nodeId);
@override
List<Object?> get props => [nodeId];
}
/// 完成节点渲染事件
class CompleteNodeRenderEvent extends SettingGenerationBlocEvent {
final String nodeId;
const CompleteNodeRenderEvent(this.nodeId);
@override
List<Object?> get props => [nodeId];
}
/// 处理渲染队列事件
class ProcessRenderQueueEvent extends SettingGenerationBlocEvent {
const ProcessRenderQueueEvent();
@override
List<Object?> get props => [];
}
/// 更新节点内容事件
class UpdateNodeContentEvent extends SettingGenerationBlocEvent {
final String nodeId;
final String content;
const UpdateNodeContentEvent({
required this.nodeId,
required this.content,
});
@override
List<Object?> get props => [nodeId, content];
}
/// 获取会话状态事件
class GetSessionStatusEvent extends SettingGenerationBlocEvent {
final String sessionId;
const GetSessionStatusEvent(this.sessionId);
@override
List<Object?> get props => [sessionId];
}
/// 取消会话事件
class CancelSessionEvent extends SettingGenerationBlocEvent {
final String sessionId;
const CancelSessionEvent(this.sessionId);
@override
List<Object?> get props => [sessionId];
}
// ==================== NOVEL_COMPOSE 事件族 ====================
/// 启动:只生成大纲
class StartComposeOutlineEvent extends SettingGenerationBlocEvent {
final String? novelId;
final String userId;
final String modelConfigId;
final bool? isPublicModel;
final String? publicModelConfigId;
final String? settingSessionId; // 方案A后端拉取会话转换
final Map<String, dynamic>? contextSelections; // 直接透传已选上下文(可选)
final String? prompt; // 自由提示词
final String? instructions; // 生成指令
final int chapterCount; // 按章大纲数量(支持黄金三章=3
final Map<String, dynamic> parameters; // 其他采样/模式参数
const StartComposeOutlineEvent({
required this.userId,
required this.modelConfigId,
this.isPublicModel,
this.publicModelConfigId,
this.novelId,
this.settingSessionId,
this.contextSelections,
this.prompt,
this.instructions,
this.chapterCount = 3,
this.parameters = const {},
});
}
/// 启动直接生成章节黄金三章或指定N章
class StartComposeChaptersEvent extends SettingGenerationBlocEvent {
final String? novelId;
final String userId;
final String modelConfigId;
final bool? isPublicModel;
final String? publicModelConfigId;
final String? settingSessionId;
final Map<String, dynamic>? contextSelections;
final String? prompt;
final String? instructions;
final int chapterCount; // 生成章节数
final Map<String, dynamic> parameters;
const StartComposeChaptersEvent({
required this.userId,
required this.modelConfigId,
this.isPublicModel,
this.publicModelConfigId,
this.novelId,
this.settingSessionId,
this.contextSelections,
this.prompt,
this.instructions,
this.chapterCount = 3,
this.parameters = const {},
});
}
/// 启动先大纲后章节outline_plus_chapters
class StartComposeBundleEvent extends SettingGenerationBlocEvent {
final String? novelId;
final String userId;
final String modelConfigId;
final bool? isPublicModel;
final String? publicModelConfigId;
final String? settingSessionId;
final Map<String, dynamic>? contextSelections;
final String? prompt;
final String? instructions;
final int chapterCount; // 需要的大纲/章节数量
final Map<String, dynamic> parameters;
const StartComposeBundleEvent({
required this.userId,
required this.modelConfigId,
this.isPublicModel,
this.publicModelConfigId,
this.novelId,
this.settingSessionId,
this.contextSelections,
this.prompt,
this.instructions,
this.chapterCount = 3,
this.parameters = const {},
});
}
/// 微调:针对已生成的大纲或章节进行整体或定向调整
class RefineComposeEvent extends SettingGenerationBlocEvent {
final String? novelId;
final String userId;
final String modelConfigId;
final String? settingSessionId;
final Map<String, dynamic>? contextSelections;
final String? instructions; // 具体微调指令
final Map<String, dynamic> parameters; // 可包含 chapterIndex、outlineText 等
const RefineComposeEvent({
required this.userId,
required this.modelConfigId,
this.novelId,
this.settingSessionId,
this.contextSelections,
this.instructions,
this.parameters = const {},
});
}
/// 取消写作编排流
class CancelComposeEvent extends SettingGenerationBlocEvent {
final String connectionId; // SSE连接ID或业务自定义ID
const CancelComposeEvent(this.connectionId);
@override
List<Object?> get props => [connectionId];
}
/// 获取用户历史记录事件
class GetUserHistoriesEvent extends SettingGenerationBlocEvent {
final String? novelId;
final int page;
final int size;
const GetUserHistoriesEvent({
this.novelId,
this.page = 0,
this.size = 20,
});
@override
List<Object?> get props => [novelId, page, size];
}
/// 删除历史记录事件
class DeleteHistoryEvent extends SettingGenerationBlocEvent {
final String historyId;
const DeleteHistoryEvent(this.historyId);
@override
List<Object?> get props => [historyId];
}
/// 复制历史记录事件
class CopyHistoryEvent extends SettingGenerationBlocEvent {
final String historyId;
final String copyReason;
const CopyHistoryEvent({
required this.historyId,
required this.copyReason,
});
@override
List<Object?> get props => [historyId, copyReason];
}
/// 恢复历史记录到小说事件
class RestoreHistoryToNovelEvent extends SettingGenerationBlocEvent {
final String historyId;
final String novelId;
const RestoreHistoryToNovelEvent({
required this.historyId,
required this.novelId,
});
@override
List<Object?> get props => [historyId, novelId];
}