app:
  description: 銀行（メガバンク）向け：会議議事録から要旨と担当者別アクションを抽出するワークフロー
  icon: 🏦
  icon_background: '#FFEAD5'
  mode: workflow
  name: 議事録要約とアクション抽出
  use_icon_as_answer_icon: false
kind: app
version: 0.6.0
workflow:
  conversation_variables: []
  environment_variables: []
  features:
    file_upload:
      image:
        enabled: false
    opening_statement: ''
    suggested_questions: []
    suggested_questions_after_answer:
      enabled: false
    text_to_speech:
      enabled: false
  graph:
    edges:
    - data:
        sourceType: start
        targetType: parameter-extractor
      id: start-to-extract1
      source: start
      target: extract1
    - data:
        sourceType: parameter-extractor
        targetType: code
      id: extract1-to-code1
      source: extract1
      target: code1
    - data:
        sourceType: code
        targetType: end
      id: code1-to-end
      source: code1
      target: end
    nodes:
    - data:
        title: 開始
        type: start
        variables:
        - label: query
          max_length: 2048
          options: []
          required: true
          type: paragraph
          variable: query
      height: 90
      id: start
      position:
        x: 80
        y: 282
      type: custom
      width: 244
    - data:
        title: 情報抽出（要旨とアクション）
        type: parameter-extractor
        model:
          provider: openai
          name: gpt-5-mini
          mode: chat
        query:
        - start
        - query
        parameters:
        - name: summary
          type: string
          description: 会議の要旨（箇条書きで3〜5点を想定）
          required: true
        - name: actions
          type: string
          description: '担当者別アクション。各行に「担当者: アクション」の形式で記載。複数ある場合は改行で区切る'
          required: false
        reasoning_mode: prompt
        instruction: '以下の議事録テキストから、(1) 会議の要旨を箇条書きで3〜5点、(2) 担当者別アクションを「担当者: アクション」の各行形式で抽出してください。
          出力は構造化された2つのフィールド（summary, actions）として返してください。actionsがない場合は空欄にしてください。'
      height: 90
      id: extract1
      position:
        x: 380
        y: 282
      type: custom
      width: 244
    - data:
        title: 結果整形
        type: code
        code_language: python3
        code: "def _safe_str(v):\n    \"\"\"Convert any value to string safely.\"\"\
          \"\n    if v is None:\n        return \"\"\n    if isinstance(v, list):\n\
          \        return \"\\n\".join(str(i) for i in v)\n    return str(v)\n\ndef\
          \ _safe_list(v):\n    \"\"\"Ensure value is a list.\"\"\"\n    if v is None:\n\
          \        return []\n    if isinstance(v, str):\n        return [v]\n   \
          \ if isinstance(v, list):\n        return v\n    return [v]\n\ndef main(**kwargs)\
          \ -> dict:\n    inputs = kwargs\n    # 安全のためすべて文字列として扱う\n    summary = str(inputs.get(\"\
          summary\", \"\"))\n    actions = str(inputs.get(\"actions\", \"\"))\n  \
          \  # 要旨を見やすく整形する\n    output = \"要旨:\\n\" + summary + \"\\n\\n担当者別アクション:\\\
          n\" + actions\n    return dict(output=output)\n"
        variables:
        - value_selector:
          - extract1
          - summary
          variable: summary
        - value_selector:
          - extract1
          - actions
          variable: actions
        outputs:
          output:
            type: string
            children: null
      height: 90
      id: code1
      position:
        x: 680
        y: 282
      type: custom
      width: 244
    - data:
        title: 終了
        type: end
        outputs:
        - value_selector:
          - code1
          - output
          variable: result
      height: 90
      id: end
      position:
        x: 980
        y: 282
      type: custom
      width: 244
  hash: null
