// package main

// import (
// 	"encoding/json"
// 	"fmt"
// 	"io"
// 	"log"
// 	"net/http"
// 	"strings"

// 	// 使用纯 Go 的 SQLite 驱动，免除 CGO 和 GCC 依赖报错
// 	"github.com/glebarez/sqlite"
// 	"gorm.io/gorm"
// )

// // ---- 1. 定义读取 JSON 用的结构体 ----

// type JSONResponse struct {
// 	ResponseCode string   `json:"responseCode"`
// 	ResponseData RespData `json:"responseData"`
// }

// type RespData struct {
// 	Datas []QuestionData `json:"datas"`
// }

// type QuestionData struct {
// 	QueId           int              `json:"queId"`
// 	Stem            string           `json:"stem"` // 单选题将 stem 存为 nr
// 	QuestionAnswers []QuestionAnswer `json:"questionAnswers"`
// }

// type QuestionAnswer struct {
// 	AnswerDesc string `json:"answerDesc"`
// 	IsCorrect  int    `json:"isCorrect"`
// }

// // ---- 2. 定义对应 SQLite 的 GORM 模型 ----

// type Xuanze struct {
// 	ID int    `gorm:"column:id;primaryKey"`
// 	Nr string `gorm:"column:nr"`
// 	Da string `gorm:"column:da"`
// }

// // TableName 指定绑定的表名
// func (Xuanze) TableName() string {
// 	return "xuanze"
// }

// func main() {
// 	// ==================== 第一步：发送单选题的网络请求 ====================
// 	client := &http.Client{}
// 	// 这里更新了你的单选题 data 参数
// 	var data = strings.NewReader(`rows=200&page=1&ownerId=102404796&btId=102404796&queTypeCode=SC&clickQueId=240677025`)
// 	req, err := http.NewRequest("POST", "https://sia.sinopec.com/ac/seiPracController/querySeiPracQuestionForPage.do", data)
// 	if err != nil {
// 		log.Fatalf("创建请求失败: %v", err)
// 	}

// 	// 设置你最新的 Headers 和 Cookie
// 	req.Header.Set("Accept", "application/json, text/plain, */*")
// 	req.Header.Set("Accept-Language", "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6")
// 	req.Header.Set("Access-Control-Allow-Origin", "*")
// 	req.Header.Set("Authorization", "00000-181M")
// 	req.Header.Set("Connection", "keep-alive")
// 	req.Header.Set("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8")
// 	req.Header.Set("Origin", "https://sia.sinopec.com")
// 	req.Header.Set("Referer", "https://sia.sinopec.com/mobile/")
// 	req.Header.Set("Sec-Fetch-Dest", "empty")
// 	req.Header.Set("Sec-Fetch-Mode", "cors")
// 	req.Header.Set("Sec-Fetch-Site", "same-origin")
// 	req.Header.Set("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36 Edg/150.0.0.0")
// 	req.Header.Set("sec-ch-ua", `"Not;A=Brand";v="8", "Chromium";v="150", "Microsoft Edge";v="150"`)
// 	req.Header.Set("sec-ch-ua-mobile", "?0")
// 	req.Header.Set("sec-ch-ua-platform", `"Windows"`)
// 	req.Header.Set("Cookie", "accessId=839d6250-5041-11ee-96f3-ef2d7900d919; x-forwarded-for=null; zshIo=https%3A%2F%2Fsia.sinopec.com%2Fmobile%2F%23%2Fapp%2Fautonomous%2Ftest%2Fpractice%2Ftopics%3FqbId%3D263%26titleName%3D7%25E7%259F%25B3%25E5%25B7%25A5%25E5%25BB%25BA%252F%25E4%25B8%2593%25E4%25B8%259A%25E7%259F%25A5%25E8%25AF%2586%26domainId%3D6026f6138212ebda9f65e27591ac399f; types=0; Admin-Token=00000-181M; LEARNSSIONID=ccdc9e86-f458-472e-a31c-5ff82876f93f; pageViewNum=4; SERVERID=08454d75353b657bc1b9c1181db254db|1783943904|1783941591")

// 	resp, err := client.Do(req)
// 	if err != nil {
// 		log.Fatalf("发送请求失败: %v", err)
// 	}
// 	defer resp.Body.Close()

// 	bodyText, err := io.ReadAll(resp.Body)
// 	if err != nil {
// 		log.Fatalf("读取响应失败: %v", err)
// 	}

// 	// ==================== 第二步：解析返回的 JSON ====================
// 	var apiResponse JSONResponse
// 	err = json.Unmarshal(bodyText, &apiResponse)
// 	if err != nil {
// 		log.Fatalf("JSON 解析失败: %v", err)
// 	}

// 	// ==================== 第三步：连接数据库并写入 ====================
// 	db, err := gorm.Open(sqlite.Open("osecdtzx_question.db"), &gorm.Config{})
// 	if err != nil {
// 		log.Fatalf("数据库连接失败: %v", err)
// 	}

// 	// 自动检查并迁移表结构
// 	db.AutoMigrate(&Xuanze{})

// 	// 准备批量插入的数据切片
// 	var rowsToInsert []Xuanze

// 	for _, item := range apiResponse.ResponseData.Datas {
// 		// 1. 寻找正确答案文本 (isCorrect == 1)
// 		daText := ""
// 		for _, ans := range item.QuestionAnswers {
// 			if ans.IsCorrect == 1 {
// 				daText = ans.AnswerDesc
// 				break // 找到单选正确答案，跳出当前题目的选项循环
// 			}
// 		}

// 		// 2. 清洗可能残存的二次转义字符
// 		cleanStem := strings.ReplaceAll(item.Stem, `\n`, "\n")
// 		cleanStem = strings.ReplaceAll(cleanStem, `\r\n`, "\n")

// 		// 3. 构建模型
// 		row := Xuanze{
// 			ID: item.QueId, // 对应 id 字段
// 			Nr: cleanStem,  // 单选题 nr 对应 stem
// 			Da: daText,     // da 对应正确选项内容
// 		}
// 		rowsToInsert = append(rowsToInsert, row)
// 	}

// 	// 执行批量存入
// 	if len(rowsToInsert) > 0 {
// 		// 使用 db.Save 可以在遇到重复 id 时做“更新”操作，防止主键冲突报错
// 		result := db.Save(&rowsToInsert)
// 		if result.Error != nil {
// 			log.Fatalf("数据保存进数据库失败: %v", result.Error)
// 		}
// 		fmt.Printf("🎉 单选题处理成功！已写入/更新 %d 条题目数据。\n", result.RowsAffected)
// 	} else {
// 		fmt.Println("⚠️ 未在接口返回中解析到有效的单选题数据。")
// 	}
// }
