package com.yaoai.pipeline.service;

import com.yaoai.domain.entity.Episode;
import com.yaoai.domain.entity.Outline;

import java.util.List;

public interface OutlinePipelineService {

    /**
     * 根据剧本内容生成大纲（调用 LLM）
     */
    Outline generateOutline(Long projectId, Long tenantId, String scriptContent);

    /**
     * 根据大纲生成分集列表（调用 LLM）
     */
    List<Episode> generateEpisodes(Long outlineId, Long projectId, Long tenantId);

    Outline getOutline(Long projectId, Long tenantId);

    /**
     * 手动编辑大纲基础信息（title/genre/synopsis/episodeCount，非 null 字段才更新）。
     */
    Outline updateOutline(Long projectId, Long tenantId, Outline req);

    List<Episode> getEpisodes(Long projectId, Long tenantId);

    /**
     * 手动新增一集（不调 LLM）。若 req.episodeNumber 为空，自动取当前最大 +1。
     */
    Episode createEpisode(Long projectId, Long tenantId, Episode req);

    /**
     * 手动编辑一集（episodeNumber/title/summary/script，非 null 字段才更新）。
     */
    Episode updateEpisode(Long projectId, Long tenantId, Long episodeId, Episode req);
}
