/**
 * Phenomenology Reduction - 现象学还原练习生成器
 * 
 * 生成基于现象学方法的自我觉察练习
 * 理论来源：Husserl, Heidegger, Merleau-Ponty, Sartre
 */

class PhenomenologyReduction {
  /**
   * 生成现象学还原练习
   * @param {string} experience - 体验描述
   * @returns {Object} 练习方案
   */
  generateExercise(experience) {
    return {
      // 1. 悬置 (Epoché)
      epoche: this._generateEpoche(experience),
      
      // 2. 现象学还原
      reduction: this._generateReduction(experience),
      
      // 3. 本质直观
      eideticVariation: this._generateEideticVariation(experience),
      
      // 4. 生活世界回归
      lifeworldReturn: this._generateLifeworldReturn(experience),
      
      // 5. 完整练习流程
      fullPractice: this._generateFullPractice(experience)
    };
  }

  /**
   * 悬置练习 (Epoché)
   * 悬置自然态度，不加判断地观察
   */
  _generateEpoche(experience) {
    return {
      name: '悬置 (Epoché)',
      purpose: '暂停判断和解释，直接观察体验本身',
      duration: '5-10 分钟',
      steps: [
        '找一个安静的地方，舒适地坐下或躺下',
        '闭上眼睛，做几次深呼吸，让身体放松',
        '将注意力带回到你刚才描述的体验',
        '注意任何升起的判断、解释、标签',
        '温柔地将这些判断放在一边，就像把它们放在架子上',
        '只关注体验本身：它是什么感觉？有什么质感？',
        '如果判断再次升起，再次温柔地放下它们',
        '保持这种开放、不加评判的觉察 5-10 分钟'
      ],
      prompts: [
        '这个体验的直接感觉是什么？',
        '如果不给它贴标签，它是什么样的？',
        '它的质感、温度、密度是怎样的？',
        '它在身体的哪个部位最明显？'
      ],
      cautions: [
        '不要试图改变体验',
        '不要分析为什么会有这个体验',
        '不要判断这个体验是"好"还是"坏"',
        '只需如实地观察它'
      ]
    };
  }

  /**
   * 现象学还原
   * 回到事物本身，描述纯粹现象
   */
  _generateReduction(experience) {
    return {
      name: '现象学还原',
      purpose: '剥离解释层，回到体验的纯粹现象',
      duration: '10-15 分钟',
      steps: [
        '回顾你刚才描述的体验',
        '识别其中的解释层：你对这个体验有什么想法？',
        '识别其中的标签：你给这个体验贴了什么标签？',
        '识别其中的故事：你给这个体验编了什么故事？',
        '现在，一层层剥开这些解释、标签、故事',
        '问自己：如果没有这些解释，体验本身是什么？',
        '用纯粹的描述性语言记录：颜色、形状、质感、强度、位置',
        '继续深入，直到你触达最基础的感官数据'
      ],
      prompts: [
        '这个体验在视觉上是怎样的？ (即使闭上眼睛也能"看到")',
        '这个体验在听觉上是怎样的？ (内在的声音或音调)',
        '这个体验在身体感觉上是怎样的？ (温度、压力、振动)',
        '这个体验的空间位置在哪里？',
        '这个体验的大小、形状是怎样的？',
        '这个体验是静态的还是动态的？'
      ],
      example: {
        original: '我很焦虑，因为明天的演讲可能会搞砸',
        reduced: '胸口有紧绷感，心跳略快，呼吸浅，头脑中有"可能会搞砸"的画面，腹部有下沉感'
      }
    };
  }

