import type { AssetTemplate, CharacterSpec, PackKind } from './types';

export const FILENAME_SCHEMA = '{sessionId}_{characterSlug}_{pack}_{view}_{version}.{ext}';
export const TEMPLATE_FREEZE_VERSION = 'toy-pack-templates-v01';

export const PACK_LABELS: Record<PackKind, string> = {
  patent: '专利包',
  production: '生产打样包',
  marketing: '宣发包',
};

export const PACK_ORDER: PackKind[] = ['patent', 'production', 'marketing'];

export const VIDEO_TEMPLATES = [
  {
    id: 'video_turntable',
    title: '360 度旋转展示',
    description: '用于电商和内部评审，展示整体体积、正背侧轮廓。',
    duration: 6,
    ratio: '16:9',
    promptTemplate: '生成 360 度旋转展示视频：{character}. 白底或浅灰棚拍，镜头稳定，玩具缓慢旋转，展示正面、侧面、背面、顶部细节，真实毛绒质感。',
  },
  {
    id: 'video_unboxing',
    title: '开箱短片',
    description: '用于新品宣发，展示包装到玩具出现的过程。',
    duration: 8,
    ratio: '9:16',
    promptTemplate: '生成玩具开箱短片：{character}. 竖版社媒风格，从礼盒打开到玩具出现，温暖光线，突出礼物感和治愈感。',
  },
  {
    id: 'video_touch_detail',
    title: '触感细节',
    description: '展示揉捏、毛绒、刺绣和配件细节。',
    duration: 6,
    ratio: '9:16',
    promptTemplate: '生成玩具触感细节短片：{character}. 近景镜头，展示毛绒柔软、刺绣五官、配件细节和可抱触感，节奏轻柔。',
  },
  {
    id: 'video_story_intro',
    title: '角色故事介绍',
    description: '用于 IP 设定和社媒发布。',
    duration: 8,
    ratio: '16:9',
    promptTemplate: '生成玩具角色故事介绍视频：{character}. 轻剧情镜头，展示角色登场、表情、配件和性格气质，适合新品发布。',
  },
] as const;

export const CHARACTER_SPEC_FIELDS: Array<{ key: keyof CharacterSpec; label: string; hint: string }> = [
  { key: 'name', label: '名称', hint: '玩具/IP 名称' },
  { key: 'oneLiner', label: '一句话定位', hint: '面向谁、解决什么情绪或场景' },
  { key: 'targetUser', label: '目标用户', hint: '儿童、潮玩、礼品、品牌客户等' },
  { key: 'speciesShape', label: '物种/形态', hint: '动物、人形、怪兽、机甲、食物拟人等' },
  { key: 'bodyRatio', label: '身体比例', hint: '头身比、胖瘦、坐姿/站姿' },
  { key: 'faceFeatures', label: '五官表情', hint: '眼睛、嘴巴、腮红、表情、眉毛' },
  { key: 'colorPalette', label: '配色', hint: '主色、辅色、强调色、禁用色' },
  { key: 'materials', label: '材料', hint: '毛绒、刺绣、印花、塑料件、织带、金属件' },
  { key: 'accessories', label: '配件', hint: '衣服、帽子、背包、吊牌、电子件等' },
  { key: 'signatureElements', label: '识别元素', hint: '最能形成识别度的 3-5 个元素' },
  { key: 'manufacturingNotes', label: '生产提醒', hint: '避免过细尖角、过多小件等' },
  { key: 'patentFocus', label: '专利重点', hint: '希望保护的外观特征' },
  { key: 'marketingAngle', label: '营销角度', hint: '陪伴、治愈、收藏、科技感、礼物等' },
  { key: 'negativePrompt', label: '禁忌项', hint: '不要出现的元素' },
  { key: 'sourceImageId', label: '源图 ID', hint: '选中方案来源' },
  { key: 'sourceImageUrl', label: '源图链接', hint: '选中方案来源' },
  { key: 'lockedAt', label: '锁定时间', hint: '角色设定生成时间' },
];

