app: description: 'Laser card 单 variant 生成。MiniMax 背景+装饰 → compositor 合成。Gateway 并行调 5 次。' icon: 🤖 icon_background: '#FFEAD5' mode: workflow name: laser_card_variant_v1 use_icon_as_answer_icon: false kind: app version: 0.1.4 workflow: conversation_variables: [] environment_variables: - description: 'laser-compositor 合成服务地址' name: LASER_COMPOSITOR_HOST value: 'http://host.docker.internal:7000' value_type: string - description: 'MiniMax API 密钥' name: MINIMAX_API_KEY value: '' value_type: secret features: file_upload: image: enabled: false number_limits: 3 transfer_methods: - local_file - remote_url opening_statement: '' retriever_resource: enabled: false sensitive_word_avoidance: enabled: false speech_to_text: enabled: false suggested_questions: [] suggested_questions_after_answer: enabled: false text_to_speech: enabled: false language: '' voice: '' graph: edges: - data: isInIteration: false isInLoop: false sourceType: start targetType: http-request id: start-source-minimax-bg-target source: start sourceHandle: source target: minimax-bg targetHandle: target type: custom zIndex: 0 - data: isInIteration: false isInLoop: false sourceType: http-request targetType: http-request id: minimax-bg-source-minimax-overlay-target source: minimax-bg sourceHandle: source target: minimax-overlay targetHandle: target type: custom zIndex: 0 - data: isInIteration: false isInLoop: false sourceType: http-request targetType: http-request id: minimax-overlay-source-compositor-target source: minimax-overlay sourceHandle: source target: compositor targetHandle: target type: custom zIndex: 0 - data: isInIteration: false isInLoop: false sourceType: http-request targetType: end id: compositor-source-end-target source: compositor sourceHandle: source target: end targetHandle: target type: custom zIndex: 0 nodes: - data: desc: '单 variant 生成参数' selected: false title: 开始 type: start variables: - label: cutout_url max_length: 2048 options: [] required: false type: text-input variable: cutout_url - label: bg_prompt max_length: 2048 options: [] required: true type: text-input variable: bg_prompt - label: overlay_prompt max_length: 2048 options: [] required: true type: text-input variable: overlay_prompt - label: grating_config max_length: 4096 options: [] required: true type: text-input variable: grating_config - label: output_oss_key max_length: 512 options: [] required: false type: text-input variable: output_oss_key height: 160 id: start position: x: 30 y: 250 positionAbsolute: x: 30 y: 250 selected: false sourcePosition: right targetPosition: left type: custom width: 244 - data: authorization: config: api_key: '{{#env.MINIMAX_API_KEY#}}' type: bearer-api-key body: data: '{"model": "image-01", "prompt": "{{#start.bg_prompt#}}", "aspect_ratio": "3:4", "n": 1, "response_format": "url"}' type: json desc: 'MiniMax 生成背景图' headers: 'Content-Type: application/json' method: post params: '' selected: false timeout: max_connect_timeout: 10 max_read_timeout: 60 max_write_timeout: 20 title: MiniMax 背景图 type: http-request url: 'https://api.minimaxi.com/v1/image_generation' variables: [] height: 93 id: minimax-bg position: x: 320 y: 250 positionAbsolute: x: 320 y: 250 selected: false sourcePosition: right targetPosition: left type: custom width: 244 - data: authorization: config: api_key: '{{#env.MINIMAX_API_KEY#}}' type: bearer-api-key body: data: '{"model": "image-01", "prompt": "{{#start.overlay_prompt#}}", "aspect_ratio": "3:4", "n": 1, "response_format": "url"}' type: json desc: 'MiniMax 生成装饰图' headers: 'Content-Type: application/json' method: post params: '' selected: false timeout: max_connect_timeout: 10 max_read_timeout: 60 max_write_timeout: 20 title: MiniMax 装饰图 type: http-request url: 'https://api.minimaxi.com/v1/image_generation' variables: [] height: 93 id: minimax-overlay position: x: 610 y: 250 positionAbsolute: x: 610 y: 250 selected: false sourcePosition: right targetPosition: left type: custom width: 244 - data: authorization: type: no-auth body: data: '{"background_url": "{{#minimax-bg.body.data.image_urls[0]#}}", "cutout_url": "{{#start.cutout_url#}}", "overlay_url": "{{#minimax-overlay.body.data.image_urls[0]#}}", "grating_config": {{#start.grating_config#}}, "export_width": 450, "export_height": 600, "output_oss_key": "{{#start.output_oss_key#}}"}' type: json desc: 'laser-compositor 6层合成' headers: 'Content-Type: application/json' method: post params: '' selected: false timeout: max_connect_timeout: 10 max_read_timeout: 60 max_write_timeout: 20 title: 合成镭射卡 type: http-request url: '{{#env.LASER_COMPOSITOR_HOST#}}/compose' variables: [] height: 93 id: compositor position: x: 900 y: 250 positionAbsolute: x: 900 y: 250 selected: false sourcePosition: right targetPosition: left type: custom width: 244 - data: desc: '返回合成结果' outputs: - value_selector: - compositor - body variable: result selected: false title: 结束 type: end height: 54 id: end position: x: 1190 y: 250 positionAbsolute: x: 1190 y: 250 selected: false sourcePosition: right targetPosition: left type: custom width: 244