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-extractor1
      source: start
      target: extractor1
    - data:
        sourceType: parameter-extractor
        targetType: if-else
      id: extractor1-to-ifelse1
      source: extractor1
      target: ifelse1
    - data:
        sourceType: if-else
        targetType: llm
      id: ifelse1-true-to-llm_escalation
      source: ifelse1
      sourceHandle: 'true'
      target: llm_escalation
    - data:
        sourceType: if-else
        targetType: llm
      id: ifelse1-false-to-llm_final
      source: ifelse1
      sourceHandle: 'false'
      target: llm_final
    - data:
        sourceType: llm
        targetType: llm
      id: llm_escalation-to-llm_final
      source: llm_escalation
      target: llm_final
    - data:
        sourceType: llm
        targetType: end
      id: llm_final-to-end
      source: llm_final
      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: category
          type: string
          description: '相談のカテゴリ。候補: harass(ハラスメント), payroll(給与), leave(休職・休暇), attendance(出退勤),
            contract(契約), benefits(福利厚生), other(その他)'
          required: true
        - name: priority
          type: string
          description: 優先度。必ず high / medium / low のいずれかで出力
          required: true
        - name: department
          type: string
          description: '一次対応窓口。候補: HR_generalist, Payroll_team, Benefits_team, Legal_team,
            Manager_escalation, Other'
          required: true
        - name: brief_summary
          type: string
          description: 1〜2行の要約（任意）
          required: false
        reasoning_mode: prompt
        instruction: '以下のメール本文から、以下を抽出してください。

          出力ルール:

          1) category は必ず上記の候補（harass, payroll, leave, attendance, contract, benefits,
          other）のいずれかを厳密に返してください。

          2) priority は必ず high / medium / low のいずれかを厳密に返してください。ハラスメントや安全に関わる内容、法的リスクがあるものは
          high と判定してください。

          3) department は上記候補のいずれかを返してください（対応チームの目安）。

          4) brief_summary は1〜2行で事象の要点を日本語で記述してください（存在しない場合は空文字列を返して構いません）。

          5) 出力は構造化抽出のためのパラメータとして扱われます。曖昧な場合は最も厳しめ（注意喚起が必要な方）に判定してください。

          '
      height: 90
      id: extractor1
      position:
        x: 380
        y: 282
      type: custom
      width: 244
    - data:
        title: 優先度が高いか判定
        type: if-else
        conditions:
        - comparison_operator: is
          id: cond-priority-high
          value: high
          variable_selector:
          - extractor1
          - priority
        logical_operator: and
      height: 90
      id: ifelse1
      position:
        x: 680
        y: 282
      type: custom
      width: 244
    - data:
        title: 緊急エスカレーション案作成
        type: llm
        model:
          provider: openai
          name: gpt-5-mini
          mode: chat
          completion_params:
            temperature: 0.6
        prompt_template:
        - role: system
          text: 'あなたは企業の人事担当として、緊急度の高い労務相談に対するエスカレーション案を短く実務的に作成する専門家です。出力は日本語で簡潔に。


            ---


            【最終出力フォーマット (この指示が最優先)】

            最終出力は **読みやすい日本語の Markdown** で返してください。JSON

            配列・オブジェクトをそのまま出力してはいけません。

            - 見出し (## / ###) でセクションを区切る

            - リスト (- / 1.) や表 (| ... |) で構造化

            - 各項目の意図や根拠が分かるよう短い説明文を添える

            - 営業デモで顧客に直接見せられる体裁にする


            (構造化されたデータ項目を内部で扱うのは構いませんが、出力時に Markdown

            に変換してください。)'
        - role: user
          text: '原文: {{#start.query#}}


            分類: {{#extractor1.category#}}

            優先度: {{#extractor1.priority#}}

            対応窓口: {{#extractor1.department#}}

            要約: {{#extractor1.brief_summary#}}


            この案件が high(高優先)である前提で、上長へのエスカレーション要点（箇条書きで3点以内）と、直ちに取るべき初動対応（2つの短いアクション）を日本語で出力してください。'
        vision:
          enabled: false
        memory: null
        context:
          enabled: false
      height: 90
      id: llm_escalation
      position:
        x: 980
        y: 282
      type: custom
      width: 244
    - data:
        title: 最終フォーマット生成
        type: llm
        model:
          provider: openai
          name: gpt-5-mini
          mode: chat
          completion_params:
            temperature: 0.6
        prompt_template:
        - role: system
          text: 'あなたは人事の一次対応担当者向けのチケット説明を作成する役割です。出力はJSON形式で、フィールドは ticket_title (15文字以内),
            category, priority, department, brief_summary, steps (配列: 対応手順3ステップ),
            escalation_note (文字列, エスカレーション案があれば記載)。日本語で出力してください。


            ---


            【最終出力フォーマット (この指示が最優先)】

            最終出力は **読みやすい日本語の Markdown** で返してください。JSON

            配列・オブジェクトをそのまま出力してはいけません。

            - 見出し (## / ###) でセクションを区切る

            - リスト (- / 1.) や表 (| ... |) で構造化

            - 各項目の意図や根拠が分かるよう短い説明文を添える

            - 営業デモで顧客に直接見せられる体裁にする


            (構造化されたデータ項目を内部で扱うのは構いませんが、出力時に Markdown

            に変換してください。)'
        - role: user
          text: '元メール: {{#start.query#}}


            抽出結果:

            - カテゴリ: {{#extractor1.category#}}

            - 優先度: {{#extractor1.priority#}}

            - 対応窓口: {{#extractor1.department#}}

            - 要約: {{#extractor1.brief_summary#}}


            エスカレーション案（存在する場合）:

            {{#llm_escalation.text#}}


            上記を元に、一次対応担当者がそのままチケットに貼れるJSONを作成してください。'
        vision:
          enabled: false
        memory: null
        context:
          enabled: false
      height: 90
      id: llm_final
      position:
        x: 1280
        y: 282
      type: custom
      width: 244
    - data:
        title: 終了
        type: end
        outputs:
        - value_selector:
          - llm_final
          - text
          variable: result
      height: 90
      id: end
      position:
        x: 1580
        y: 282
      type: custom
      width: 244
  hash: null