const patentChecklist = [
  '白底或浅灰底，产品居中',
  '无营销文案、场景道具、水印和价格信息',
  '五官、配色、配件位置与源图保持一致',
  '视角和比例清楚，外观重点可见',
];

const productionChecklist = [
  '有清晰标注线和中文说明',
  '尺寸单位默认 cm，小部件可用 mm',
  '材料、工艺、颜色或结构信息足以支持工厂沟通',
  '不混入营销海报和场景背景',
];

const marketingChecklist = [
  '角色与锁定设定一致',
  '画面明确服务一个渠道或卖点',
  '文案不遮挡产品关键外观',
  '镜头、色温、背景质感与同包素材统一',
];

export const PATENT_TEMPLATES: AssetTemplate[] = [
  {
    id: 'patent_front',
    kind: 'patent',
    view: 'front',
    title: '主视图',
    description: '正面外观，是外观保护的核心视角。',
    required: true,
    aspectRatio: '1:1',
    filenamePart: 'front',
    promptTemplate: '生成外观设计专利主视图：{character}. 正面正交视角，白底，产品居中，比例统一，无文字无水印无场景道具，清楚展示五官、身体比例、配色和配件。',
    checklist: patentChecklist,
  },
  {
    id: 'patent_back',
    kind: 'patent',
    view: 'back',
    title: '后视图',
    description: '展示背部、后脑、尾巴、标签和后侧配件。',
    required: true,
    aspectRatio: '1:1',
    filenamePart: 'back',
    promptTemplate: '生成外观设计专利后视图：{character}. 背面正交视角，白底，产品居中，比例与主视图一致，无文字无水印，清楚展示背部结构、尾巴、标签位和后侧配件。',
    checklist: patentChecklist,
  },
  {
    id: 'patent_left',
    kind: 'patent',
    view: 'left',
    title: '左视图',
    description: '展示侧面厚度、鼻子凸起、耳朵和四肢外凸关系。',
    required: true,
    aspectRatio: '1:1',
    filenamePart: 'left',
    promptTemplate: '生成外观设计专利左视图：{character}. 左侧正交视角，白底，比例统一，无文字无水印，突出厚度、耳朵角度、鼻子凸起、手脚位置。',
    checklist: patentChecklist,
  },
  {
    id: 'patent_right',
    kind: 'patent',
    view: 'right',
    title: '右视图',
    description: '确认侧面对称性或非对称外观。',
    required: true,
    aspectRatio: '1:1',
    filenamePart: 'right',
    promptTemplate: '生成外观设计专利右视图：{character}. 右侧正交视角，白底，比例统一，无文字无水印，确认侧面轮廓、配件和四肢关系。',
    checklist: patentChecklist,
  },
  {
    id: 'patent_top',
    kind: 'patent',
    view: 'top',
    title: '俯视图',
    description: '展示头顶、耳朵、角、帽子或顶部装饰。',
    required: true,
    aspectRatio: '1:1',
    filenamePart: 'top',
    promptTemplate: '生成外观设计专利俯视图：{character}. 从正上方观察，白底，产品居中，无文字无水印，展示头顶、耳朵、角、发饰、帽子和顶部轮廓。',
    checklist: patentChecklist,
  },
  {
    id: 'patent_bottom',
    kind: 'patent',
    view: 'bottom',
    title: '仰视图',
    description: '展示脚底、底部标签、底盘和坐姿稳定结构。',
    required: true,
    aspectRatio: '1:1',
    filenamePart: 'bottom',
    promptTemplate: '生成外观设计专利仰视图：{character}. 从正下方观察，白底，产品居中，无文字无水印，展示脚底、底部标签、底盘形态和底部轮廓。',
    checklist: patentChecklist,
  },
  {
    id: 'patent_perspective_front',
    kind: 'patent',
    view: 'perspective_front',
    title: '前侧立体图',
    description: '45 度前侧展示整体体积和外观印象。',
    required: true,
    aspectRatio: '1:1',
    filenamePart: 'perspective-front',
    promptTemplate: '生成外观设计专利前 45 度立体图：{character}. 白底，产品居中，无文字无水印，展示整体体积、正面五官、身体厚度和主要配件。',
    checklist: patentChecklist,
  },
  {
    id: 'patent_perspective_back',
    kind: 'patent',
    view: 'perspective_back',
    title: '后侧立体图',
    description: '45 度后侧补充背部和体积信息。',
    required: false,
    aspectRatio: '1:1',
    filenamePart: 'perspective-back',
    promptTemplate: '生成外观设计专利后 45 度立体图：{character}. 白底，产品居中，无文字无水印，展示背面轮廓、尾巴、后侧配件和整体厚度。',
    checklist: patentChecklist,
  },
  {
    id: 'patent_detail_face',
    kind: 'patent',
    view: 'detail_face',
    title: '脸部局部放大',
    description: '放大眼睛、嘴巴、腮红和表情细节。',
    required: false,
    aspectRatio: '1:1',
    filenamePart: 'detail-face',
    promptTemplate: '生成外观设计专利脸部局部放大图：{character}. 白底，无文字无水印，只放大脸部区域，清楚展示眼睛、嘴巴、腮红、表情和刺绣/印花边界。',
    checklist: patentChecklist,
  },
  {
    id: 'patent_detail_accessory',
    kind: 'patent',
    view: 'detail_accessory',
    title: '配件局部放大',
    description: '放大服装、尾巴、背包或机械件等识别部件。',
    required: false,
    aspectRatio: '1:1',
    filenamePart: 'detail-accessory',
    promptTemplate: '生成外观设计专利配件局部放大图：{character}. 白底，无文字无水印，放大最具识别度的配件、服装、尾巴、背包或机械部件。',
    checklist: patentChecklist,
  },
];

