/**
 * 标题摘要初筛 - 设置与启动页面
 * 
 * 功能：
 * 1. Excel文献导入（上传 + 模板下载）
 * 2. PICOS标准配置
 * 3. 纳入/排除标准配置
 * 4. 筛选风格选择
 * 5. 启动AI筛选
 */

import { useState } from 'react';
import { useNavigate } from 'react-router-dom';
import {
  Card,
  Form,
  Input,
  Button,
  Upload,
  Radio,
  Space,
  Tooltip,
  message,
  Alert,
  Divider,
  Row,
  Col,
} from 'antd';
import {
  InboxOutlined,
  QuestionCircleOutlined,
  DownloadOutlined,
  PlayCircleOutlined,
} from '@ant-design/icons';

const { TextArea } = Input;
const { Dragger } = Upload;

const TitleScreeningSettings = () => {
  const navigate = useNavigate();
  const [form] = Form.useForm();
  const [fileList, setFileList] = useState<any[]>([]);
  const [literatureCount, setLiteratureCount] = useState(0);
  const [canStart, setCanStart] = useState(false);

  // 处理Excel上传
  const handleFileUpload = async (file: File) => {
    try {
      // TODO: Week 2 Day 2 实现Excel解析
      // 这里只是占位逻辑
      setFileList([file]);
      setLiteratureCount(100); // 模拟导入100篇文献
      setCanStart(true);
      message.success(`成功导入 100 篇文献`);
      return false; // 阻止自动上传
    } catch (error) {
      message.error('文献导入失败');
      return false;
    }
  };

  // 下载Excel模板
  const handleDownloadTemplate = () => {
    // TODO: Week 2 Day 2 实现模板下载
    message.info('Excel模板下载功能开发中...');
  };

  // 启动筛选
  const handleStartScreening = async () => {
    try {
      const values = await form.validateFields();
      
      // TODO: Week 2 调用后端API启动筛选
      console.log('启动筛选:', values);
      
      message.success('AI筛选已启动，正在处理中...');
      
      // 跳转到审核工作台
      navigate('/literature/screening/title/workbench');
    } catch (error) {
      message.error('请完整填写筛选标准');
    }
  };

  return (
    <div className="p-6 max-w-7xl mx-auto">
      {/* 页面标题 */}
      <div className="mb-6">
        <h1 className="text-2xl font-bold mb-2">标题摘要初筛 - 设置与启动</h1>
        <p className="text-gray-500">
          配置PICOS标准、纳入/排除标准，然后导入文献开始AI筛选
        </p>
      </div>

      <Form
        form={form}
        layout="vertical"
        initialValues={{
          screeningStyle: 'standard',
        }}
      >
        {/* 步骤1: 配置筛选标准 */}
        <Card title="步骤1: 配置筛选标准" className="mb-6">
          {/* PICOS标准 */}
          <Alert
            message="PICOS标准"
            description="系统评价研究问题的标准化框架，请详细填写每个维度"
            type="info"
            showIcon
            className="mb-4"
          />

          <Row gutter={16}>
            {/* 左侧：P + I */}
            <Col span={12}>
              <Form.Item
                label={
                  <span className="text-base font-semibold">
                    P - 人群 (Population)
                    <Tooltip title="研究对象的特征，如年龄、性别、疾病类型等。可以包含主要人群和亚组人群。">
                      <QuestionCircleOutlined className="ml-2 text-gray-400" />
                    </Tooltip>
                  </span>
                }
                name={['picoCriteria', 'P']}
                rules={[{ required: true, message: '请输入人群标准' }]}
              >
                <TextArea
                  rows={10}
                  placeholder="例如：&#10;Patients with non-cardioembolic ischemic stroke (NCIS) 非心源性缺血性卒中、亚洲人群&#10;亚组人群：&#10;1. NIHSS评分亚组卒中人群（mild/moderate stroke）&#10;2. 不同TOAST分型（different TOAST subtypes，excluding cardioembolic stroke）&#10;3. 高危TIA人群（high-risk TIA population）&#10;..."
                  className="font-mono text-sm"
                />
              </Form.Item>

              <Form.Item
                label={
                  <span className="text-base font-semibold">
                    I - 干预 (Intervention)
                    <Tooltip title="研究的干预措施或暴露因素">
                      <QuestionCircleOutlined className="ml-2 text-gray-400" />
                    </Tooltip>
                  </span>
                }
                name={['picoCriteria', 'I']}
                rules={[{ required: true, message: '请输入干预措施' }]}
              >
                <TextArea
                  rows={5}
                  placeholder="例如：抗血小板治疗药物（阿司匹林，氯吡格雷等）、抗凝药物（华法林等）、溶栓药物（阿替普酶等）"
                  className="font-mono text-sm"
                />
              </Form.Item>
            </Col>

            {/* 右侧：C + O + S */}
            <Col span={12}>
              <Form.Item
                label={
                  <span className="text-base font-semibold">
                    C - 对照 (Comparison)
                    <Tooltip title="对照组的干预措施">
                      <QuestionCircleOutlined className="ml-2 text-gray-400" />
                    </Tooltip>
                  </span>
                }
                name={['picoCriteria', 'C']}
                rules={[{ required: true, message: '请输入对照措施' }]}
              >
                <TextArea
                  rows={5}
                  placeholder="例如：安慰剂、常规治疗、其他药物对照等"
                  className="font-mono text-sm"
                />
              </Form.Item>

              <Form.Item
                label={
                  <span className="text-base font-semibold">
                    O - 结局 (Outcome)
                    <Tooltip title="研究的主要结局指标（可选）">
                      <QuestionCircleOutlined className="ml-2 text-gray-400" />
                    </Tooltip>
                  </span>
                }
                name={['picoCriteria', 'O']}
              >
                <TextArea
                  rows={5}
                  placeholder="例如：卒中进展、卒中复发、死亡、NIHSS评分变化、疗效、安全性等"
                  className="font-mono text-sm"
                />
              </Form.Item>

              <Form.Item
                label={
                  <span className="text-base font-semibold">
                    S - 研究设计 (Study Design)
                    <Tooltip title="纳入的研究类型">
                      <QuestionCircleOutlined className="ml-2 text-gray-400" />
                    </Tooltip>
                  </span>
                }
                name={['picoCriteria', 'S']}
                rules={[{ required: true, message: '请输入研究设计' }]}
              >
                <Input
                  placeholder="例如：系统评价（SR）、随机对照试验（RCT）、真实世界研究（RWE）、观察性研究（OBS）"
                  className="font-mono text-sm"
                />
              </Form.Item>
            </Col>
          </Row>

          <Divider />

          {/* 纳入标准 & 排除标准 - 并排显示 */}
          <Row gutter={16}>
            <Col span={12}>
              <Form.Item
                label={
                  <span className="text-base font-semibold">
                    纳入标准
                    <Tooltip title="文献必须满足的条件才能被纳入">
                      <QuestionCircleOutlined className="ml-2 text-gray-400" />
                    </Tooltip>
                  </span>
                }
                name="inclusionCriteria"
                rules={[{ required: true, message: '请输入纳入标准' }]}
              >
                <TextArea
                  rows={10}
                  placeholder="详细的纳入标准，例如：&#10;1. 非心源性缺血性卒中、亚洲患者&#10;2. 包含二级预防相关研究&#10;3. 涉及抗血小板或抗凝药物&#10;4. 研究类型：SR、RCT、RWE、OBS&#10;5. 近五年（2020年之后）的文献&#10;..."
                  className="font-mono text-sm"
                />
              </Form.Item>
            </Col>

            <Col span={12}>
              <Form.Item
                label={
                  <span className="text-base font-semibold">
                    排除标准
                    <Tooltip title="满足这些条件的文献将被排除">
                      <QuestionCircleOutlined className="ml-2 text-gray-400" />
                    </Tooltip>
                  </span>
                }
                name="exclusionCriteria"
                rules={[{ required: true, message: '请输入排除标准' }]}
              >
                <TextArea
                  rows={10}
                  placeholder="详细的排除标准，例如：&#10;1. 心源性卒中患者、非亚洲人群&#10;2. 急性期治疗研究（无二级预防关键词）&#10;3. 病例报告、会议摘要&#10;4. 非中英文文献&#10;5. 混合人群研究&#10;..."
                  className="font-mono text-sm"
                />
              </Form.Item>
            </Col>
          </Row>

          <Divider />

          {/* 筛选风格 */}
          <Form.Item
            label={<span className="text-base font-semibold">筛选风格</span>}
            name="screeningStyle"
            extra="提示：初筛推荐宽松模式，精筛推荐严格模式"
          >
            <Radio.Group size="large">
              <Space direction="vertical" className="w-full">
                <Radio value="lenient">
                  🔓 宽松模式 - 初筛推荐，宁可多纳入不错过
                </Radio>
                <Radio value="standard">
                  ⚖️ 标准模式（推荐）- 平衡准确率和召回率
                </Radio>
                <Radio value="strict">
                  🔒 严格模式 - 精筛推荐，保证质量
                </Radio>
              </Space>
            </Radio.Group>
          </Form.Item>
        </Card>

        {/* 步骤2: 导入文献 */}
        <Card title="步骤2: 导入文献" className="mb-6">
          <div className="text-center">
            <Dragger
              accept=".xlsx,.xls"
              maxCount={1}
              fileList={fileList}
              beforeUpload={handleFileUpload}
              onRemove={() => {
                setFileList([]);
                setLiteratureCount(0);
                setCanStart(false);
              }}
            >
              <p className="ant-upload-drag-icon">
                <InboxOutlined style={{ fontSize: 48, color: '#1890ff' }} />
              </p>
              <p className="ant-upload-text">点击或拖拽Excel文件到此区域</p>
              <p className="ant-upload-hint">
                支持 .xlsx 和 .xls 格式，必须包含 Title 和 Abstract 列
              </p>
            </Dragger>

            <div className="mt-4">
              <Button
                icon={<DownloadOutlined />}
                onClick={handleDownloadTemplate}
              >
                下载Excel模板
              </Button>
            </div>

            {literatureCount > 0 && (
              <Alert
                message={`已导入 ${literatureCount} 篇文献`}
                type="success"
                showIcon
                className="mt-4"
              />
            )}
          </div>
        </Card>
      </Form>

      {/* 启动按钮 */}
      <div className="text-center">
        <Button
          type="primary"
          size="large"
          icon={<PlayCircleOutlined />}
          onClick={handleStartScreening}
          disabled={!canStart}
          className="px-12"
        >
          {canStart ? '开始AI筛选' : '请先导入文献'}
        </Button>
      </div>
    </div>
  );
};

export default TitleScreeningSettings;

