From e8396f0cbd9ecc2d6b8e77b4d676b88a926f5c20 Mon Sep 17 00:00:00 2001 From: xiamuceer Date: Thu, 6 Nov 2025 12:36:32 +0800 Subject: [PATCH] =?UTF-8?q?update:1.=E6=96=B0=E5=A2=9E=E7=AB=A0=E8=8A=82?= =?UTF-8?q?=E5=86=85=E5=AE=B9=E6=89=B9=E9=87=8F=E7=94=9F=E6=88=90=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/app/api/chapters.py | 613 +++++++++++++++++- backend/app/database.py | 2 +- backend/app/models/__init__.py | 2 + backend/app/models/batch_generation_task.py | 43 ++ backend/app/schemas/chapter.py | 42 +- backend/app/services/prompt_service.py | 14 +- frontend/public/qq.jpg | Bin 0 -> 192997 bytes frontend/src/components/AnnouncementModal.tsx | 121 ++++ frontend/src/pages/AuthCallback.tsx | 68 +- frontend/src/pages/Chapters.tsx | 467 ++++++++++++- frontend/src/pages/Login.tsx | 37 +- 11 files changed, 1381 insertions(+), 28 deletions(-) create mode 100644 backend/app/models/batch_generation_task.py create mode 100644 frontend/public/qq.jpg create mode 100644 frontend/src/components/AnnouncementModal.tsx diff --git a/backend/app/api/chapters.py b/backend/app/api/chapters.py index 1d3d0b3..f192a29 100644 --- a/backend/app/api/chapters.py +++ b/backend/app/api/chapters.py @@ -18,12 +18,16 @@ from app.models.generation_history import GenerationHistory from app.models.writing_style import WritingStyle from app.models.analysis_task import AnalysisTask from app.models.memory import PlotAnalysis, StoryMemory +from app.models.batch_generation_task import BatchGenerationTask from app.schemas.chapter import ( ChapterCreate, ChapterUpdate, ChapterResponse, ChapterListResponse, - ChapterGenerateRequest + ChapterGenerateRequest, + BatchGenerateRequest, + BatchGenerateResponse, + BatchGenerateStatusResponse ) from app.services.ai_service import AIService from app.services.prompt_service import prompt_service @@ -1514,3 +1518,610 @@ async def trigger_chapter_analysis( "status": "pending", "message": "分析任务已创建并开始执行" } + + + +def calculate_estimated_time( + chapter_count: int, + target_word_count: int, + enable_analysis: bool +) -> int: + """ + 计算预估耗时(分钟) + + 基准: + - 生成3000字约需2分钟 + - 分析约需1分钟 + """ + generation_time_per_chapter = (target_word_count / 3000) * 2 + analysis_time_per_chapter = 1 if enable_analysis else 0 + + total_time = chapter_count * (generation_time_per_chapter + analysis_time_per_chapter) + + return max(1, int(total_time)) + + +@router.post("/project/{project_id}/batch-generate", response_model=BatchGenerateResponse, summary="批量顺序生成章节内容") +async def batch_generate_chapters_in_order( + project_id: str, + batch_request: BatchGenerateRequest, + request: Request, + background_tasks: BackgroundTasks, + db: AsyncSession = Depends(get_db), + user_ai_service: AIService = Depends(get_user_ai_service) +): + """ + 从指定章节开始,按顺序批量生成指定数量的章节 + + 特性: + 1. 严格按章节序号顺序生成(不可跳过) + 2. 自动检测起始章节是否可生成 + 3. 可选同步分析(影响耗时和质量) + 4. 失败后终止,不继续后续章节 + """ + user_id = getattr(request.state, "user_id", None) + if not user_id: + raise HTTPException(status_code=401, detail="未登录") + + # 验证项目存在 + project_result = await db.execute( + select(Project).where(Project.id == project_id) + ) + project = project_result.scalar_one_or_none() + if not project: + raise HTTPException(status_code=404, detail="项目不存在") + + # 获取项目的所有章节,按序号排序 + result = await db.execute( + select(Chapter) + .where(Chapter.project_id == project_id) + .order_by(Chapter.chapter_number) + ) + all_chapters = result.scalars().all() + + if not all_chapters: + raise HTTPException(status_code=404, detail="项目没有章节") + + # 计算要生成的章节范围 + start_number = batch_request.start_chapter_number + end_number = start_number + batch_request.count - 1 + + # 筛选出要生成的章节 + chapters_to_generate = [ + ch for ch in all_chapters + if start_number <= ch.chapter_number <= end_number + ] + + if not chapters_to_generate: + raise HTTPException(status_code=404, detail="指定范围内没有章节") + + # 验证起始章节的前置条件 + first_chapter = chapters_to_generate[0] + can_generate, error_msg, _ = await check_prerequisites(db, first_chapter) + if not can_generate: + raise HTTPException(status_code=400, detail=f"起始章节无法生成:{error_msg}") + + # 创建批量生成任务 + batch_task = BatchGenerationTask( + project_id=project_id, + user_id=user_id, + start_chapter_number=start_number, + chapter_count=len(chapters_to_generate), + chapter_ids=[ch.id for ch in chapters_to_generate], + style_id=batch_request.style_id, + target_word_count=batch_request.target_word_count, + enable_analysis=batch_request.enable_analysis, + max_retries=batch_request.max_retries, + status='pending', + total_chapters=len(chapters_to_generate), + completed_chapters=0, + failed_chapters=[], + current_retry_count=0 + ) + db.add(batch_task) + await db.commit() + await db.refresh(batch_task) + + batch_id = batch_task.id + + # 计算预估耗时 + estimated_time = calculate_estimated_time( + chapter_count=len(chapters_to_generate), + target_word_count=batch_request.target_word_count, + enable_analysis=batch_request.enable_analysis + ) + + logger.info(f"📦 创建批量生成任务: {batch_id}, 章节: 第{start_number}-{end_number}章, 预估耗时: {estimated_time}分钟") + + # 启动后台批量生成任务 + background_tasks.add_task( + execute_batch_generation_in_order, + batch_id=batch_id, + user_id=user_id, + ai_service=user_ai_service + ) + + return BatchGenerateResponse( + batch_id=batch_id, + message=f"批量生成任务已创建,将生成 {len(chapters_to_generate)} 个章节", + chapters_to_generate=[ + { + "id": ch.id, + "chapter_number": ch.chapter_number, + "title": ch.title + } + for ch in chapters_to_generate + ], + estimated_time_minutes=estimated_time + ) + + +@router.get("/batch-generate/{batch_id}/status", response_model=BatchGenerateStatusResponse, summary="查询批量生成任务状态") +async def get_batch_generation_status( + batch_id: str, + db: AsyncSession = Depends(get_db) +): + """查询批量生成任务的状态和进度""" + result = await db.execute( + select(BatchGenerationTask).where(BatchGenerationTask.id == batch_id) + ) + task = result.scalar_one_or_none() + + if not task: + raise HTTPException(status_code=404, detail="批量生成任务不存在") + + return BatchGenerateStatusResponse( + batch_id=task.id, + status=task.status, + total=task.total_chapters, + completed=task.completed_chapters, + current_chapter_id=task.current_chapter_id, + current_chapter_number=task.current_chapter_number, + current_retry_count=task.current_retry_count, + max_retries=task.max_retries, + failed_chapters=task.failed_chapters or [], + created_at=task.created_at.isoformat() if task.created_at else None, + started_at=task.started_at.isoformat() if task.started_at else None, + completed_at=task.completed_at.isoformat() if task.completed_at else None, + error_message=task.error_message + ) + + +@router.get("/project/{project_id}/batch-generate/active", summary="获取项目当前运行中的批量生成任务") +async def get_active_batch_generation( + project_id: str, + db: AsyncSession = Depends(get_db) +): + """ + 获取项目当前运行中的批量生成任务 + 用于页面刷新后恢复任务状态 + """ + result = await db.execute( + select(BatchGenerationTask) + .where(BatchGenerationTask.project_id == project_id) + .where(BatchGenerationTask.status.in_(['pending', 'running'])) + .order_by(BatchGenerationTask.created_at.desc()) + .limit(1) + ) + task = result.scalar_one_or_none() + + if not task: + return { + "has_active_task": False, + "task": None + } + + return { + "has_active_task": True, + "task": { + "batch_id": task.id, + "status": task.status, + "total": task.total_chapters, + "completed": task.completed_chapters, + "current_chapter_id": task.current_chapter_id, + "current_chapter_number": task.current_chapter_number, + "created_at": task.created_at.isoformat() if task.created_at else None, + "started_at": task.started_at.isoformat() if task.started_at else None + } + } + + +@router.post("/batch-generate/{batch_id}/cancel", summary="取消批量生成任务") +async def cancel_batch_generation( + batch_id: str, + db: AsyncSession = Depends(get_db) +): + """取消正在进行的批量生成任务""" + result = await db.execute( + select(BatchGenerationTask).where(BatchGenerationTask.id == batch_id) + ) + task = result.scalar_one_or_none() + + if not task: + raise HTTPException(status_code=404, detail="批量生成任务不存在") + + if task.status in ['completed', 'failed', 'cancelled']: + raise HTTPException(status_code=400, detail=f"任务已处于 {task.status} 状态,无法取消") + + task.status = 'cancelled' + task.completed_at = datetime.now() + await db.commit() + + logger.info(f"🛑 批量生成任务已取消: {batch_id}") + + return { + "message": "批量生成任务已取消", + "batch_id": batch_id, + "completed_chapters": task.completed_chapters, + "total_chapters": task.total_chapters + } + + +async def execute_batch_generation_in_order( + batch_id: str, + user_id: str, + ai_service: AIService +): + """ + 按顺序执行批量生成任务(后台任务) + - 严格按章节序号顺序 + - 任一章节失败则终止后续生成 + - 可选同步分析 + """ + db_session = None + write_lock = await get_db_write_lock(user_id) + + try: + logger.info(f"📦 开始执行顺序批量生成任务: {batch_id}") + + # 创建独立数据库会话 + from app.database import get_engine + from sqlalchemy.ext.asyncio import async_sessionmaker, AsyncSession + + engine = await get_engine(user_id) + AsyncSessionLocal = async_sessionmaker( + engine, + class_=AsyncSession, + expire_on_commit=False + ) + db_session = AsyncSessionLocal() + + # 获取任务 + task_result = await db_session.execute( + select(BatchGenerationTask).where(BatchGenerationTask.id == batch_id) + ) + task = task_result.scalar_one_or_none() + + if not task: + logger.error(f"❌ 批量生成任务不存在: {batch_id}") + return + + # 更新任务状态为运行中 + async with write_lock: + task.status = 'running' + task.started_at = datetime.now() + await db_session.commit() + + # 按顺序生成每个章节 + for idx, chapter_id in enumerate(task.chapter_ids, 1): + # 检查任务是否被取消 + await db_session.refresh(task) + if task.status == 'cancelled': + logger.info(f"🛑 批量生成任务已被取消: {batch_id}") + return + + # 更新当前章节 + async with write_lock: + task.current_chapter_id = chapter_id + task.current_retry_count = 0 # 重置重试计数 + await db_session.commit() + + # 重试循环 + retry_count = 0 + chapter_success = False + chapter = None + last_error = None + + while retry_count <= task.max_retries and not chapter_success: + try: + # 获取章节信息 + chapter_result = await db_session.execute( + select(Chapter).where(Chapter.id == chapter_id) + ) + chapter = chapter_result.scalar_one_or_none() + + if not chapter: + raise Exception(f"章节 {chapter_id} 不存在") + + # 更新当前章节序号和重试次数 + async with write_lock: + task.current_chapter_number = chapter.chapter_number + task.current_retry_count = retry_count + await db_session.commit() + + if retry_count > 0: + logger.info(f"🔄 [{idx}/{task.total_chapters}] 重试生成章节 (第{retry_count}次): 第{chapter.chapter_number}章 《{chapter.title}》") + else: + logger.info(f"📝 [{idx}/{task.total_chapters}] 开始生成章节: 第{chapter.chapter_number}章 《{chapter.title}》") + + # 检查前置条件(每次都检查,确保顺序性) + can_generate, error_msg, _ = await check_prerequisites(db_session, chapter) + if not can_generate: + raise Exception(f"前置条件不满足: {error_msg}") + + # 生成章节内容(复用现有流式生成逻辑的核心部分) + await generate_single_chapter_for_batch( + db_session=db_session, + chapter=chapter, + user_id=user_id, + style_id=task.style_id, + target_word_count=task.target_word_count, + ai_service=ai_service, + write_lock=write_lock + ) + + logger.info(f"✅ 章节生成完成: 第{chapter.chapter_number}章") + + # 如果启用同步分析 + if task.enable_analysis: + logger.info(f"🔍 开始同步分析章节: 第{chapter.chapter_number}章") + + async with write_lock: + analysis_task = AnalysisTask( + chapter_id=chapter_id, + user_id=user_id, + project_id=task.project_id, + status='pending', + progress=0 + ) + db_session.add(analysis_task) + await db_session.commit() + await db_session.refresh(analysis_task) + + # 同步执行分析(等待完成) + await analyze_chapter_background( + chapter_id=chapter_id, + user_id=user_id, + project_id=task.project_id, + task_id=analysis_task.id, + ai_service=ai_service + ) + + logger.info(f"✅ 章节分析完成: 第{chapter.chapter_number}章") + + # 标记成功 + chapter_success = True + + # 更新完成数 + async with write_lock: + task.completed_chapters += 1 + task.current_retry_count = 0 # 重置重试计数 + await db_session.commit() + + logger.info(f"✅ 进度: {task.completed_chapters}/{task.total_chapters}") + + except Exception as e: + last_error = str(e) + logger.error(f"❌ 章节生成失败: 第{chapter.chapter_number if chapter else '?'}章, 错误: {last_error}") + + retry_count += 1 + + # 如果还有重试机会,等待一小段时间后重试 + if retry_count <= task.max_retries: + wait_time = min(2 ** retry_count, 10) # 指数退避,最多等待10秒 + logger.info(f"⏳ 等待 {wait_time} 秒后重试...") + await asyncio.sleep(wait_time) + else: + # 达到最大重试次数,记录失败信息 + logger.error(f"❌ 章节生成失败,已达最大重试次数({task.max_retries}): 第{chapter.chapter_number if chapter else '?'}章") + + failed_info = { + 'chapter_id': chapter_id, + 'chapter_number': chapter.chapter_number if chapter else -1, + 'title': chapter.title if chapter else '未知', + 'error': last_error, + 'retry_count': retry_count - 1 + } + + async with write_lock: + if task.failed_chapters is None: + task.failed_chapters = [] + task.failed_chapters.append(failed_info) + + # 标记任务失败并终止 + task.status = 'failed' + task.error_message = f"第{chapter.chapter_number}章生成失败(重试{retry_count-1}次): {last_error}"[:500] + task.completed_at = datetime.now() + task.current_retry_count = 0 + await db_session.commit() + + logger.error(f"🛑 批量生成终止于第{chapter.chapter_number}章") + return + + # 全部完成 + async with write_lock: + task.status = 'completed' + task.completed_at = datetime.now() + task.current_chapter_id = None + task.current_chapter_number = None + await db_session.commit() + + logger.info(f"✅ 批量生成任务全部完成: {batch_id}, 成功生成 {task.completed_chapters} 章") + + except Exception as e: + logger.error(f"❌ 批量生成任务异常: {str(e)}", exc_info=True) + if db_session and task: + try: + async with write_lock: + task.status = 'failed' + task.error_message = str(e)[:500] + task.completed_at = datetime.now() + await db_session.commit() + except Exception as commit_error: + logger.error(f"❌ 更新任务失败状态失败: {str(commit_error)}") + finally: + if db_session: + await db_session.close() + + +async def generate_single_chapter_for_batch( + db_session: AsyncSession, + chapter: Chapter, + user_id: str, + style_id: Optional[int], + target_word_count: int, + ai_service: AIService, + write_lock: Lock +): + """ + 为批量生成执行单个章节的生成(非流式) + 复用现有生成逻辑的核心部分 + """ + # 获取项目信息 + project_result = await db_session.execute( + select(Project).where(Project.id == chapter.project_id) + ) + project = project_result.scalar_one_or_none() + if not project: + raise Exception("项目不存在") + + # 获取对应的大纲 + outline_result = await db_session.execute( + select(Outline) + .where(Outline.project_id == chapter.project_id) + .where(Outline.order_index == chapter.chapter_number) + ) + outline = outline_result.scalar_one_or_none() + + # 获取所有大纲用于上下文 + all_outlines_result = await db_session.execute( + select(Outline) + .where(Outline.project_id == chapter.project_id) + .order_by(Outline.order_index) + ) + all_outlines = all_outlines_result.scalars().all() + outlines_context = "\n".join([ + f"第{o.order_index}章 {o.title}: {o.content[:100]}..." + for o in all_outlines + ]) + + # 获取角色信息 + characters_result = await db_session.execute( + select(Character).where(Character.project_id == chapter.project_id) + ) + characters = characters_result.scalars().all() + characters_info = "\n".join([ + f"- {c.name}({'组织' if c.is_organization else '角色'}, {c.role_type}): {c.personality[:100] if c.personality else ''}" + for c in characters + ]) + + # 获取写作风格 + style_content = "" + if style_id: + style_result = await db_session.execute( + select(WritingStyle).where(WritingStyle.id == style_id) + ) + style = style_result.scalar_one_or_none() + if style: + if style.project_id is None or style.project_id == chapter.project_id: + style_content = style.prompt_content or "" + + # 构建智能上下文 + smart_context = await build_smart_chapter_context( + db=db_session, + project_id=project.id, + current_chapter_number=chapter.chapter_number, + user_id=user_id + ) + + # 组装上下文 + previous_content = "" + if smart_context['story_skeleton']: + previous_content += smart_context['story_skeleton'] + "\n\n" + if smart_context['relevant_history']: + previous_content += smart_context['relevant_history'] + "\n\n" + if smart_context['recent_summary']: + previous_content += smart_context['recent_summary'] + "\n\n" + if smart_context['recent_full']: + previous_content += smart_context['recent_full'] + + # 构建记忆增强上下文 + memory_context = await memory_service.build_context_for_generation( + user_id=user_id, + project_id=project.id, + current_chapter=chapter.chapter_number, + chapter_outline=outline.content if outline else chapter.summary or "", + character_names=[c.name for c in characters] if characters else None + ) + + # 生成提示词 + if previous_content: + prompt = prompt_service.get_chapter_generation_with_context_prompt( + title=project.title, + theme=project.theme or '', + genre=project.genre or '', + narrative_perspective=project.narrative_perspective or '第三人称', + time_period=project.world_time_period or '未设定', + location=project.world_location or '未设定', + atmosphere=project.world_atmosphere or '未设定', + rules=project.world_rules or '未设定', + characters_info=characters_info or '暂无角色信息', + outlines_context=outlines_context, + previous_content=previous_content, + chapter_number=chapter.chapter_number, + chapter_title=chapter.title, + chapter_outline=outline.content if outline else chapter.summary or '暂无大纲', + style_content=style_content, + target_word_count=target_word_count, + memory_context=memory_context + ) + else: + prompt = prompt_service.get_chapter_generation_prompt( + title=project.title, + theme=project.theme or '', + genre=project.genre or '', + narrative_perspective=project.narrative_perspective or '第三人称', + time_period=project.world_time_period or '未设定', + location=project.world_location or '未设定', + atmosphere=project.world_atmosphere or '未设定', + rules=project.world_rules or '未设定', + characters_info=characters_info or '暂无角色信息', + outlines_context=outlines_context, + chapter_number=chapter.chapter_number, + chapter_title=chapter.title, + chapter_outline=outline.content if outline else chapter.summary or '暂无大纲', + style_content=style_content, + target_word_count=target_word_count, + memory_context=memory_context + ) + + # 非流式生成内容 + full_content = "" + async for chunk in ai_service.generate_text_stream(prompt=prompt): + full_content += chunk + + # 更新章节内容到数据库(使用锁保护) + async with write_lock: + old_word_count = chapter.word_count or 0 + chapter.content = full_content + new_word_count = len(full_content) + chapter.word_count = new_word_count + chapter.status = "completed" + + # 更新项目字数 + project.current_words = project.current_words - old_word_count + new_word_count + + # 记录生成历史 + history = GenerationHistory( + project_id=chapter.project_id, + chapter_id=chapter.id, + prompt=f"批量生成: 第{chapter.chapter_number}章 {chapter.title}", + generated_content=full_content[:500] if len(full_content) > 500 else full_content, + model="default" + ) + db_session.add(history) + + await db_session.commit() + await db_session.refresh(chapter) + + logger.info(f"✅ 单章节生成完成: 第{chapter.chapter_number}章,共 {new_word_count} 字") diff --git a/backend/app/database.py b/backend/app/database.py index 93f0b18..86aebac 100644 --- a/backend/app/database.py +++ b/backend/app/database.py @@ -21,7 +21,7 @@ from app.models import ( Project, Outline, Character, Chapter, GenerationHistory, Settings, WritingStyle, ProjectDefaultStyle, RelationshipType, CharacterRelationship, Organization, OrganizationMember, - StoryMemory, PlotAnalysis, AnalysisTask + StoryMemory, PlotAnalysis, AnalysisTask, BatchGenerationTask ) # 引擎缓存:每个用户一个引擎 diff --git a/backend/app/models/__init__.py b/backend/app/models/__init__.py index 61f7e8c..396099c 100644 --- a/backend/app/models/__init__.py +++ b/backend/app/models/__init__.py @@ -15,6 +15,7 @@ from app.models.relationship import ( ) from app.models.memory import StoryMemory, PlotAnalysis from app.models.analysis_task import AnalysisTask +from app.models.batch_generation_task import BatchGenerationTask __all__ = [ "Project", @@ -32,4 +33,5 @@ __all__ = [ "StoryMemory", "PlotAnalysis", "AnalysisTask", + "BatchGenerationTask", ] \ No newline at end of file diff --git a/backend/app/models/batch_generation_task.py b/backend/app/models/batch_generation_task.py new file mode 100644 index 0000000..85ac92b --- /dev/null +++ b/backend/app/models/batch_generation_task.py @@ -0,0 +1,43 @@ +"""批量生成任务数据模型""" +from sqlalchemy import Column, String, Integer, DateTime, Boolean, JSON +from sqlalchemy.sql import func +from app.database import Base +import uuid + + +class BatchGenerationTask(Base): + """批量生成任务表""" + __tablename__ = "batch_generation_tasks" + + id = Column(String(36), primary_key=True, default=lambda: str(uuid.uuid4())) + project_id = Column(String(36), nullable=False, comment="项目ID") + user_id = Column(String(100), nullable=False, comment="用户ID") + + # 任务配置 + start_chapter_number = Column(Integer, nullable=False, comment="起始章节序号") + chapter_count = Column(Integer, nullable=False, comment="生成章节数量") + chapter_ids = Column(JSON, nullable=False, comment="待生成的章节ID列表") + style_id = Column(Integer, comment="使用的写作风格ID") + target_word_count = Column(Integer, default=3000, comment="目标字数") + enable_analysis = Column(Boolean, default=False, comment="是否启用同步分析") + + # 任务状态 + status = Column(String(20), default="pending", comment="任务状态: pending/running/completed/failed/cancelled") + total_chapters = Column(Integer, default=0, comment="总章节数") + completed_chapters = Column(Integer, default=0, comment="已完成章节数") + failed_chapters = Column(JSON, default=list, comment="失败的章节信息列表") + current_chapter_id = Column(String(36), comment="当前正在生成的章节ID") + current_chapter_number = Column(Integer, comment="当前正在生成的章节序号") + current_retry_count = Column(Integer, default=0, comment="当前章节重试次数") + max_retries = Column(Integer, default=3, comment="最大重试次数") + + # 时间记录 + created_at = Column(DateTime, server_default=func.now(), comment="创建时间") + started_at = Column(DateTime, comment="开始时间") + completed_at = Column(DateTime, comment="完成时间") + + # 错误信息 + error_message = Column(String(500), comment="错误信息") + + def __repr__(self): + return f"" \ No newline at end of file diff --git a/backend/app/schemas/chapter.py b/backend/app/schemas/chapter.py index b82c369..52e9d7f 100644 --- a/backend/app/schemas/chapter.py +++ b/backend/app/schemas/chapter.py @@ -65,4 +65,44 @@ class ChapterGenerateRequest(BaseModel): description="目标字数,默认3000字", ge=500, # 最小500字 le=10000 # 最大10000字 - ) \ No newline at end of file + ) + + +class BatchGenerateRequest(BaseModel): + """批量生成章节的请求模型""" + start_chapter_number: int = Field(..., description="起始章节序号") + count: int = Field(..., description="生成章节数量", ge=1, le=20) + style_id: Optional[int] = Field(None, description="写作风格ID") + target_word_count: Optional[int] = Field( + 3000, + description="目标字数,默认3000字", + ge=500, + le=10000 + ) + enable_analysis: bool = Field(False, description="是否启用同步分析") + max_retries: int = Field(3, description="每个章节的最大重试次数", ge=0, le=5) + + +class BatchGenerateResponse(BaseModel): + """批量生成响应模型""" + batch_id: str = Field(..., description="批次ID") + message: str = Field(..., description="响应消息") + chapters_to_generate: list[dict] = Field(..., description="待生成章节列表") + estimated_time_minutes: int = Field(..., description="预估耗时(分钟)") + + +class BatchGenerateStatusResponse(BaseModel): + """批量生成状态响应模型""" + batch_id: str + status: str + total: int + completed: int + current_chapter_id: Optional[str] = None + current_chapter_number: Optional[int] = None + current_retry_count: Optional[int] = None + max_retries: Optional[int] = None + failed_chapters: list[dict] = [] + created_at: Optional[str] = None + started_at: Optional[str] = None + completed_at: Optional[str] = None + error_message: Optional[str] = None \ No newline at end of file diff --git a/backend/app/services/prompt_service.py b/backend/app/services/prompt_service.py index 1b05a0f..d80c41d 100644 --- a/backend/app/services/prompt_service.py +++ b/backend/app/services/prompt_service.py @@ -478,7 +478,7 @@ class PromptService: 3. 符合角色性格设定 4. 体现世界观特色 5. 使用{narrative_perspective}视角 -6. 字数要求:不得低于{target_word_count}字 +6. **字数要求:目标{target_word_count}字,不得低于{target_word_count}字,建议控制在{target_word_count}至{max_word_count}字之间** 7. 语言自然流畅,避免AI痕迹 请直接输出章节正文内容,不要包含章节标题和其他说明文字。""" @@ -536,7 +536,7 @@ class PromptService: 4. **写作风格**: - 使用{narrative_perspective}视角 -- 字数要求:不得低于{target_word_count}字 +- **字数要求:目标{target_word_count}字,不得低于{target_word_count}字,建议控制在{target_word_count}至{max_word_count}字之间** - 语言自然流畅,避免AI痕迹 - 体现世界观特色 @@ -871,6 +871,9 @@ class PromptService: target_word_count: 目标字数,默认3000字 memory_context: 记忆上下文(可选) """ + # 计算最大字数(目标字数+1000) + max_word_count = target_word_count + 1000 + # 格式化记忆上下文 memory_text = "" if memory_context: @@ -896,7 +899,8 @@ class PromptService: chapter_number=chapter_number, chapter_title=chapter_title, chapter_outline=chapter_outline, - target_word_count=target_word_count + target_word_count=target_word_count, + max_word_count=max_word_count ) # 插入记忆上下文 @@ -930,6 +934,9 @@ class PromptService: target_word_count: 目标字数,默认3000字 memory_context: 记忆上下文(可选) """ + # 计算最大字数(目标字数+1000) + max_word_count = target_word_count + 1000 + # 格式化记忆上下文 memory_text = "" if memory_context: @@ -958,6 +965,7 @@ class PromptService: chapter_title=chapter_title, chapter_outline=chapter_outline, target_word_count=target_word_count, + max_word_count=max_word_count, memory_context=memory_text ) diff --git a/frontend/public/qq.jpg b/frontend/public/qq.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b94fcd7d0e5b7bfbed11f3782369f034553e0756 GIT binary patch literal 192997 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
  • 批量生成需要一定时间,可以切换到其他页面
  • +
  • 关闭页面后重新打开,会自动恢复任务进度
  • +
  • 可以随时点击"取消任务"按钮中止生成
  • + + } + type="warning" + showIcon + style={{ marginBottom: 16 }} + /> + +
    + +
    + + )} + ); } \ No newline at end of file diff --git a/frontend/src/pages/Login.tsx b/frontend/src/pages/Login.tsx index 1cd7055..c7bdfb9 100644 --- a/frontend/src/pages/Login.tsx +++ b/frontend/src/pages/Login.tsx @@ -3,6 +3,7 @@ import { Button, Card, Space, Typography, message, Spin, Form, Input, Tabs } fro import { UserOutlined, LockOutlined } from '@ant-design/icons'; import { authApi } from '../services/api'; import { useNavigate, useSearchParams } from 'react-router-dom'; +import AnnouncementModal from '../components/AnnouncementModal'; const { Title, Paragraph } = Typography; @@ -14,6 +15,7 @@ export default function Login() { const [localAuthEnabled, setLocalAuthEnabled] = useState(false); const [linuxdoEnabled, setLinuxdoEnabled] = useState(false); const [form] = Form.useForm(); + const [showAnnouncement, setShowAnnouncement] = useState(false); // 检查是否已登录和获取认证配置 useEffect(() => { @@ -47,8 +49,17 @@ export default function Login() { if (response.success) { message.success('登录成功!'); - const redirect = searchParams.get('redirect') || '/'; - navigate(redirect); + + // 检查今天是否已经显示过公告 + const doNotShowUntil = localStorage.getItem('announcement_do_not_show_until'); + const now = new Date().getTime(); + + if (!doNotShowUntil || now > parseInt(doNotShowUntil)) { + setShowAnnouncement(true); + } else { + const redirect = searchParams.get('redirect') || '/'; + navigate(redirect); + } } } catch (error) { console.error('本地登录失败:', error); @@ -185,8 +196,27 @@ export default function Login() { ); + const handleAnnouncementClose = () => { + setShowAnnouncement(false); + const redirect = searchParams.get('redirect') || '/'; + navigate(redirect); + }; + + const handleDoNotShowToday = () => { + // 设置到今天23:59:59不再显示 + const tomorrow = new Date(); + tomorrow.setHours(23, 59, 59, 999); + localStorage.setItem('announcement_do_not_show_until', tomorrow.getTime().toString()); + }; + return ( -
    + +
    + ); } \ No newline at end of file
  • {ffPdGQK_?ogFMdQL@tly*F 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

    @9*QuvSF5tYpgT3C+^}uK;8vNn0 z2&fxV>hG{}@KK!gD)7WhL={|BG}U3uluCq|t){1os=QA80@&F`0 zKsdvPP&zqG4m=T(ZSPBxc9XXIF%bGg!Q-JIk1x|MP2qGjcgKad2UCc9I-hHr;>Hot z`4*|6}K-srCKj@0L-=^wT6!02uKY{zF@iyqV&5jTzkbzE0`+i%vhfc^vD58 z&Tvk+lpu~$V{+5}K^yG*$v!!NMA4r9^7#x3W4i@nxuns?odB;;z0rw7PWr8#JLWTQ z5>-}+WRsv=pSv*IP%p2xoJ2E&nnSMAyANxVH~h5e6Gj=%R{+cjot@()q_c>uIA5!n zAv*S%(VpIU>d8|2Q_Or)A8Y;JbeN;c&gR&^Q2{AoA8;%xTJ{)8PD?RU&^yvV{4JaL!TsC52h)MXGTgV-Ef7 zi2v8YEp=I=UP6(m@GkKRF5QfQu9E}EH-lN*Ds@SE z^#-@D<8ROmHWdR>$gB-qXMt+|R>5foYqkF{H|7Y%?d$X2i@kUV$>^s!Mx^&bqRmII zeTZF6rM#@{Qk%`+iD@ogt+@NiHYVnQ;9N9vrA&P9mfp#mbPC|keni>BNxY^z*-yNV zeOoBg9ASRV`BPz}q0LHIno|UZFHi{Ji)qNay}WmBIKk(Wu)lbl!r%EcgDxTS8w}+V zm@l~N6}m?#oE|9ivTVJpwR*c(=p%<>1u38u_e(t&XmAdjR~SR`;u_ANS9FNr6D4+$H!wL28_@fniYa5Hx7Q+Jv_>c`YS!tUZ4P z*A?8O!l&UNSV3K!!Sbb+o0fCxlUk$Lxi}gFP=Le*#iHmmqJ=|zG&|YcLYU=%v#Ay- z`!oY*)yi<4W;*kdY5f$UG~OsM{#gJA6Bgqnqk){ zl~74Q)>%o*0Og53ko@%j&DQ&Wfb)YEn3$(-T{xB&-Q*D~v5IN2M2R|_JYhI96V{R* z&(x23W~X$%^QqP!~WnoYa{`1wun>j>bu z(q1!xvW;3xmBXPclz2gT0cm46x24s0>vsJ^BA|If08e=7rp8d|Z3EhoE5MyaBq{t7 z1Xf}jPIA8RCZFkVW2SrV)sM?m`>f?i&)J9!%M7RBUAG)UWD8653Qg+v@n`=edbk`K zk@$KgylXUH7y)n8Ya7JUw!ae4mTgubfVdaz__I)UAO(82DoF{ za*wrO1l9279}-{}LVk2LViYT%HR+XLSgR8pvTxLKOxiTefM~^b1X|%# z`5PB%KANhuHgLt23toN0ny7-TM+E;hc6Ha`TCJ!u1+L~HKq~p zq3SxDs+KBCPD3YX02UDOo}N_M-{t5!Ckt^ZRjL-do>o8_TRm08SyTnQB+sF`u$h+> z3GH-N$ww)NGen8QIhb&&Y67b<+&i<}=J7_$2+Z)Z8eoewRZWom&HkzKdqVgkr@peo ze{v&Pi(5P4%e>#gXP<(*D?4TjEzqm&EAa4Xt>6)%WcziyxQ53Ce4H7A#|q54*W#sq zbMdzoMUen1vv)<(L5bUqD)M#j&YKpVB;QE>#(N;|f9Fu8@sfV~k@1r)lUax)c^pGq z67}&t$dJVYOl|%WwTYvwVYRPpK`#ZH2S@fa3fzLo1XfNO^672lwMeL1oainOm36o9 z-9goL3LoQIRZVJTbbDRiR{GsHZiY2BD#*I2Ot!bv!Utgz{6hah9;^k(gYgcV@EgR= z>DnJwY!_X{44=xLto|eU_>x1+6jk9ID4fx)kCp4;`FRBEzYb~*Nao)8NpxzAKvXP1b6#{*sGcWk-^MNmqap4pb zGD7eNa3ORvo*8449|+@kd+IqXpe}S>Zt&`jMt-Zz!N$*m6D{uvEQ#EDx98SMlauA} z7H-A{?|)dQECaQ)4v@PD3XTsQyKkCCDW%zS>*XcKBKjM8n==ys#CG}M7Ss+hEL3jx z59H>PY5{Ug1oo{jdjJ1o(W2146i^fwPjLo-Mlc8|FaO?WIFD8n=o>Z;f zRKvHFm56W{6%A)oPYr~Xlpp6B9E;)kF6kXik|MyR_T^iZQayq9n^Oq;V&{gS4$&#f zjtsi;_)GPlv8J_AHp@|W_}K@=0EEZo=bJBq!GD81HIoi;Keyr=SRj%fx(tf3o!OaI zoP&hGR}gFwI=_=_kB$b)@>Rna;k7RH;s&&{k z+*45wy!NoTZ!GRC9{N;=u=>0?beTSa@UW&PqHkKzi`(c&xFXlRzxW8Mi<|jEM&}v^ z?Ae?hhhjK%h{hw_SL|uyCG~c>@xh44j&It>$5!>a0nGs<#F`^S1fILti_a)cbK+f2 zMN?!E$YnB6iVLOx3_$|G3@Gf%@G{P~uZ@cyrx+eRTg$epEf2ZsT;)XOVW-2%N!k@MpYcMsm-0QP%mIpC(hXm=I%X4%cGVO;VBdg>wv?rTb}Lc7R4H-+r^i=D;JPDTot; zq}t9tB9q$pvEEi-$r?g|N-~n{l-ozQFCyx~eEXVd3;X}w& z;GFg%U&>3lqQfbxCnhS_jYZ7u~XU~AYr zKLZ@aa_pzvH)B6EOQi?Lku|c}Lq7(ufpjb!p~V)0n1ReFIq8D8XT#ybWlL|;dfP^xHj$vma>OpQm+~*SE{3oJVRd9U?#fogE)9 z$w&zfyAHBy?}ROD>%w0L{^gUj6##q^J;;de(gjtjfvM}E+|(NeGX%qrbIs)i%I$f| ziH#ADVre17Ybkz0wIHM7 zm-aGB*RSBtn-b1aj;4W(9nr}TEsPDxg~hn6L!Pg@wXJqPt+PMRq#d^49oFpEj`E`} zvV7{Y59Qxl>K9xZMxn04Iuy7k-dQ$GoUr3zfCYweR-{BU3FZ$K z*hxNeNXC*4+%z`+$gT~{6d)ELjQ-~`vJ^w)oSITU`T%T3y^Gl)se6K)ak?tMdwRBY z#uf{i@1gbn6Hd274*p$|y3}>EG9hdkdLVX;&>>X%QQIwvhF8o_D&7wQfFF;!q6B*5 z^T`+90+vz8o=5qkBrre{2 zVK4KFMDl|siLI##Msy#RWv!dLZ%~QF9^K;{X>wae?Gly|pWap3zvNv{-2f8*G?g>= z(-(t)R|M1;#)sKUi4?!F$EOo)3!pE$Hrqi;fRG=9$mv)W_fK#)T{pi-7sn>7pPhmp z@R!1w-qI{N)7v-5Mc3~-S=R|~8-x*);-FN%_y70Kku)KKWE;leCypla?O444zB^=5&|n>1d>wu}EStfl)54yy(JFtw3OkQxVQLCQgc}lUibl>{q8VL{4 z2w^b(hvb#Hg&_NdbC{!T1Nj5lU>jY3Qu1^36cB@F_hYMe+CS>Lqn#s5C%xJuhG#7d zPRPI*Rb@TGj^DhBNEI@46%`{#S&ElM+l+Y3@KrU&erBaG^Au3MVkrDA{UUhGaAH{e zsIQe){H_rAncy+^X)lI4B^*XO?;uPYt)yy``taHLSIsNde530_OBN3=uj9yupjZpU zvSu~i)6d~-cgn9^=jo+6A-$zgbL3G@mm6VZec+#&Afu1qu*?iVy+$xNoIaX&_%Jce z)$`=^O}{qsE6Ht;+_-ZXw1O{EPB0$~tRs&ce*YsW(PV6lo&ETX5+jX3J_fjbY z0CBfKt{Az@WJ;*hL^DxkV9Tw&dSQ~>(3cuL&s`mZiJ_%<^US~34E@>9f{@l^jPVis zP@v3COdP0&PQ?!w%9C4@(JVpp?^#yimA+5mGXH5Fskvt8EBiC`?wyZvcVd5eFdR!9 zYFG?hGM+bG#OGXOerDJOU4y@&Ve~Tzc7COHJiv3@)YwBq+$2dbng+E$_rT7BDEd5A zJZ!6nE~y5B&Z!8X;o~%|8!u|hD}o*Ogjeo#v)rV3DcIUy4l+wy_l%hRjq5h}LlOwL zcQI<*B68QI?%oXB&@BSzJwv48eK7~-IEPYX3IYIOwjJgiR?-;Acf#r*!2sNXv=R$$ z6V}v^XSno?30Z$wapbt!pQ-&EFF4w5^C(+=JZnBJ?;3s)(5J6`{42-YR^Y@-qLB}F z>~c4sYI(@|uW!c18p;RzKg@%-D%427Q-XTM&$DJdsiYVBenG43`(ZZ{b2!=xzb-!0 z8LdSuLfNOj^XpWXW!j`XLcAwuIALZhVki`-NkdylTd_-k#1zC}zcK`I&+jxhL`$%9 zds6I`X&~|zpK&z>qO2qa7)Lu~l;_j@sfHZf?nbChS_8I~7k=uP9*lEr4dITr=8fK0 zdfNI7tnX_?*;t#pZ_`oEu|V7N3Er-5ctUzfO3WsI0+5P z75+~w;J@*J|MyRch7sL56AcoT128*?zdj`uFzwHG-+ZuxJ5b8!B^M~CXnRY3E}a6~yt;a_^m z4ekDbX;XW-ws*kJ=0jTqFZI)dY7)CLgkolN#_{s^shlXMvxl&c+CGDB!Kuz3YgA-^ z(MzoL@!#$q#8NPsiWc^d4DI_6DaXfj)ErK&u;t>3x&bdTO%RcD$0Tv&TEtAX3oU#to4WWS&g@H3U+~@Wlz*ni6%$Gg#j_jjI5Uyr zpS4!lJ)aLBY`n(xj7NhrY=5SzTgw7~4NhHct;eWqATN!+R^WZ`1P!;*7sY0)-=k%` z+pCb-Xn)!AHwZyu1U9uYr*g)L-Ecq?b|WsIqO_L6W^PD-NZE`Xkc!tZ>d74uJbJA` zL84c@E8^Fn+Rs_L6P>}Ry_65ig7l3a=kJvk2xaj6E(z#Yb{dJ>st3-QD$xTTIHZHf zI}cmJI;=iXHGy2+8|JhGR0D}V8`;Dmq-bbsCVh2ee~Qr_uho^oZc>B9D54kQch8iy zvd4YEs{`1^4$En8J#S^-nT0VE$9?{g1h`MS_g~sf>{^~%J?=652dXtGjd$3pd^aKO znrzmVvZR{fR@yl)W^r!4Q8*$8orbnGF4I6v4 z1NION3`V`D#W(zrX@S&XLzLO8-vB#N_q4EhPGaC!XjH~+PXqQ~pu+Ulyz~5b`-1t* zuJ`#Hut}1Q2{L)gx$t;n7qY^tm$QvzjXO2xK{-T&u~$jh{GUc#grG$HAAMnq~FWPSWNd`m4~B!oP!UoxkhoU!n|W}Y@zwjl1jhr4BC`&?DeU4=vBwB zYZ4CQ9-9vS!zbO(6Go7Z8x4r}DTST;Xgym&7LRnU4et8v)3#}niFtD7fvZP4wlReY|pZ?P$|WUH^TcZp|v z0#~a>;KhNKcc3f)gxYy82VzsF_U5IxF+E8Ok*o2U;F0grhc0>FC9TVWJk1RgO=9h! z-euj{slsyeI?YVP9qSj!yC8>dQYV-q{2(2T_&Btw_{nZrB;5efJS5AMV0c=l?*Yar zBw|%ic1zAQ3-%u>gcL3POF)Dz(LYHfM zL_D`H?Ac1cHL~YiQ~K?KKf?s((g@F5%po8A|=KZZj@B0{fPU$ z`bhqo#QBqv=Ef!P9%LCD$|$x~_r9z#w~MTk{_vewXjbiYAS3?w+THZ`w2AhDUC@A4 zD-4*JOTrqq3JsHp=p2U{)DUMv}A{+gXUL333CO<*O!6;6MsmY3R!-YB`qas zCNm$2h^Sxlf6tV9j_86(PWZt~HH&sW#Cm(;$-E5M0|Qz(HI9$uwv&8Bg0Gy+rF+RC za|8sE+$)YVcmEf6?;X@+-}U>Vh)5HWCMZOuDG^kPbRr-iAkvGps5I#yRZ4;)A|0vH zdoQ7P5_<0~(tB?SHI(E&m-qAd?6>ZB_L(ztX7(SMYrw%=?N`=X-}U*5EQwitIsyzx zU*$ST_Qacr+fszhd+Y4z5u(DzFvH^Z2ekwukm@F8v|uE8JFDvAti+ z3oad~`h)T6E?IpgJa4CCMb}iML7eCDJ3}#^xQk$HHPcvfc{bW{I}QM`wP72o{0SWL z*%OLo`WyDwSO%9r)%iQ%?7=#V)H~@2w}{tqEz%eSiYmkD>!{U5sz zx`!2a*n>XyudyeqTiuxx{Pv7HietCX_B`%w@yC?uwVE>x3~h%tQUYh5Vc5bg*h)iT z^*yT8*m;R`lL!**ewY5#7t^uWkHVzup1TA)e9u_)P!I`uw<`v6=<}krIRC`;i{D{E z<*-py-gTcANP3&-q^qk|vQH(-pK zHSdB?7+(M#HAYq&56y9|%A&csE!vXS4^L8H=h3@w zYU$hY(|B8AI-NEo6~0!`P_!FtcjJS@=EwWoONA6n1 zRX-7IeUEg#y?ibmT}9^O6D}M~m*Bpl?9syyliFtS{AAN< zOmGmd07T3;tfFDeLw177(#}=o6+vC>A@)R|(L*5iR(d?O0Bedzk%d-X8U~jYC%5r| z+Xznx!>mAY<;(DrZA^OZ^dp{l?vAl|qN+hGRKb7Xg9m3$7LbD{4!9+9;4yWFH0bDH z5y4=2)@1nYY*XnAGX7`smhPw;^qR+|KY{0SVG&@{h<^m6kZsJD9{ZdzH$Ctue0HU@ zMrO>Aj>utMPUH+-fL<|gc^t@k52ps4^oI|wW>0Xm`lzSf$giNaapaGYzliJ(j){-w z$R1A-Ep^r3qh5`rKNh~T8YRjdWwOU2DSv0Z3Y@;B?D(b(vl{A}yGff_kyxPosI;b0 z>oQ7EoFDsq!qc@18@Ybvqowp4IX9Xz8)IN}t(L?1V8aAXTod`kYet2ku_~``6J6K6 z-V{@KiR%2&363=;)Ts%B<-~4l_}w4He;(N@JW{&t(W9X4VX^e){g1zqn=pD4@{4(# z$hjsienBu`BbeFBT{Jm-d{sK@QIZRijCd;39SQ7(NQlCIea>=IV^|MjsIKGCJoBbA zLw*bSBsKCn&rm=a{wU=KFCDo=PL7i+Gyy+#5Jo_Es6m^rG_I z49LQV+e)kP3Bdgwraa-H?T#yj?FbGuaWYSA$r&?VV#JxkORt@xM_v1(Cp)w+cPwK=O~vq6zufPF*$qI4dg;vcoCCKHAhE9r z}|cimN))+wApBt-V`-7qp?7&V{z zN&q7WB1<>=JWi2zgFxbj$ZcFL-%!`gciOaJ%D43L&$o=89zu9iMxH8v`V3{$_k~kJ_);nFg=GEd&A8ZHI$0wZ#`L#tFF3$U(`j zW~3T4KLhqkeZ2e-Fs|znBDThqdxok7T#TTdas_zIPE=y>HU)*WUQ%ta1a#|Mg&ok% zdIx)QT=4X3`50qwCun~VlzbY11L&JV%x+O5@~4Q=^If{u9If1M5x6LH-W=v4l;(G1 ze9K{DVKS*((pD3abL1$V@5*twAJHLODk+AuB~$x*fP}V08P5jPEsUNG&_nC54=_-K z`gfB1Yen%f4_oSa$rFVdiU{t>p=N^PU`F-4$uoDJ%ia$zr`K02fkk%N#f<%#ew`8V z8zn5KGCs5pxz*M+0V0Qu)s|YK813k9f1J|qu$6Pap_{yBB%z-qjD|08VPS~8<>I=U zPv5-A*tJ<;xAoHV)wMv{bF;7^>Ex13a<6cxJrD=^1HsVW#G^}7o}9Qhxt`isZi`B2 zZB;0>0*TUWR5SUJ&TK%wJB-9r-VPe|@*4KVh#?;8ACls*?(s>62uB1?!|fX=$%9m6vZ32c z0=!a-*Q>7z*&P00s*3IOeWN0MZ58!c9Qy8h%wnQm{~Z1WBcI&QL(1of$bO6fMk{T@ zg2@TM^J)a<`e#2F9qT~k{s7*#e%AGWKA%5b1D6D&5+;3@pH;4##F^8i0k2*H`MJsh z>9$Xrh2AU1S>C{N74;~Yc$ro;;tO_XE-WG$V!FdOr;S6W$b3vqmtk)dQtrCVM@Z3G zFTRDy?czJrt>UhT8g*yoG!94vYh-OttTI<^k6`w+Nhzzz`z)BZ?R>_JTU#1v zjGyzFtQG%wyN_WbbfW0m3Vg!O9nXLO;qwpcJb;zceR_mDmWT3VtBUIEdj!ab`RKqJ zL48L&Up*8YYMaeK!KkIB8eeO^76p)Ml9N^c$ZP3&D#~MGXqw0c!aJL^=uE;bxew?(?gXGk(|o_i0rWsl7@UdCuWfszZPaQq`vu(>4N2$w_Ux4d zoy_0~aM_Aua5FnU(ZUG*P%6EN@F$!Vh9Ss#bk673#PnyTkJ8CrC$p!zjsfxZJV@}7 z@*Ac2xQ;cU9bydm!TfGM-QY`f9Lt2{i{-bege4Djn9lm%j!MRqC7eWXty)!YjHLC& zvAsP++Ug(xN&U3BgY0|MgPmH5X$c+exQJ74|MwzuVk}KgzbRo`{%cOIblBzya;x2$Vk1(xL|p!s_(EL-E&v-!gfmuwPF9pRqdF)G8oQYlqcflKvwBp5uv)KjuJp>Ubb&H(^C z(*Sc|Rvbar)zx*dX_hh21p>J-YT_Ig=6OzjACUz&pW#Hy z;v^R0Jzi)9O?~?Mc`VkSo#4FhW=(0i#360>a&FC7=2^?J0nXUita7b6+LfJ>$($tN zJi>?rdvMG@0;oh9JesW7Z|b+3#3&orD26Dgv{VTmvrv8>&8Pfb2pvIpV~!qHH$U^b zHH2GOe#y1(k}TxX*Km;V9yyGoJ*VF&{V?u67a~5fo2|xeVJV&V@D7=TN^v{5-3fZl zA{;jEu&(}sedKi=_s^-Y=VrneZLsjq-Xxy8T0YtS37I-ttiJ4@BoXJ}3%;@PQyzKW z9cv{@vYo44jMJ>2&H`|#;}CrOo+SAujnPE+3E@tiP4Tqw>7v~(1ZBXALkx$3yHS?P z_tDxo`o(l-=9-EMp(oKG7uj`r6gv!fTbR5+#@vxh<}8X@+uJB6EgmnY0#(fezD!zq}$%`mYo|gyjs(>;L z@Nwlz%GC4OzKdnDnsL7jM4*eVVm}FhEZ{Yww9)jC<<@BK?W*a`uk=L&!SD~%zlz!i zWNXp&;@&QNOE6V=aYmy~E}HHSY};C%{5uzG;L83KS-{d| zM|P*CIKXm%Xdo@%!KIc=p1T`L|IRd)v#lKQ0zy+f)Np3gf;G1Z_a7h9=_=^X8l`;nF{ zW<@Xx?Z}*d&DDaDGV+6g5GXa{;^WV@J8ZA!8Y#zHue)A%Aqcm*)8EQzdzTuR&P_WJ zw~#+Tp(mKT$LP3E*ql@X$J(r_hqtz|sHjRc<>YTbCIjbNe$7Gx4!^tVD>{B6r>>rx zJ7aZ(KGRurOAvg;@kTALLVj0Q+)&)+7CO7^0`wNR?U6g=Lqp;+xj5S+-ou`aZF4zF zW-{_M*6JxTrJ~yiKUD7WWVsur~CRK42@wMVka}}r&KlOV&k!W z#AOJ;Dk|40R1xe@4}HX42XG2wmo&Rd&k%8%G2L7HAI|J_@fEyt?iR>904tW^%`O=m zhQdf}$u3xu2fM4GKE|$ZjkU8oFYidD0F+@ZY6eHxUkU0Jmca-^$)#-Sn0HT#4lOdy zcL^ss&cKO(J^ZaCyo~&Y4@WXq)-686N^Faij&w1cqXG<^&xll(jHEDIje35qP}<3j zXEgkFZ%reqqXh;YDZ~8SgqmF>$uK)fKeAg(rlzulZ$0ve*j4soRfws#z4uyaIs`FL zN~i@1B`%FKgqHf8tl)SN7s0heDdhII5aZOn!$ePw0M@wMnCEQ_U~SS9#<6nDlghLl z(F0#fLFWSckc#A1L9Bc*TCO6-D?0MoGf^fLjnf+t@>3w?!%&Qqzk=V`*xw>R`PccZ z!L9GpCWl2)BUo`xU|@Hvj9&hIZU6jGr@&1?f#XKk#&(?~jGQY+_9k9wh%{$3h#ZTP zpTB>2^TXKE+x3=vk$|60WaIp@y;a$uB%d3)`8d!j3-Ids|UZnZ@Y)#QGH>+34s-s25<>kIg;-$}s=ucO$9gC0)z&Cql zGc35$;WJfLQPbQ(R{@C5Qx5w$_;Rq_o0?JjPZVrK=@=sNH8ACXVAA{Hsz*99)>jSh z&@ay{57YzVozNf#RsoE2NT{>p9lf!y(!>-(eSlK3c)*CL&%*|$wZT89Ki9^YFv2sL zkXqH{2@q8R&}|Tw>rtyRkH1r;AxO8sCU~&KB4mh@2dHG#a<5xi?->WuN6KZ&tKY0R zgAATkE$Or+3N3{C@@7UaT+bB%d}boQYsbv>!hTdh_#yv)og` zs{p$BQK?8`WbSECe6b8ct~9^3V=2#g^ITy)x~F7o9^=q7vJzP5Q4G9lePYdjKZ2|p5S4hHKv}9_fMfUqd)}tcT9BUJ`Q! zoPv*=a0BnWvO=$JFg|qVieo-qvd&vdGe-+^VGviwB*lRox?Y)w{s5g(kL?nrciytc zJoy64q|T%5H~wAh%W=EC{JBdH&mYJ~KZaF_6#pWTHrRJH{*YG70aeMvO~YWmE3K1TzTFEzA=?VR?-rk{60_`t0Hn15$5j{~wX@`2@rE)z0+ z#=?;g*F9)XX>~PKNjH}~O5jqu@-3Gd&q2x4fh9!UVWOAxdF_(4uE}|&2l{Q#XFRVUB zA3%_c$G&A0sspo)!>!@L?w)6=7_%QAV>Iggkl~!&Da2m~5F!vo+AJU5EdlF}UzJ`mt=0=`_+IKa>tDiCFt;h#!ih~stEA6f=*4wC`w{isMu3F79 zeXK1C^~nA)yErol;5476217p)y5P5e$EI#_J+5Sm z&!siN7M9oM*p_@krO+5ePzZ%{R)6awS^L#pT8wB@g5F;q;rL$Jx2{gnQxp zN{cXK_X5NzjS+!OB2mwlZlN0(nY$wQeAQfSS5VZr)pHr_3L-$OYPQXV7vRRb+TO+g zW@DgRl|hR-e!vUKxhdk4bMT&$;>FCEFHA#6dEQ1JF#62^HJ5JE%+iJ)l9)lluGV{A z7jrVvR)M*9mQA0G(aN@hJHsQ)=Lo@=nE5H8SGOlQ9&T`shKUI!aVM94{iHG1+n-26 z>e9ImG!ZZ5{GCh7ZlfKzpYdT>%%1+L!UZ_51gEehq1dq#O}I5?T1CK>MUWn*TvrSz z%dv2cd$me2^`?-M#W;yC_>{Tu9~%yjnC(Pt$kYNfgu_Q8Og7!pk}XN&FQP}kKv75^ zt^)*BS`lrO$iogN(rx8nJTlvYYAmD6!H(Nc!Pq*Vc$(QPJ5TRJCGG5-fxMN)<(Tj{ z`s67d=oJ-TE;Ht1ByN{USUzVtpO-5Y2rH#38M-PKasycWex|qZ& zp9-a%og@95+UUNw;<&DU(rR{e(-BX_Xr&|j;L9OJKknaLs>>nVnar~@5^%9dSVu@y zvnLc+k$%C6DI8CSJKU;&T3k`lIRjn_k>DRiuNj8!&|ukKm+R}p88@Fcrjyr2&U@VC zH*ozfu9okXce*F&CG91>QQIZ99Cw_*rje`Mo?tzvA5>$rBz6wDLrvQP=D^ikHJ)}+ z>PB2_9T6`GwRzDlqJ0Z147nF5r-*9GABlH@?&MQ1TkXRt#375p`pq#L9vPOj8z(P6 zmNw$<*C(*@xrzLKlLonrk7+YKL(eTeT}M&|*)hDqE>%J&*CFMs3?%QRfJZb?!w$06 z>2*i!P+&oN#o^s2ZIfTehk4PVABz^&UlO5{dcXs0;vxOpAK!#16kV8EJ$faPz-Dst zut(`$xte|)>E{cX#b{!MA-kg+@POHg8TgZ@Mr2o6=qnIzTu@9MP5y_fGkZ{*qxCu} z7Jw-eo#!7v#BF68;mkn9TZ|TVxszpH{#kFYbhak?Oq+)qpvR5lE=)q?{ae`ho~(D< z%eu410+!e>hYHwA%doIis&cCew(0B-hgZH>%`}^pwzN$23n>}9X|8CSug|rs1c`Dr z&5;{e>P0o*2J%nQZ$tT9cRsI+Myyl8bZ~wKHCWy{c)roIt^A4EPx=7La0Dpn(OM$8 zQ64i!1mMy1>%EzC;4B0CFa{>^dJYfq{Gg4G2X?~Mul}**{jXif<$rC$2me4Jy!nBV zMP$FB^iouP@LwgcKc%q$;Yh4s$N_fFNV!}~zP6R}ug%V%P0ybrbsF4c&VMUybKlK~ z@HRTe&$-0dyVN{;Deml`5cc-XtaA2@tfSq%0Joo_qDNPp1Wyo+sDNTmB}{=bIB&Bu zMc$G1lVmUs3-xIE6cBipsDo-bL+nFD7OhKiyM^t&@zg_tO*JoT}2^DJ}Tdn;p3KjW69W6Sox=n=2a&K@22$vT@-;mgAeUX;n) zo$Oq?8-Q^%$VxJOeXeZ%7m@t3N34;B4o|+@7Go{mOQn|?yaCM7@Y4FUH%IVmMMol^ z1QtJ$;zOaCo6FXaTH6~NP{Gd~Ak+eH-#(x`J1b8@tS|K-g z(|_Ex;sHY>mRpEf1H|IaH5RIxXJ{8f!gvI#FU1y{)xeBoc0IgEJU+Q-=|71Y58DK` zwKWT?B887A4YbR42&Rv}g2#^97NMIG(E{u+hF8n?}tENly=Lz+=YkS z0#V@*zCyh$&h&h>nPOtPaxIVZb1&X*tGXI(3OCjIa1lW3&py5%`Hu0S82hXD%iAGb zOFFF|V9Yqy{lAFp&zBzdPRp!t4q0Wet1TiM$ofFM0|bB(^WPE|;1q9ge(DuU!DfV~d;)<#D9xi9CCIMa zL8C~BjOqR6m2&Lr8BQ??br+HR-|Y``&_Nsdjy&+*GlQgpwb!ZnyZS(<(q1>pUAp#H4)t4Dz_}>6shG!YMs*wvdhlx?X$aou;h60+YrdyLGzad}6^zyAp zy5S3GrgFCBxSEl^Vg~&WDYj|Wj@b(D%r;mdw?MYagm95jN2{EAPz~TEI)*7L&(oUkKf>!vfSX!$3_oFceK}ZQ9(-7NwGKNH%np#Z1}Ad z7^T1w`?<#ej_>rJ0JTCM0HF4?!q{Ir2M}}hfr<-{>XT^EJ6bV2Pp9Q}#pb_t>?3l( zhmQiO6@}r}QOi^4svie#r`=ixtexFhF5g2GqlL!CWJRP-WofRqg616nZ+RYYv4q>e zG+sQw;>SaoK0Pvgaa=0A+}=8GUURDr7JCVLlQ1J1TtE;WvSD+!%6W9~fJKwRCWU}X zbac4N8kfzyp{G+-6g2fXp=MeX#5W{MkLjqVFPopEoObJJV>a^#oOeKsW!EAAnj7A- z9if7c-FsVtTUgMkChoEN_A05hy%Cn7CHqi;vvnqF0EuMwEUfdSfj`-BiT|9uB*qdTH}_EQ8=3H^=R-C)zt|eHa_cy zN`IFWuCV#*q_1HWYajr57zixLym4M?Oyynzk4keoZ=*a_5|p7cPP*He-ZfQtMN9)C&^iCXuCvmh(FDh(=m!V;#iTV`I|igXYhHGbgUWB4m)xBi~ zjDmMokf}hQ8Zj> z(&9?obk5fco@jlOLWDr9;og(Bf!Xk8t5kiSlmiB_sSi5Wl)DUlxjCw13%+kJ)3<*?T0fn=N9Jk~y``jXw@qe) zi*&jMA$`O-G1jIpU4*MTLmu@jHXfej3Dw#tAw>vNI zq<(p>qOID04J0kU2DL)}T0XSMdtKPDh40Yf$n2fFfwNM=8pS+I%>UJt^QJpf@8RH+ zji8`I$wd@D+yd$oh_PFwi}Ok~AGRIYd1l?gp&I@yV)L5dSpbQrET9J>AGNuyhw1yW zbN=!9h)_{;FX<-Lqt#%DN#4|KLxa3FIC`z)_jP{i{MYjQPhicTpZ|E|X#1LP&h7VL z36Ylo9=9s7pQ4`BaP)tj(*2X#{V$HpGZqhlZ731_pbo^4Z{immf@OI=H1{CU){9W&n-nSV0(#xc=WDs%l!2rAt zXMcKdK>C}>v5ciU(NT>sTtzHm&eI`b; zSfzZYd8YMpH!1{NMod@H^}R){O(wit^T(KU#VhgA4TbDwPxuo2*SX%vt1_I+zQk*q z?x~)yVbr<8f=livEpS>lOP4^^p~vsub-knDBfNc&Qh1)#V@Kai7cKaMnnc%x`IJ(H zVmJcHYAdM%-NH(us9Jx02kU%^NgB975$|s-eMrd9m1B{iq)|o;2k!YvGLBBft+kw4 z7tQESW-Z~C1fzjB?t+HR1oyE=vMT^<-Xh$JpOC$nJ7pbpi>D+!Q1F^tg*lIHu~4Xw zb~3nojSWeN{{(;oVTd6Lm9H?Wvb!A%4PtEP$D4D#I!Yl@O+p26q&z{Z&f;B0AcdYRuLdeCOs$=I1%)b+T491DrOdL}d5zjhgqTjKD>} zPjy3PC&4e(AF%1BsrkOR1(2!3$ceHq1)RCH$v$X%!+N!F#`{)gTKuEjD>m#wG;}6q zcZeR?$Qo|z>Cnd-OZQ6WFtGzYrVxA;#y3PLtu0ro6!=^yr2m zmjf6as3Ov1*T(-~AxP*hMHqEq29BXvNb7Ck3bI%3uj3y~N4&ni#+vG&r;!aHv$Nu1 za?ae%k)QI!*xJ_-S*A<#we<)j6yivEt}s59Z_&`Gnordm%U0L`R;Pxy*Y zI;5I?IWTkAF*MUlinI+us$#|)(fW+@rjSXOPiX2YiZ2J@NS3fz?1YbegjPDd2<4)Q zR&7<86w6-rat7*t*&{^)frZ4)8iK85xgk~<@;ron%~~?l{geU7+O{rQE^dle7*5Pc z`-+Q;JS+sxqevqKJSa)&X@JDZFGiw#mD_?)9AibWvvZFS@W5t&Y?h&w=vM}9)rPjw z?VG~sOlFeaT5{@NBh$8r_yXb_qI>Zyn3#^aD{ja(UY?^Io(#6fBt!c%)Tslc7{OpH z<8eI3^^3qMtPd84%nY5G(%a|X)K38gy9s>-9OzYUY>q2PmgVVhTwl6RrvVN{Jco$3 z0TPnCZuw2)>QIX^*`hbCnHe{}l;*G;J0>@x#|HTNynLr0q2ipXv+v(nV$6d%x!)e zGIj#@L48mmc581InIBIn|M?j?yM1cyHZ*}1MYJ|5UaNT-4#UnoUC$}u~%Fkpe zs4PzG_#T$E?0t;rc(z?SzxNCBEFI!$z%9_I-!PzE)mGTF4;GE;U2Gjr7ZVNX7=+Tm zEr3WFq#Rp#bnVDX{)()X)xl-2Dc}Kl(ku-y&s|7im3M1$CC>w+J6V2sJU9lr?{1)s z;q-3O%}P6bzZdAhmk9xjWl>jtsUw%2s#KfW~nn2GMX7vchMQ@Z@!rkXo5zsQ6 zsce*lH2zRjwy@R=NRuyA#;8JkOl(<1!ga)qgW%;e`RiclugB^hH_)t{RRMdT&Ed;k z$tR`M8wO6rWBFMdQm7Yp++lvL+n(v#0_UfPb?dx4CQl8d7lzO|_Zx^8QH?6J7i`Wk znxDBw5-U4AY?b6x-nz}7GatCOt3}=pii)+!DhjP9P{Giwtk~BPHl~XnQNw~cqio%q zp1GZbyK?pbw@qanDTD((FR{u;&`g}ZHMy4DYrK7V70HTIJAZ;hEJkIxf3;$b%|Ol6 z)^yGh);l12hXBLo`nZkLNsJPfq+(~d==Z!p=|${#h8|uhqwG?v5O(Ak2j0S#B+vE1 z)v;d-kPiT0fQs;VuH{`ed-Nn#dUP;oPjN;l8BIJ}z2^g`M-XV-YI*bqKUMCE*Ts8c zx!qwbvW~M)Fh(Ww%4UX-ff|HZC*b_rK`9}%E3tJG=>qhLq~~(&8J!%6MZQn(u7teu zWIUI1V{CW#)MzVcF%{!An%v$tk!V)|24*5KFw-z9pPeT3sN^J|YLlzs(O zh`uxM#HU%Fmhi1{fX^H=?^qxxuwVgvMc?8GyT$VAz;RRcYA1fF{5B$bP5tINs26Cw8ura zwgjzYOv2d!^cpSp{J3WL-q2$K5NW?1f|st12cw>QGbz>a%WL62Pc>Qhr~}W}_mj(P zeh;QwgI^813hm5G>jE~(^uXVzMPFt|y&FW&%#i>ZT57il#j25d4M%)Lerp<}T#+nf zDYW570>}W}-D$2tdmpb{-@z5 zp|wY$Ax0#F+j_fet(3Cooq&~J%#Vlad2 zW7AuZV#zX__rn&*dzB3}TAkl?gWiRvh@<;i`7x4Z^Hi3GV1wU}?kxZMEq9-353~z} zF(@zcDb0#uq1BITQdYEA1CrX?y%cxB`npLT{<`<&Z}mI{R>d$3WLt1C`GzjXctwu> zx>URN%`63nUEz*3BV|!7u%w=Y%_%bgvg)JL8G_P4-X}A-$-D-ZWyKmlXqCTGt#qa- zk^5tKBf5XT71N3B%w!?c*1mN&BrQtOG2_%yHhYz9&Uk%pBH}m+`i&-;+RfJ_S?b4$ zEFWb>nd?$*!gcVrK6NnR%4mV?G%IJxlOG9XQIH=*=+)$wy>GQAtveP@eOG&DRGM7G z*^S3S-$7-8))Q!s(MP}zl$3#NJ#9J2j+Xh zt~FWQe4?&OY7Z#Nhz&v71*rp_JF_iil6Gmy;y3kQVHJb#LbQyy{LSV$7u^BMYz!w#M*PybwkHJJpG;9%5GQ-8w)$rFawhfp zuSxkO=ub=wNAFPE&EJwaH9C_LE&vB2zp%E=zXW2iz(TDUwF#gvTGxLlQuO)Ymm8;W zafkM9L9$GOQbu?lM_m!F-DGu78GM1~rFrFN=7E~Z=4x8KF4}Ly*YJzaKI719p{;Y@ zClPHB#@Vg2G9U4sul}&*m!kL2$&W+7ql(vpJnv=oz%vY_7H_+0mbG1uN(OCbU567x zg_S9z_v_VDLtY4*zWYLTt5@!Rd3aHwZFKQ#b@!L1bZSNp|4FX(CrtbQ+}u-Lz2bk2 zR({7y^g}pM$7Dwf{=I~ZLake@$^Z?7-DfZ)s$Wf6h|#%*FUXvc37qA%gh^f^_+eS; zD&t;^RCqrbA1=N$kjHwo+2{a`u^-?l&u0gy{Mq*+=L1gczCkOD$`+ghdZ2QEPa8S= z{41ZW!GQCGI)4sjZnr+21LxBdNs6Zn`BfSuzu{;@e-S0mdL=88ILwma0Bd*F#?Z`7 zH30QnpKaoO_7=$cl-^pIt&*{{8 z?q&iR=23(4FMyCZ;VQS%OQJR&wK3;>s_SD#&J@))ch!2j7i8T?Tazcx6^4fORVbRB z#p>T0zRZx${$;QHNw;@^;tRAsx*-~Ib|fLrOH32!lF1@=cs}5SRS6OZCE2jcv0^NF zGnF%6_qODaxCRkS5FiYn#e}kYJ(iuzT92JntYlAc4;Q6=XQaPG&AOE&HfnV61{J<5 zt)Rt4?lX94vgYh!?Pr3$XG_wgbr`ua$61Ek3v{*yK$VjR$QBuje#ue5yt z(ILbeMitlrq7(3vT(}Y)uxb%`qNVO|`Wc#rkz%QTNcXa&-J2WWNlB2v++h7k9zUQe zNMG)eA5Al**motQ8ia#Ac*UTc(jo)w_Uk=?(D{3OLB){ete z7OIx;y7u%39XrAEVul(`Pu;#fh_c(}Am6{#BPZ1fktXq?F(NsChijjb$GOx#!`L~K z$+3|F{lY410mqI5W*GkCB<&;d?Xtx8sXYgWl6L@2#D4nW-L!wY{QWs13gGX63FFNy zFul3OtYAHr^3&|~1C1-9$U6Kt&o@@|(KQPbrkb_k4z4$!p0`-$8}HL^ ztOUfjYaG`>3AeGrCG|bjl7@c~%+O#Fm=vInp+1q{^xIg62wgNpaOc^(&4*wGm_m-bm|Qy8|~Q|Mnk z!$3sOZ;_ue9y4O23KR<6Y(HH#=IUtQ!1~9=OOLP5eK-pO3s#IOGXcb_A1&1OpAh|z{gSDT(FCChoce;2 zK9!>Wr{`Oxd=q#El!B*J;UvyZwqbP7RM*Dly@lb=C2#&y^cq(SlvO6(6JClHY>nq( zALERZJ5-?X`HLu3r+2M8rYd_5k*zX%Xzw{44pAt0WOLXf4E*^^o`vWB0IPyHg zEWO5;!+-qcj0`xp^X}o@(G;DDmMGbeHiHL8$n1f+N|lx^6&g>07(<$`qXOaVH$Qg; zVKfQs%($y4X_PhOww{~gg6wSM@WY0&@1O4t^p)j5lekKBVRbN$67Cyi;PXs|7-d)Z zp~`fCJbk@!#-E|NO`vv@5dVZ_lO8f1nAqi2RSw-XvBiUr_+J5*a)A^cK+I3^;fDO3 z4^QaGFKTi37JqrtV&$KY6)EU{C{iTQaby4YI30d7WFtK8NHn&aqq z6HGKb^7v%#yg9A>MiROJY=XuuQ!o*0r|v&qUvvb*n&H$1M}>~sSixy4ev9faBo1Mv zPe@%yDGAQUIC?B}n{mm5M@$VZF6hAB=HRZqO4V_@+nYSp(-EgLnWDq+GWE!1so@Au zWodh>59URfBwQ-N__fB1?MTvpk$BILxG3d&Jp*jKl|T?YqZme#;A=e1%@-ekKeLTD z=kA`At&;^m?7ZIk6!eX#;Gm7#n1KM^I15Qy8v&IfydPaKVM66QfEyjIMrWVl#1fY0!0vc8K0lz~TO`tgm0$4({ke zZafR>UoT?3*hhY#F#7Jz4sZI?+8*v-o3boR{h1V+KpY{rX@tQR()u^q|jd%ik_8GoP9vOYomPZA>%VLX9v-y@7OR zY4QRjAwmKkpP|2-6OE{(7Vqsms~%sQj!boYPPd7FFvNDSb-ajkwOD|B*LLpy+u~4qlOMjZgA*G$n ziFV=l0CGA8&A-b_zdw>m_^-%26K?q(dPy}o&&xW}TZ1oGcgGqO_e*#Wpy|&@pjQZu zvtng~7gqT=*#0}(&B4@)nMMm*2R6xh^z6LOgvlmrQw8w+uWy29i1?vNs4AfreaJOW znTql9b%xnF-N4>No$MsCE1#$C5+C)!e9?{Ys;ZD3=Q);*T9SnPC&Tl7O&W=%B_hy9 z`pkqJ4|=b?>`l>)kDy0D)d<`1r{m*49sj!>67`=o<^SM#>2~I`1b2-O|2uPu|M1^k z*0;(nSW`&(ks5VfYY^a3A=EJN9q{^;oPwr&us@R~3@F7(~zJbdkf$?u z+mkfA-AIMOf{%#*JMXZ@=|jQOK3Q`O{}Mi<<(uad4hywp=OcEzlCx;I)gFmO&SImX zWq6T&K25O7qUb$ zB*iU73J5m#;6U-z%Eqxt)JfE~@PlB_15I{olL_w6Qx5%bZj30{QY%k2M&hBsMUdrC zwvl)g{m@ZJ+4)DdiCPO7^M|6B_e`p*Df9Qd(}CLE)RNsDOCZ}K*yU{aex-;PvZ@Qbd z=*>Q#3YV3jG8=jh(s9!`UaPJcN%u1vB-xqdWnLV&dn9r+Db=y23w$TaMj6^FYF%jr z8o3(4aa(Uu!L#e>oGnquIMO1mfz0eyuEw!?&MCa8E+LRinr}^Q)bl{1cUYN?FjXL!PluON!?kT$L`GJS9awgtu?mo){g_-nhoG+G94;PP+EG(QpJxIvAyTAtB&DjS3Obb}D zsdBLd!lk=^W>WGK6wtst@EystfwgcwUNRa^13DtJ0p+cPUJEP)5X>*HQ>{JG#4OxU|G8|lw@raA_#n`EK7b= zT1BCM;djEL_?rRxj7~OY2Q6ormFe%qri}Ef!yl^7=dx^V!bxDW=rh|``l|2cBxAhB zs#%+pcI>E{E1+SdQd(A&dn8AnqPDSx#6TYG9&Dzzy)H|^e4+53lTetARc_{i!S!>u zTarinJ4f4RQPXH0K7o<$wwYhc;jfjYWVtKybYcV*48LfLCHul})yrT4b%bg;8fm&d z3znxleWaF#6nZ^11&Vc7%Ndl85!V#a&pl_g=C7$#sxBgV)5_BW3jJy`IlpU6j_wL!CA=} z(q!CLo*q6ey+r6IYP#53VFs6N{q&~so4);cP4Gyk1;A&W>kS^}?1(F;X4MH8Th2%c zg)PG?!X_jybh;w7NAoq)PIJ3^bGkY-y^OKM$N2H18D1q7st^7tU3ahGEG*tAQ1#>R_4R0g*$p3%Wt@?lS=>N^_Em^&H^t(3yn&n~n z|Fd5Vu$~nuv?jmOv@V9!+*>D~MK7*SxTYy{^{&z5OhdUpT@059Bzt1B$B9OJz-NWbtI?fHEp{|NRnSR27xKr3AcwcjbSE zS}wbb;(xyS|9%m`G9{!wqx)ag^1oj+e!GksI~oY1DPc4_45u<-N%oHLHQhgCF0gFr zdo49Bi9z;k@butb_Y>UnPlQUolY6-7dEbE&5r*HVHy8boQFx)nVC?C~EW)q_Z6zFf z!;ui*q$eo&<&vZZA*79^Oe2a7+@sLIVCW4wB8KQz9;{+Sr&}|({L)~Y65ItmvJ2<2>^rlzf}ML literal 0 HcmV?d00001 diff --git a/frontend/src/components/AnnouncementModal.tsx b/frontend/src/components/AnnouncementModal.tsx new file mode 100644 index 0000000..d5b8583 --- /dev/null +++ b/frontend/src/components/AnnouncementModal.tsx @@ -0,0 +1,121 @@ +import { Modal, Button, Space } from 'antd'; +import { useEffect, useState } from 'react'; + +interface AnnouncementModalProps { + visible: boolean; + onClose: () => void; + onDoNotShowToday: () => void; +} + +export default function AnnouncementModal({ visible, onClose, onDoNotShowToday }: AnnouncementModalProps) { + const [imageError, setImageError] = useState(false); + + useEffect(() => { + if (visible) { + setImageError(false); + } + }, [visible]); + + const handleDoNotShowToday = () => { + onDoNotShowToday(); + onClose(); + }; + + return ( + + + + + } + width={600} + centered + styles={{ + body: { + padding: '24px', + }, + }} + > +

    +
    +

    👋 欢迎加入我们的交流群!

    +

    在这里你可以:

    +
      +
    • 💬 与其他创作者交流心得
    • +
    • 💡 获取最新功能更新和使用技巧
    • +
    • 🐛 反馈问题和建议
    • +
    • 📚 分享创作经验和灵感
    • +
    +

    + 扫描下方二维码加入QQ交流群: +

    +
    + + {!imageError ? ( +
    + QQ交流群二维码 setImageError(true)} + /> +
    + ) : ( +
    +

    二维码加载失败

    +

    + 请确保 qq.jpg 文件位于 frontend/public/ 目录下 +

    +
    + )} + +
    + 💡 提示:点击"今天内不再提示"可在今天内不再显示此公告 +
    +
    + + ); +} \ No newline at end of file diff --git a/frontend/src/pages/AuthCallback.tsx b/frontend/src/pages/AuthCallback.tsx index 112eee7..fb3c716 100644 --- a/frontend/src/pages/AuthCallback.tsx +++ b/frontend/src/pages/AuthCallback.tsx @@ -2,11 +2,13 @@ import { useEffect, useState } from 'react'; import { useNavigate } from 'react-router-dom'; import { Spin, Result, Button } from 'antd'; import { authApi } from '../services/api'; +import AnnouncementModal from '../components/AnnouncementModal'; export default function AuthCallback() { const navigate = useNavigate(); const [status, setStatus] = useState<'loading' | 'success' | 'error'>('loading'); const [errorMessage, setErrorMessage] = useState(''); + const [showAnnouncement, setShowAnnouncement] = useState(false); useEffect(() => { const handleCallback = async () => { @@ -21,10 +23,21 @@ export default function AuthCallback() { const redirect = sessionStorage.getItem('login_redirect') || '/'; sessionStorage.removeItem('login_redirect'); - // 延迟一下再跳转,让用户看到成功提示 - setTimeout(() => { - navigate(redirect); - }, 1000); + // 检查今天是否已经显示过公告 + const doNotShowUntil = localStorage.getItem('announcement_do_not_show_until'); + const now = new Date().getTime(); + + if (!doNotShowUntil || now > parseInt(doNotShowUntil)) { + // 延迟一下再显示公告,让用户看到成功提示 + setTimeout(() => { + setShowAnnouncement(true); + }, 1000); + } else { + // 延迟一下再跳转,让用户看到成功提示 + setTimeout(() => { + navigate(redirect); + }, 1000); + } } catch (error) { console.error('登录失败:', error); setStatus('error'); @@ -78,20 +91,41 @@ export default function AuthCallback() { ); } + const handleAnnouncementClose = () => { + setShowAnnouncement(false); + const redirect = sessionStorage.getItem('login_redirect') || '/'; + sessionStorage.removeItem('login_redirect'); + navigate(redirect); + }; + + const handleDoNotShowToday = () => { + // 设置到今天23:59:59不再显示 + const tomorrow = new Date(); + tomorrow.setHours(23, 59, 59, 999); + localStorage.setItem('announcement_do_not_show_until', tomorrow.getTime().toString()); + }; + return ( -
    - + -
    +
    + +
    + ); } \ No newline at end of file diff --git a/frontend/src/pages/Chapters.tsx b/frontend/src/pages/Chapters.tsx index 08b5707..e427630 100644 --- a/frontend/src/pages/Chapters.tsx +++ b/frontend/src/pages/Chapters.tsx @@ -1,6 +1,6 @@ import { useState, useEffect, useRef } from 'react'; -import { List, Button, Modal, Form, Input, Select, message, Empty, Space, Badge, Tag, Card, Tooltip, InputNumber } from 'antd'; -import { EditOutlined, FileTextOutlined, ThunderboltOutlined, LockOutlined, DownloadOutlined, SettingOutlined, FundOutlined, SyncOutlined, CheckCircleOutlined, CloseCircleOutlined } from '@ant-design/icons'; +import { List, Button, Modal, Form, Input, Select, message, Empty, Space, Badge, Tag, Card, Tooltip, InputNumber, Progress, Alert, Radio } from 'antd'; +import { EditOutlined, FileTextOutlined, ThunderboltOutlined, LockOutlined, DownloadOutlined, SettingOutlined, FundOutlined, SyncOutlined, CheckCircleOutlined, CloseCircleOutlined, RocketOutlined, StopOutlined } from '@ant-design/icons'; import { useStore } from '../store'; import { useChapterSync } from '../store/hooks'; import { projectApi, writingStyleApi } from '../services/api'; @@ -29,6 +29,19 @@ export default function Chapters() { // 分析任务状态管理 const [analysisTasksMap, setAnalysisTasksMap] = useState>({}); const pollingIntervalsRef = useRef>({}); + + // 批量生成相关状态 + const [batchGenerateVisible, setBatchGenerateVisible] = useState(false); + const [batchGenerating, setBatchGenerating] = useState(false); + const [batchTaskId, setBatchTaskId] = useState(null); + const [batchProgress, setBatchProgress] = useState<{ + status: string; + total: number; + completed: number; + current_chapter_number: number | null; + estimated_time_minutes?: number; + } | null>(null); + const batchPollingIntervalRef = useRef(null); useEffect(() => { const handleResize = () => { @@ -50,6 +63,7 @@ export default function Chapters() { refreshChapters(); loadWritingStyles(); loadAnalysisTasks(); + checkAndRestoreBatchTask(); } // eslint-disable-next-line react-hooks/exhaustive-deps }, [currentProject?.id]); @@ -60,6 +74,9 @@ export default function Chapters() { Object.values(pollingIntervalsRef.current).forEach(interval => { clearInterval(interval); }); + if (batchPollingIntervalRef.current) { + clearInterval(batchPollingIntervalRef.current); + } }; }, []); @@ -157,6 +174,40 @@ export default function Chapters() { } }; + // 检查并恢复批量生成任务 + const checkAndRestoreBatchTask = async () => { + if (!currentProject?.id) return; + + try { + const response = await fetch(`/api/chapters/project/${currentProject.id}/batch-generate/active`); + if (!response.ok) return; + + const data = await response.json(); + + if (data.has_active_task && data.task) { + const task = data.task; + + // 恢复任务状态 + setBatchTaskId(task.batch_id); + setBatchProgress({ + status: task.status, + total: task.total, + completed: task.completed, + current_chapter_number: task.current_chapter_number, + }); + setBatchGenerating(true); + setBatchGenerateVisible(true); + + // 启动轮询 + startBatchPolling(task.batch_id); + + message.info('检测到未完成的批量生成任务,已自动恢复'); + } + } catch (error) { + console.error('检查批量生成任务失败:', error); + } + }; + if (!currentProject) return null; const canGenerateChapter = (chapter: Chapter): boolean => { @@ -436,6 +487,168 @@ export default function Chapters() { setAnalysisVisible(true); }; + // 批量生成函数 + const handleBatchGenerate = async (values: { + startChapterNumber: number; + count: number; + enableAnalysis: boolean; + styleId?: number; + targetWordCount?: number; + }) => { + if (!currentProject?.id) return; + + // 使用批量生成对话框中选择的风格和字数,如果没有选择则使用默认值 + const styleId = values.styleId || selectedStyleId; + const wordCount = values.targetWordCount || targetWordCount; + + if (!styleId) { + message.error('请选择写作风格'); + return; + } + + try { + setBatchGenerating(true); + + const response = await fetch(`/api/chapters/project/${currentProject.id}/batch-generate`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ + start_chapter_number: values.startChapterNumber, + count: values.count, + enable_analysis: values.enableAnalysis, + style_id: styleId, + target_word_count: wordCount, + }), + }); + + if (!response.ok) { + const error = await response.json(); + throw new Error(error.detail || '创建批量生成任务失败'); + } + + const result = await response.json(); + setBatchTaskId(result.batch_id); + setBatchProgress({ + status: 'running', + total: result.chapters_to_generate.length, + completed: 0, + current_chapter_number: values.startChapterNumber, + estimated_time_minutes: result.estimated_time_minutes, + }); + + message.success(`批量生成任务已创建,预计需要 ${result.estimated_time_minutes} 分钟`); + + // 开始轮询任务状态 + startBatchPolling(result.batch_id); + + } catch (error: any) { + message.error('创建批量生成任务失败:' + (error.message || '未知错误')); + setBatchGenerating(false); + setBatchGenerateVisible(false); + } + }; + + // 轮询批量生成任务状态 + const startBatchPolling = (taskId: string) => { + if (batchPollingIntervalRef.current) { + clearInterval(batchPollingIntervalRef.current); + } + + const poll = async () => { + try { + const response = await fetch(`/api/chapters/batch-generate/${taskId}/status`); + if (!response.ok) return; + + const status = await response.json(); + setBatchProgress({ + status: status.status, + total: status.total, + completed: status.completed, + current_chapter_number: status.current_chapter_number, + }); + + // 任务完成或失败,停止轮询 + if (status.status === 'completed' || status.status === 'failed' || status.status === 'cancelled') { + if (batchPollingIntervalRef.current) { + clearInterval(batchPollingIntervalRef.current); + batchPollingIntervalRef.current = null; + } + + setBatchGenerating(false); + + if (status.status === 'completed') { + message.success(`批量生成完成!成功生成 ${status.completed} 章`); + // 刷新章节列表 + refreshChapters(); + loadAnalysisTasks(); + } else if (status.status === 'failed') { + message.error(`批量生成失败:${status.error_message || '未知错误'}`); + } else if (status.status === 'cancelled') { + message.warning('批量生成已取消'); + } + + // 延迟关闭对话框,让用户看到最终状态 + setTimeout(() => { + setBatchGenerateVisible(false); + setBatchTaskId(null); + setBatchProgress(null); + }, 2000); + } + } catch (error) { + console.error('轮询批量生成状态失败:', error); + } + }; + + // 立即执行一次 + poll(); + + // 每2秒轮询一次 + batchPollingIntervalRef.current = window.setInterval(poll, 2000); + }; + + // 取消批量生成 + const handleCancelBatchGenerate = async () => { + if (!batchTaskId) return; + + try { + const response = await fetch(`/api/chapters/batch-generate/${batchTaskId}/cancel`, { + method: 'POST', + }); + + if (!response.ok) { + throw new Error('取消失败'); + } + + message.success('批量生成已取消'); + } catch (error: any) { + message.error('取消失败:' + (error.message || '未知错误')); + } + }; + + // 打开批量生成对话框 + const handleOpenBatchGenerate = () => { + // 找到第一个未生成的章节 + const firstIncompleteChapter = sortedChapters.find( + ch => !ch.content || ch.content.trim() === '' + ); + + if (!firstIncompleteChapter) { + message.info('所有章节都已生成内容'); + return; + } + + // 检查该章节是否可以生成 + if (!canGenerateChapter(firstIncompleteChapter)) { + const reason = getGenerateDisabledReason(firstIncompleteChapter); + message.warning(reason); + return; + } + + setBatchGenerateVisible(true); + }; + // 渲染分析状态标签 const renderAnalysisStatus = (chapterId: string) => { const task = analysisTasksMap[chapterId]; @@ -496,6 +709,17 @@ export default function Chapters() { + + + + + + ) : ( +
    +
    +
    + 生成进度: + + + {batchProgress?.completed || 0} / {batchProgress?.total || 0} + + 章 + +
    + +
    + + {batchProgress?.current_chapter_number && ( + } + style={{ marginBottom: 16 }} + /> + )} + + {batchProgress?.estimated_time_minutes && batchProgress.completed === 0 && ( +
    + ⏱️ 预计耗时:约 {batchProgress.estimated_time_minutes} 分钟 +
    + )} + + +