export const PRODUCTION_TEMPLATES: AssetTemplate[] = [
  {
    id: 'prod_front_spec',
    kind: 'production',
    view: 'front_spec',
    title: '正面打样图',
    description: '标注总高、头宽、身体宽和手脚位置。',
    required: true,
    aspectRatio: '1:1',
    filenamePart: 'front-spec',
    promptTemplate: '生成毛绒玩具生产正面打样图：{character}. 正面正交视角，白底，带清晰尺寸标注线和中文标注：总高、头宽、身体宽、手长、腿长、关键配件位置。',
    checklist: productionChecklist,
  },
  {
    id: 'prod_back_spec',
    kind: 'production',
    view: 'back_spec',
    title: '背面打样图',
    description: '标注背部结构、尾巴、标签位和缝线。',
    required: true,
    aspectRatio: '1:1',
    filenamePart: 'back-spec',
    promptTemplate: '生成毛绒玩具生产背面打样图：{character}. 背面正交视角，白底，带中文标注：后脑、背部拼接、尾巴、标签位、缝线和后侧配件。',
    checklist: productionChecklist,
  },
  {
    id: 'prod_left_spec',
    kind: 'production',
    view: 'left_spec',
    title: '左侧打样图',
    description: '标注厚度、鼻子凸起、耳朵角度。',
    required: true,
    aspectRatio: '1:1',
    filenamePart: 'left-spec',
    promptTemplate: '生成毛绒玩具生产左侧打样图：{character}. 左侧正交视角，白底，带中文尺寸标注：头部厚度、身体厚度、鼻子凸起、耳朵角度、四肢侧面位置。',
    checklist: productionChecklist,
  },
  {
    id: 'prod_right_spec',
    kind: 'production',
    view: 'right_spec',
    title: '右侧打样图',
    description: '确认侧面对称性或非对称细节。',
    required: true,
    aspectRatio: '1:1',
    filenamePart: 'right-spec',
    promptTemplate: '生成毛绒玩具生产右侧打样图：{character}. 右侧正交视角，白底，带中文尺寸标注，确认侧面厚度、配件位置和非对称细节。',
    checklist: productionChecklist,
  },
  {
    id: 'prod_top_spec',
    kind: 'production',
    view: 'top_spec',
    title: '俯视打样图',
    description: '标注头顶结构、顶部配件和俯视轮廓。',
    required: true,
    aspectRatio: '1:1',
    filenamePart: 'top-spec',
    promptTemplate: '生成毛绒玩具生产俯视打样图：{character}. 从正上方观察，白底，带中文尺寸标注：头顶结构、耳朵/角/帽子位置、顶部配件、头部宽深比例。',
    checklist: productionChecklist,
  },
  {
    id: 'prod_bottom_spec',
    kind: 'production',
    view: 'bottom_spec',
    title: '仰视打样图',
    description: '标注脚底、防滑布、底部标签和底部结构。',
    required: true,
    aspectRatio: '1:1',
    filenamePart: 'bottom-spec',
    promptTemplate: '生成毛绒玩具生产仰视打样图：{character}. 从正下方观察，白底，带中文标注：脚底、防滑布、底部标签、底盘结构、坐姿稳定接触面。',
    checklist: productionChecklist,
  },
  {
    id: 'prod_dimension_overall',
    kind: 'production',
    view: 'dimension_overall',
    title: '整体尺寸图',
    description: '标注总高、坐高、臂展和头身比。',
    required: true,
    aspectRatio: '1:1',
    filenamePart: 'dimension-overall',
    promptTemplate: '生成毛绒玩具整体尺寸图：{character}. 白底，技术说明风格，标注总高、坐高、臂展、头身比、头宽、身体宽，单位 cm。',
    checklist: productionChecklist,
  },
  {
    id: 'prod_dimension_parts',
    kind: 'production',
    view: 'dimension_parts',
    title: '部件尺寸图',
    description: '标注耳朵、角、尾巴、包、配件和四肢尺寸。',
    required: true,
    aspectRatio: '4:5',
    filenamePart: 'dimension-parts',
    promptTemplate: '生成毛绒玩具部件尺寸图：{character}. 技术说明版式，拆出耳朵、角、尾巴、包、衣服/配件、四肢，标注长宽厚和数量，单位 cm，小部件可用 mm。',
    checklist: productionChecklist,
  },
  {
    id: 'prod_scale_reference',
    kind: 'production',
    view: 'scale_reference',
    title: '比例参考图',
    description: '用手持或常见物辅助工厂理解尺寸。',
    required: false,
    aspectRatio: '4:5',
    filenamePart: 'scale-reference',
    promptTemplate: '生成玩具比例参考图：{character}. 手持或桌面常见物对比，只用于生产沟通，清楚表达 20cm/30cm/45cm 三档尺寸感，不加入营销海报元素。',
    checklist: productionChecklist,
  },
  {
    id: 'prod_material_board',
    kind: 'production',
    view: 'material_board',
    title: '材料工艺板',
    description: '说明面料、刺绣、印花、塑料件和填充。',
    required: true,
    aspectRatio: '4:5',
    filenamePart: 'material-board',
    promptTemplate: '生成毛绒玩具材料工艺板：{character}. 干净版式，包含面料样块、刺绣/印花说明、塑料件/织带/金属件说明、填充软硬度和坐姿稳定要求，中文标注。',
    checklist: productionChecklist,
  },
  {
    id: 'prod_color_board',
    kind: 'production',
    view: 'color_board',
    title: '颜色板',
    description: '主色、辅色、五官、衣服和配件色。',
    required: true,
    aspectRatio: '4:5',
    filenamePart: 'color-board',
    promptTemplate: '生成毛绒玩具颜色板：{character}. 包含主色、辅色、强调色、五官色、衣服/配件色，给出 HEX 色值和建议 Pantone 占位，中文标注。',
    checklist: productionChecklist,
  },
  {
    id: 'prod_embroidery_detail',
    kind: 'production',
    view: 'embroidery_detail',
    title: '刺绣印花细节',
    description: '放大眼睛、嘴、腮红、图案和 Logo 工艺。',
    required: true,
    aspectRatio: '4:5',
    filenamePart: 'embroidery-detail',
    promptTemplate: '生成毛绒玩具刺绣/印花细节图：{character}. 放大眼睛、嘴巴、腮红、身体图案和标识，标注刺绣线色、印花边界、针距/线宽占位和工艺注意事项。',
    checklist: productionChecklist,
  },
  {
    id: 'prod_seam_map',
    kind: 'production',
    view: 'seam_map',
    title: '缝线拼接图',
    description: '标注头身、耳朵、四肢和配件连接方式。',
    required: true,
    aspectRatio: '4:5',
    filenamePart: 'seam-map',
    promptTemplate: '生成毛绒玩具缝线/拼接线图：{character}. 白底技术图风格，用虚线或彩色线标注头身连接、耳朵连接、四肢连接、配件固定点和开口返口位置，中文说明。',
    checklist: productionChecklist,
  },
  {
    id: 'prod_filling_spec',
    kind: 'production',
    view: 'filling_spec',
    title: '填充说明图',
    description: '说明软硬度、重心、坐姿稳定和填充区域。',
    required: true,
    aspectRatio: '4:5',
    filenamePart: 'filling-spec',
    promptTemplate: '生成毛绒玩具填充说明图：{character}. 剖面/分区技术说明风格，标注 PP 棉填充区域、软硬度、重心、坐姿稳定要求和不可过硬区域。',
    checklist: productionChecklist,
  },
  {
    id: 'prod_part_breakdown',
    kind: 'production',
    view: 'part_breakdown',
    title: '拆件图',
    description: '拆分头、身体、四肢、耳朵、服装和配件。',
    required: true,
    aspectRatio: '4:5',
    filenamePart: 'part-breakdown',
    promptTemplate: '生成毛绒玩具拆件图：{character}. 技术图风格，白底，将头、身体、四肢、耳朵、服装、配件分开展示，带中文部件名称和数量标注。',
    checklist: productionChecklist,
  },
  {
    id: 'prod_accessory_sheet',
    kind: 'production',
    view: 'accessory_sheet',
    title: '配件单页',
    description: '独立展示帽子、背包、吊牌、可拆物等。',
    required: false,
    aspectRatio: '4:5',
    filenamePart: 'accessory-sheet',
    promptTemplate: '生成玩具配件单页：{character}. 将帽子、背包、吊牌、可拆物、电子件或装饰件独立展示，标注数量、材料、连接方式和尺寸建议，中文技术版式。',
    checklist: productionChecklist,
  },
  {
    id: 'prod_packaging_structure',
    kind: 'production',
    view: 'packaging_structure',
    title: '包装结构图',
    description: '礼盒、吊卡、内托和说明卡草案。',
    required: false,
    aspectRatio: '4:5',
    filenamePart: 'packaging-structure',
    promptTemplate: '生成玩具包装结构草图：{character}. 展示礼盒、吊卡、内托、说明卡和包装尺寸建议，干净白底，中文标注，适合给工厂沟通。',
    checklist: productionChecklist,
  },
  {
    id: 'prod_label_tag',
    kind: 'production',
    view: 'label_tag',
    title: '标签吊牌图',
    description: '吊牌、水洗标和品牌标位置与内容草案。',
    required: false,
    aspectRatio: '4:5',
    filenamePart: 'label-tag',
    promptTemplate: '生成玩具标签吊牌说明图：{character}. 展示吊牌、水洗标、品牌标的位置和内容草案，包含尺寸建议和中文标注，白底技术版式。',
    checklist: productionChecklist,
  },
];