  /**
   * 本质直观 (Eidetic Variation)
   * 通过想象变异，探索体验的本质结构
   */
  _generateEideticVariation(experience) {
    return {
      name: '本质直观 (Eidetic Variation)',
      purpose: '通过想象变异，探索体验的必要和偶然特征',
      duration: '15-20 分钟',
      steps: [
        '选择一个体验的核心特征 (例如：胸口的紧绷感)',
        '在想象中改变这个特征的强度：更紧一些，更松一些',
        '问：这个特征能完全消失而体验仍然是这个体验吗？',
        '在想象中改变这个特征的位置：移到另一个身体部位',
        '问：位置改变后，体验还是同一个体验吗？',
        '在想象中改变这个特征的质感：从紧绷变成其他感觉',
        '问：质感改变后，体验的本质改变了吗？',
        '继续变异其他特征，探索哪些是本质的，哪些是偶然的',
        '记录你的发现：这个体验的本质结构是什么？'
      ],
      prompts: [
        '这个体验的最小必要条件是什么？',
        '哪些特征可以改变而体验仍然是这个体验？',
        '哪些特征一旦改变，体验就变成了另一种体验？',
        '这个体验的核心本质是什么？',
        '这个体验与其他类似体验的区别在哪里？'
      ],
      example: {
        experience: '焦虑',
        variations: [
          '如果心跳不快，还是焦虑吗？ → 可能是，心跳不是本质',
          '如果没有担忧的想法，还是焦虑吗？ → 可能不是，担忧是本质',
          '如果身体感觉是兴奋而不是紧张，还是焦虑吗？ → 可能不是，身体紧张是本质'
        ],
        essence: '焦虑的本质 = 对未来威胁的预期 + 身体紧张感 + 不确定感'
      }
    };
  }

  /**
   * 生活世界回归
   * 将体验放回生活世界的脉络中
   */
  _generateLifeworldReturn(experience) {
    return {
      name: '生活世界回归',
      purpose: '将体验放回生活世界的脉络，理解其意义',
      duration: '10-15 分钟',
      steps: [
        '回顾你通过还原和变异获得的纯粹体验描述',
        '现在，慢慢将这个体验放回你的生活世界',
        '这个体验在你的生活中扮演什么角色？',
        '这个体验与你的重要他人有什么关系？',
        '这个体验与你的价值观、目标有什么关系？',
        '这个体验在你的生命故事中有什么意义？',
        '这个体验想要告诉你什么？',
        '记录你的洞察：这个体验在你的生活世界中的位置和意义'
      ],
      prompts: [
        '这个体验第一次出现是什么时候？',
        '这个体验通常在什么情境下出现？',
        '这个体验对你的生活有什么影响？',
        '如果没有这个体验，你的生活会怎样？',
        '这个体验在保护你什么？或者在推动你什么？',
        '这个体验与你的核心价值观有什么联系？'
      ],
      integration: '将现象学洞察与生活脉络整合，形成更完整的自我理解'
    };
  }

  /**
   * 完整练习流程
   */
  _generateFullPractice(experience) {
    return {
      name: '完整现象学还原练习',
      totalDuration: '40-60 分钟',
      phases: [
        {
          phase: 1,
          name: '准备与 grounding',
          duration: '5 分钟',
          instructions: [
            '找一个不被打扰的空间',
            '舒适地坐下，双脚着地',
            '做 5 次深呼吸，感受气息进出',
            '设定意图：我将如实地观察我的体验'
          ]
        },
        {
          phase: 2,
          name: '悬置 (Epoché)',
          duration: '10 分钟',
          instructions: [
            '将注意力带到体验上',
            '注意升起的判断和解释',
            '温柔地将它们放在一边',
            '保持开放、不加评判的觉察'
          ]
        },
        {
          phase: 3,
          name: '现象学还原',
          duration: '15 分钟',
          instructions: [
            '剥离解释层和标签',
            '用纯粹的描述性语言记录体验',
            '关注感官数据：质感、位置、强度、动态',
            '写下你的描述'
          ]
        },
        {
          phase: 4,
          name: '本质直观',
          duration: '15 分钟',
          instructions: [
            '选择核心特征进行想象变异',
            '探索哪些是本质的，哪些是偶然的',
            '记录体验的本质结构',
            '与其他类似体验对比'
          ]
        },
        {
          phase: 5,
          name: '生活世界回归',
          duration: '10 分钟',
          instructions: [
            '将体验放回生活脉络',
            '探索体验的意义和功能',
            '记录你的洞察',
            '整合现象学描述和生活意义'
          ]
        },
        {
          phase: 6,
          name: '整合与关闭',
          duration: '5 分钟',
          instructions: [
            '回顾整个练习的发现',
            '感谢自己的觉察和努力',
            '做几次深呼吸，回到当下',
            '慢慢睁开眼睛，回到日常活动'
          ]
        }
      ],
      journalPrompts: [
        '通过这个练习，我对这个体验有了什么新的理解？',
        '现象学描述和我的日常理解有什么不同？',
        '这个练习中有什么 surprising 的发现？',
        '我想将这个洞察如何应用到生活中？'
      ],
      followUp: '建议每周练习 1-2 次，持续 4 周，观察自我意识的变化'
    };
  }
}

module.exports = PhenomenologyReduction;
