import http from 'http';
import { Buffer } from 'buffer';

// 测试评查点列表接口
function testGetEvaluationPoints() {
  const options = {
    hostname: '127.0.0.1',
    port: 9000,
    path: '/admin/evaluation_points',
    method: 'GET',
    headers: {
      'Accept': 'application/json'
    }
  };

  const req = http.request(options, (res) => {
    console.log(`状态码: ${res.statusCode}`);
    console.log(`响应头: ${JSON.stringify(res.headers)}`);
    
    let data = '';
    
    res.on('data', (chunk) => {
      data += chunk;
    });
    
    res.on('end', () => {
      console.log('获取评查点列表成功!');
      try {
        const jsonData = JSON.parse(data);
        console.log(`共获取 ${jsonData.length} 条评查点数据`);
        console.log('第一条数据:', JSON.stringify(jsonData[0], null, 2).substring(0, 200) + '...');
      } catch (e) {
        console.error('解析JSON数据失败:', e.message);
        console.log('原始数据:', data);
      }
    });
  });
  
  req.on('error', (e) => {
    console.error(`获取评查点列表请求失败: ${e.message}`);
  });
  
  req.end();
}

// 测试创建评查点接口
function testCreateEvaluationPoint() {
  const testData = {
    name: '测试评查点',
    code: 'TEST_RULE_001',
    risk: 'medium',
    is_enabled: true,
    description: '这是一个用于测试接口的评查点',
    type: 'content',
    references_laws: {
      name: '《中华人民共和国民法典》',
      articles: ['第五百八十五条', '第五百八十六条'],
      content: '当事人应当按照约定全面履行自己的义务。'
    },
    evaluation_point_groups_id: 1,
    extraction_config: {
      llm: {
        fields: ['合同名称', '合同编号', '签订日期'],
        prompt_setting: {
          type: 'system',
          template: '请从文档中提取以下字段信息：合同名称、合同编号、签订日期'
        }
      },
      vlm: {
        fields: [
          { name: '公章', type: 'seal' },
          { name: '签名', type: 'handwriting' }
        ],
        prompt_setting: {
          type: 'system',
          template: '请识别文档中的公章和签名'
        }
      },
      regex: {
        fields: [
          { field: '合同编号', pattern: 'HT-\\d{4}-\\d{6}' }
        ]
      }
    },
    evaluation_config: {
      logicType: 'and',
      customLogic: '',
      rules: [
        {
          id: '1',
          type: 'exists',
          config: {
            fields: ['合同名称', '合同编号', '签订日期'],
            logic: 'and'
          }
        }
      ]
    },
    pass_message: '文档检查通过，符合规范要求。',
    fail_message: '文档存在以下问题，请修改后重新提交。',
    suggestion_message: '',
    suggestion_message_type: 'warning',
    post_action: 'none',
    action_config: ''
  };

  const postData = JSON.stringify(testData);
  
  const options = {
    hostname: '127.0.0.1',
    port: 9000,
    path: '/admin/evaluation_points',
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'Content-Length': Buffer.byteLength(postData),
      'Accept': 'application/json',
      'Prefer': 'return=representation'
    }
  };

  const req = http.request(options, (res) => {
    console.log(`状态码: ${res.statusCode}`);
    console.log(`响应头: ${JSON.stringify(res.headers)}`);
    
    let data = '';
    
    res.on('data', (chunk) => {
      data += chunk;
    });
    
    res.on('end', () => {
      console.log('创建评查点成功!');
      try {
        const jsonData = JSON.parse(data);
        console.log('创建的评查点ID:', jsonData.id);
        console.log('创建的评查点数据:', JSON.stringify(jsonData, null, 2).substring(0, 200) + '...');
      } catch (e) {
        console.error('解析JSON数据失败:', e.message);
        console.log('原始数据:', data);
      }
    });
  });
  
  req.on('error', (e) => {
    console.error(`创建评查点请求失败: ${e.message}`);
  });
  
  req.write(postData);
  req.end();
}

// 运行测试
console.log('开始测试评查点API...');
console.log('1. 测试获取评查点列表...');
testGetEvaluationPoints();

// 等待3秒后测试创建评查点
setTimeout(() => {
  console.log('\n2. 测试创建评查点...');
  testCreateEvaluationPoint();
}, 3000); 