export const MARKETING_TEMPLATES: AssetTemplate[] = [
  {
    id: 'mkt_hero_kv',
    kind: 'marketing',
    view: 'hero_kv',
    title: '主视觉 KV',
    description: '一眼讲清角色、气质和核心卖点。',
    required: true,
    aspectRatio: '16:9',
    filenamePart: 'hero-kv',
    promptTemplate: '生成玩具新品主视觉 KV：{character}. 高级商业摄影，干净但有情绪的背景，突出角色核心卖点，可加入简洁中文标题占位，但不要遮挡产品。',
    checklist: marketingChecklist,
  },
  {
    id: 'mkt_white_front',
    kind: 'marketing',
    view: 'white_front',
    title: '白底正面商品图',
    description: '电商基础商品图。',
    required: true,
    aspectRatio: '1:1',
    filenamePart: 'white-front',
    promptTemplate: '生成电商白底商品图：{character}. 正面，产品居中，柔和阴影，高清质感，无多余文字，适合主图。',
    checklist: marketingChecklist,
  },
  {
    id: 'mkt_white_45',
    kind: 'marketing',
    view: 'white_45',
    title: '白底 45 度商品图',
    description: '展示体积和可爱感。',
    required: true,
    aspectRatio: '1:1',
    filenamePart: 'white-45',
    promptTemplate: '生成电商白底 45 度商品图：{character}. 前侧 45 度，产品居中，柔和阴影，展示整体体积、毛绒质感和主要配件。',
    checklist: marketingChecklist,
  },
  {
    id: 'mkt_white_back',
    kind: 'marketing',
    view: 'white_back',
    title: '白底背面商品图',
    description: '展示背部和后侧细节。',
    required: true,
    aspectRatio: '1:1',
    filenamePart: 'white-back',
    promptTemplate: '生成电商白底背面商品图：{character}. 背面，产品居中，柔和阴影，展示背部、尾巴、标签和后侧配件。',
    checklist: marketingChecklist,
  },
  {
    id: 'mkt_detail_face',
    kind: 'marketing',
    view: 'detail_face',
    title: '脸部细节图',
    description: '展示五官、刺绣和表情。',
    required: true,
    aspectRatio: '4:5',
    filenamePart: 'detail-face',
    promptTemplate: '生成玩具脸部细节宣发图：{character}. 近景特写，突出眼睛、嘴巴、腮红、刺绣/印花工艺和治愈表情，可加入简短卖点文案。',
    checklist: marketingChecklist,
  },
  {
    id: 'mkt_detail_material',
    kind: 'marketing',
    view: 'detail_material',
    title: '面料触感图',
    description: '展示毛绒、填充和触感卖点。',
    required: true,
    aspectRatio: '4:5',
    filenamePart: 'detail-material',
    promptTemplate: '生成玩具面料触感宣发图：{character}. 微距商业摄影，突出毛绒质感、柔软填充、可抱触感，可加入简短中文卖点。',
    checklist: marketingChecklist,
  },
  {
    id: 'mkt_detail_accessory',
    kind: 'marketing',
    view: 'detail_accessory',
    title: '配件卖点图',
    description: '突出服装、配件、机关或标志性部件。',
    required: true,
    aspectRatio: '4:5',
    filenamePart: 'detail-accessory',
    promptTemplate: '生成玩具配件/服装/机关细节宣发图：{character}. 近景商业摄影，突出最具识别度的配件、服装、尾巴、背包或机械件，可加入简短卖点文案。',
    checklist: marketingChecklist,
  },
  {
    id: 'mkt_scene_bedroom',
    kind: 'marketing',
    view: 'scene_bedroom',
    title: '卧室陪伴场景',
    description: '床头、儿童房或治愈陪伴场景。',
    required: true,
    aspectRatio: '4:5',
    filenamePart: 'scene-bedroom',
    promptTemplate: '生成玩具卧室陪伴场景图：{character}. 温暖床头或儿童房场景，柔和自然光，突出陪伴、治愈和礼物感。',
    checklist: marketingChecklist,
  },
  {
    id: 'mkt_scene_desk',
    kind: 'marketing',
    view: 'scene_desk',
    title: '桌面陪伴场景',
    description: '办公桌、学习桌或创作桌场景。',
    required: true,
    aspectRatio: '4:5',
    filenamePart: 'scene-desk',
    promptTemplate: '生成玩具桌面陪伴场景图：{character}. 办公桌/学习桌/创作桌场景，清爽自然光，突出日常陪伴、桌搭和收藏展示感。',
    checklist: marketingChecklist,
  },
  {
    id: 'mkt_scene_gift',
    kind: 'marketing',
    view: 'scene_gift',
    title: '礼物开箱场景',
    description: '礼物、节日、开箱和赠送场景。',
    required: true,
    aspectRatio: '4:5',
    filenamePart: 'scene-gift',
    promptTemplate: '生成玩具礼物/节日/开箱场景图：{character}. 温暖礼物氛围，展示包装、打开瞬间和产品露出，突出送礼、惊喜和治愈感。',
    checklist: marketingChecklist,
  },
  {
    id: 'mkt_size_lifestyle',
    kind: 'marketing',
    view: 'size_lifestyle',
    title: '尺寸对比图',
    description: '用手持、桌面或沙发对比表达尺寸。',
    required: true,
    aspectRatio: '4:5',
    filenamePart: 'size-lifestyle',
    promptTemplate: '生成玩具尺寸对比宣发图：{character}. 手持或桌面生活方式场景，体现真实大小和可抱感，可加入尺寸文案占位。',
    checklist: marketingChecklist,
  },
  {
    id: 'mkt_social_square',
    kind: 'marketing',
    view: 'social_square',
    title: '社媒方形封面',
    description: '社媒 1:1 封面图。',
    required: false,
    aspectRatio: '1:1',
    filenamePart: 'social-square',
    promptTemplate: '生成社媒 1:1 方形封面图：{character}. 强视觉中心，适合小红书/微博/朋友圈，留出短标题区域，产品不变形，整体风格与宣发包统一。',
    checklist: marketingChecklist,
  },
  {
    id: 'mkt_social_vertical',
    kind: 'marketing',
    view: 'social_vertical',
    title: '竖版社媒封面',
    description: '小红书、短视频封面，3:4 或 9:16。',
    required: false,
    aspectRatio: '9:16',
    filenamePart: 'social-vertical',
    promptTemplate: '生成竖版社媒封面图：{character}. 9:16，适合小红书/短视频，强视觉中心，留出标题区域，产品不变形，风格统一。',
    checklist: marketingChecklist,
  },
  {
    id: 'mkt_packaging_render',
    kind: 'marketing',
    view: 'packaging_render',
    title: '包装渲染图',
    description: '展示包装外观、开窗、内托和礼盒质感。',
    required: false,
    aspectRatio: '4:5',
    filenamePart: 'packaging-render',
    promptTemplate: '生成玩具包装商业渲染图：{character}. 展示礼盒、开窗、内托、吊卡或说明卡，商业摄影质感，包装风格与角色一致，可加入品牌占位但不要真实商标。',
    checklist: marketingChecklist,
  },
  {
    id: 'mkt_character_story',
    kind: 'marketing',
    view: 'character_story',
    title: '角色故事图',
    description: '表达 IP 性格、故事和情绪价值。',
    required: false,
    aspectRatio: '4:5',
    filenamePart: 'character-story',
    promptTemplate: '生成 IP 角色故事宣发图：{character}. 结构化版式，包含角色名字、性格关键词、故事短句、陪伴场景和核心识别元素，中文文案占位。',
    checklist: marketingChecklist,
  },
  {
    id: 'mkt_ecommerce_longpage',
    kind: 'marketing',
    view: 'ecommerce_longpage',
    title: '电商详情页模块',
    description: '整合概念、尺寸、材质、卖点和包装。',
    required: false,
    aspectRatio: 'long',
    filenamePart: 'ecommerce-longpage',
    promptTemplate: '生成电商详情页长图模块：{character}. 结构化版式，包含角色故事、核心卖点、尺寸、材质、细节、包装展示，中文标题和短文案占位。',
    checklist: marketingChecklist,
  },
  {
    id: 'video_turntable',
    kind: 'marketing',
    view: 'video_turntable',
    title: '360 度旋转视频脚本',
    description: '电商 360 度转台展示分镜。',
    required: false,
    aspectRatio: '16:9',
    filenamePart: 'video-turntable',
    promptTemplate: '生成 360 度旋转展示短视频分镜板：{character}. 16:9，包含 6 个镜头缩略画面和中文脚本：正面、左前 45 度、侧面、背面、右前 45 度、回到正面，适合电商展示。',
    checklist: marketingChecklist,
  },
  {
    id: 'video_unboxing',
    kind: 'marketing',
    view: 'video_unboxing',
    title: '开箱视频脚本',
    description: '包装到娃娃展示的开箱流程。',
    required: false,
    aspectRatio: '16:9',
    filenamePart: 'video-unboxing',
    promptTemplate: '生成玩具开箱短视频分镜板：{character}. 16:9，包含包装特写、打开、取出、细节、抱持展示、结尾定格，中文脚本和镜头时长占位。',
    checklist: marketingChecklist,
  },
  {
    id: 'video_touch_detail',
    kind: 'marketing',
    view: 'video_touch_detail',
    title: '触感细节视频脚本',
    description: '揉捏、触感和细节特写分镜。',
    required: false,
    aspectRatio: '16:9',
    filenamePart: 'video-touch-detail',
    promptTemplate: '生成玩具触感细节短视频分镜板：{character}. 16:9，展示揉捏、毛绒触感、刺绣细节、配件互动和恢复形态，中文脚本占位。',
    checklist: marketingChecklist,
  },
  {
    id: 'video_story_intro',
    kind: 'marketing',
    view: 'video_story_intro',
    title: '角色设定短片脚本',
    description: '社媒角色介绍短片分镜。',
    required: false,
    aspectRatio: '9:16',
    filenamePart: 'video-story-intro',
    promptTemplate: '生成竖版角色设定短片分镜板：{character}. 9:16，适合社媒，包含角色登场、性格关键词、陪伴场景、卖点定格和结尾 CTA，中文脚本占位。',
    checklist: marketingChecklist,
  },
  {
    id: 'video_factory_preview',
    kind: 'marketing',
    view: 'video_factory_preview',
    title: '工厂预览视频脚本',
    description: '打样前内部沟通概念展示分镜。',
    required: false,
    aspectRatio: '16:9',
    filenamePart: 'video-factory-preview',
    promptTemplate: '生成工厂预览概念短片分镜板：{character}. 16:9，面向内部沟通，展示外观、尺寸、材料、拆件和包装要点，中文说明占位，不做消费者营销话术。',
    checklist: marketingChecklist,
  },
];

export const PACK_TEMPLATES: Record<PackKind, AssetTemplate[]> = {
  patent: PATENT_TEMPLATES,
  production: PRODUCTION_TEMPLATES,
  marketing: MARKETING_TEMPLATES,
};

export function getPackTemplates(kind: PackKind): AssetTemplate[] {
  return PACK_TEMPLATES[kind];
}

export function renderCharacterSummary(spec: CharacterSpec): string {
  return [
    `${spec.name}，${spec.oneLiner}`,
    `目标用户：${spec.targetUser}`,
    `形态：${spec.speciesShape}`,
    `比例：${spec.bodyRatio}`,
    `五官：${spec.faceFeatures}`,
    `配色：${spec.colorPalette.join('、')}`,
    `材料：${spec.materials.join('、')}`,
    `配件：${spec.accessories.join('、')}`,
    `识别元素：${spec.signatureElements.join('、')}`,
    `专利重点：${spec.patentFocus.join('、')}`,
    `营销角度：${spec.marketingAngle.join('、')}`,
    `不要出现：${spec.negativePrompt}`,
  ].join('；');
}

