# Component Configurations
# This file contains detailed configurations for each dialogue component.
# Modify this file for component-specific optimizations without changing the core skill.

components:
  dialogue_reading:
    required_fields: ["text", "language"]
    format:
      text: "string"  # Required
      audio: "optional_file"  # Optional
      language: "string"  # Required
    config:
      duration: 30  # Expected reading time in seconds
      scoring_threshold: 80  # Accuracy threshold (0-100)
    validation_rules:
      - "text must not be empty"
      - "language must be supported"

  dialogue_expression:
    format:
      text: "string_with_cues"  # e.g., "[happy] Hello!"
      media: "optional_file"  # Video/image examples
    config:
      expression_types: ["happy", "sad", "angry"]
      detection_threshold: 0.7
    validation_rules:
      - "expression cues must match types"
      - "media file must be valid"

  dialogue_selective_reading:
    format:
      task_title: "string"  # 中文口语化标题
      resource_config: "string"  # 无 | 图片时机 + 音频载体配置
      context_intro: "string"  # 角色名 : 对话内容，无则填"无"
      interactive_content:
        requirement: "选择一个你想表达的观点"  # 固定
        options:  # 2-4个选项
          - text: "string"
            feedback: "角色名 : 反馈台词"  # 每个选项必带反馈
    config:
      no_correct_answer: true  # 核心特征：无正确选项
      feedback_per_option: true  # 每个选项必须有反馈
      audio_support: optional
    validation_rules:
      - "options must have at least 2 items"
      - "every option must have feedback"
      - "requirement text must be: 选择一个你想表达的观点"
      - "no (正确) marker on any option"
    skill_file: "dialogue-selective-reading-config"  # 对应 skill

  dialogue_selection:
    format:
      prompt: "string"
      options: "array_of_strings"
      correct_answer: "integer"  # Index of correct option
    config:
      multiple_choice: false
      points_per_correct: 1
    validation_rules:
      - "correct_answer must be valid index"
      - "options must have at least 2 items"

  dialogue_sentence_building:
    format:
      words_phrases: "array_of_strings"  # Shuffled components
      target_sentence: "string"
    config:
      difficulty_level: "medium"  # "easy", "medium", "hard"
      hints_enabled: true
    validation_rules:
      - "words_phrases must form target_sentence"
      - "difficulty must be valid"

  dialogue_fill_in_the_blanks:
    format:
      template: "string_with_blanks"  # e.g., "Hello [blank]!"
      answers: "array_of_strings"
    config:
      case_sensitive: false
      partial_credit: true
    validation_rules:
      - "blanks count must match answers"
      - "template must have placeholders"

  info_word_spelling:
    format:
      task_title: "string"  # 中文口语化标题
      resource_config: "string"  # 图片文件名：{组件ID}.png
      task_desc: "string"  # 请拼出"XXX"的英文单词
      stem: "string"  # 单词含(数字)占位，如 G(2)pe / grandfa(4)
      answer: "string"  # 仅需填入的字母，如 ra / ther
      options: "string"  # 4-7个候选字母，逗号分隔
      hint: "string"  # 辅助信息，无则写"无"
    config:
      target_word_from_knowledge: true  # 目标词必须来自知识点
      max_blank_half_word_length: true  # 挖空不超过单词总字母数的一半
      image_required: true  # 必有图片
    validation_rules:
      - "stem must contain (数字) placeholder"
      - "answer length must match placeholder number"
      - "options count between 4-7"
      - "all answer letters must be in options"
      - "target word must be from knowledge point"
    skill_file: "info-word-spelling-config"

  info_sentence_building:
    format:
      task_title: "string"  # 中文口语化标题
      resource_config: "string"  # 图片文件名：{组件ID}.png
      task_desc: "string"  # 任务指引
      options:  # 3-5个短语/词组，乱序，无大写无标点
        - "string"
      answer: "string"  # 完整句子，含大小写+标点
      hint: "string"  # 辅助信息，无则写"无"
    config:
      target_from_knowledge: true  # 目标句基于知识点
      options_count: [3, 5]  # 3-5个选项
      distractor_count: [1, 2]  # 1-2个干扰项
      image_required: true  # 必有图片
      no_caps_no_punct_in_options: true  # 选项无大写无标点
      phrase_level: true  # 短语级切分，不按单词边界
    validation_rules:
      - "options count between 3-5"
      - "1-2 distractors"
      - "options must be shuffled"
      - "options must have no capital first letter"
      - "options must have no end punctuation"
      - "answer must be a complete sentence with capitalisation and punctuation"
      - "target sentence must use knowledge point structure"
    skill_file: "info-sentence-building-config"