package com.lanyuanxiaoyao.digtal.market

import cn.hutool.core.date.DateUtil
import com.lanyuanxiaoyao.digtal.market.ai.Chat
import com.lanyuanxiaoyao.digtal.market.ai.QianfanChat
import com.lanyuanxiaoyao.digtal.market.ai.ZhipuChat
import com.lanyuanxiaoyao.squirrel.core.common.Script
import com.lanyuanxiaoyao.squirrel.core.common.ScriptExecutor
import com.lanyuanxiaoyao.squirrel.core.jvm.BINARY_PATH
import com.lanyuanxiaoyao.squirrel.core.jvm.BasicDownloaderFactory
import com.lanyuanxiaoyao.squirrel.core.jvm.ChromeDownloaderFactory
import com.lanyuanxiaoyao.squirrel.core.jvm.DRIVER_PATH
import com.lanyuanxiaoyao.squirrel.core.jvm.HEADLESS
import com.lanyuanxiaoyao.squirrel.core.jvm.JvmManagement
import kotlin.io.path.Path
import kotlinx.coroutines.runBlocking
import org.jsoup.Jsoup
import org.junit.jupiter.api.Test

class Test {
    @Test
    fun testTimestamp() {
        println(
            DateUtil.parse("2018-08-08", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd")
                .toTimestamp()
        )
    }

    @Test
    fun testDownload() {
        val downloader = BasicDownloaderFactory().build(emptyMap())
        runBlocking {
            val result = downloader.download(
                "http://www.gov.cn/xinwen/2023-02/16/content_5741672.htm",
                headers = mapOf(
                    "Content-Type" to "application/json",
                    "Athenaappkey" to "be5qL61qyHKQ87BVlqy%2BwloIkpcL1tCqC4yOM%2F%2BsqaSn0NxuA4GPOWocQu96h0PUaYBe9hz3DVvjGTECMNNou6cjAlUc3UoJlviQAipc4Ha8qxmIeS1sPqdGQ3Unm49j%2BsYN5T%2BzjqKxdA2yz5qLcG5wjZR7rqYVgT98NasByMA%3D",
                    "Athenaappname" to "%E5%9B%BD%E7%BD%91%E6%90%9C%E7%B4%A2",
                ),
                properties = mapOf("post" to "true"),
            )
            println(result)
        }
    }

    @Test
    fun testParse() {
        runBlocking {
            JvmManagement().use { management ->
                management.importSites(sites)
                val code = "74ee6b33-c1a3-41f9-b947-acd0bebd0e6e"
                val url = "https://zfsg.gd.gov.cn/hdjlpt/live/index.php?pid=4141"
                // val url = "https://zfsg.gd.gov.cn/zwgk/zcjd2/index_2.html"
                val result = runBlocking {
                    management.parse(code, url)
                }
                println(result)
                // (result["list"] as List<Map<String, Any>>).forEach {
                //     println(it["link"] as String)
                // }
            }
        }
    }

    @Test
    fun testDateConvert() {
        println(
            DateUtil.parse(
                "2024年09月05日 20:57",
                "yyyy-MM-dd HH:mm:ss",
                "yyyy-MM-dd",
                "yyyy年MM月dd日 HH:mm",
            )
                .toTimestamp()
        )
    }

    @Test
    fun testJsExecute() {
        println(
            ScriptExecutor.executeJsForString(
                Script.Type.Javascript,
                // language=javascript
                "let data = JSON.parse('{\"code\":\"17da70961a7\",\"historySearchWords\":[\"数据&要素\"],\"dataTypeId\":\"107\",\"orderBy\":\"time\",\"searchBy\":\"title\",\"appendixType\":\"\",\"granularity\":\"ALL\",\"trackTotalHits\":true,\"beginDateTime\":\"\",\"endDateTime\":\"\",\"isSearchForced\":0,\"filters\":[],\"pageNo\":1,\"pageSize\":10,\"customFilter\":{\"operator\":\"and\",\"properties\":[]},\"searchWord\":\"数据要素\"}')\nlet index = data?.['pageNo'] ?? 1\ndata['pageNo'] = index + 1\nreturn encodeURIComponent(JSON.stringify(data))",
                // language=text
                "",
                mapOf(),
            )
        )
    }

    @Test
    fun testParseByCss() {
        val url = "https://data.beijing.gov.cn/yscg/gyzz/index.htm"
        val page = runBlocking {
            val downloader = ChromeDownloaderFactory().build(
                mapOf(
                    HEADLESS to "false",
                    BINARY_PATH to "/Users/lanyuanxiaoyao/Downloads/chromium/128/macOS-1289987/Chromium.app/Contents/MacOS/Chromium",
                    DRIVER_PATH to "/Users/lanyuanxiaoyao/Downloads/chromium/128/macOS-1289987/chromedriver",
                )
            )
            val result = downloader.download(url)
            downloader.destroy()
            result
        }
        // println(page)
        val document = Jsoup.parse(page)
        document.select("a.gpTextArea")
            .forEach {
                println("[${it.text()}](${"https://data.beijing.gov.cn/yscg/gyzz/${it.attr("href")}".replace("gyzz/../", "")})")
            }
    }

    @Test
    fun testCompressUrl() {
        val url = "https://data.beijing.gov.cn/yscg/gyzz/../xdny/index.htm"
        println(
            Path("/yscg/gyzz/../xdny/index.htm").normalize()
                .toString()
        )
    }

    @Test
    fun testZhipu() {
        val zhipu = ZhipuChat("d1e97306540d12bb2f834be961fcacb1.SNBShlCxWYJCx0qZ")
        println(
            zhipu.ask(
                // language=text
                Chat.Companion.SystemMessage("作为新闻编辑，您需要总结和归类时事新闻，并按照指定要求撰写一段总述，强调时间、数据、人物、政策、法律等关键信息。请注意，您只能写一段总述，不能分点或分段，也不能添加任何其他与内容无关的提示性文字，内容字数在300到500字。"),
                // language=text
                Chat.Companion.UserMessage("北斗多频定位芯片、低空无人机遥感网、南粤古驿道VR体验、AI训练服务器……5月24日，第七届数字中国建设峰会在福建福州启幕。广东作为主宾省之一参加本届峰会，携超40项数字化发展最新成果亮相峰会现场体验区。 　　“本次广东展区面积约330㎡，设置了数字政府专区、行业专区、地市专区、企业专区四大主题区域，涵盖数据要素市场化配置改革、数字经济、数字政府、数字社会等领域。”广东省政务服务和数据管理局相关负责人介绍。 　　走进广东展区，观众嘉宾们可以感受到“粤系列”移动政务服务平台的高效便捷，还能深入了解超大城市运行和治理智能中枢，近距离接触数字化龙头企业的AI训练服务器、高性能芯片、量子安全通话等高精尖数字产品，并体验AR、VR、5G等前沿技术带来的沉浸式感受…… 　　“把VR技术和文旅古迹结合的创意很好，这次体验让我第一次了解南粤古驿道，希望未来能实地去走访。”福州市民何女士一走进峰会现场体验区就被广东展区的“南粤古驿道数字化保护成果”吸引了，迫不及待与伙伴一同排队体验。 　　“我们综合运用无人机航空摄影、倾斜摄影三维建模、360度实景移动测量等多源遥感技术，完成对南粤古驿道沿线数字正射影像、实景三维模型、实景影像数据采集，打造出南粤古驿道空间大数据平台，让南粤古驿道实现从‘现实世界’到‘虚拟空间’的数字孪生。”广东省地图院罗智伟说。 　　不只展现数字化技术的应用成果，数据要素也是本届峰会的重点之一。如今，数据已成为推动经济社会高质量发展的关键动力，2021年，广东在全国率先印发数据要素市场化配置改革行动方案，明确“1+2+3+X”的改革思路，构建两级数据要素市场体系。 　　本次参展的广州数据交易所，是广东省数据要素市场体系的枢纽。“我们基于智能交通、水产、陶瓷、电子制造等行业较为成熟的产业链平台，建设行业数据空间，推动行业数据产品批量挂牌和上架交易。”广州数据交易所总经理助理邹咸宇说，“此次峰会突出展现了数据要素乘数作用，让我们对建设好数据交易所、进一步释放数据要素作用充满信心和动力。”"),
            )
        )
    }

    @Test
    fun testQianfan() {
        val qianfan = QianfanChat("ALTAKgPKxinDKjx8DjPTJIR53h", "593a239482ec43cb81693e0c0883baf8")
        println(
            qianfan.ask(
                // language=text
                Chat.Companion.SystemMessage("作为新闻编辑，您需要总结和归类时事新闻，并按照指定要求撰写一段总述，强调时间、数据、人物、政策、法律等关键信息。请注意，您只能写一段总述，不能分点或分段，也不能添加任何其他与内容无关的提示性文字，内容字数在300到500字。"),
                // language=text
                Chat.Companion.UserMessage("北斗多频定位芯片、低空无人机遥感网、南粤古驿道VR体验、AI训练服务器……5月24日，第七届数字中国建设峰会在福建福州启幕。广东作为主宾省之一参加本届峰会，携超40项数字化发展最新成果亮相峰会现场体验区。 　　“本次广东展区面积约330㎡，设置了数字政府专区、行业专区、地市专区、企业专区四大主题区域，涵盖数据要素市场化配置改革、数字经济、数字政府、数字社会等领域。”广东省政务服务和数据管理局相关负责人介绍。 　　走进广东展区，观众嘉宾们可以感受到“粤系列”移动政务服务平台的高效便捷，还能深入了解超大城市运行和治理智能中枢，近距离接触数字化龙头企业的AI训练服务器、高性能芯片、量子安全通话等高精尖数字产品，并体验AR、VR、5G等前沿技术带来的沉浸式感受…… 　　“把VR技术和文旅古迹结合的创意很好，这次体验让我第一次了解南粤古驿道，希望未来能实地去走访。”福州市民何女士一走进峰会现场体验区就被广东展区的“南粤古驿道数字化保护成果”吸引了，迫不及待与伙伴一同排队体验。 　　“我们综合运用无人机航空摄影、倾斜摄影三维建模、360度实景移动测量等多源遥感技术，完成对南粤古驿道沿线数字正射影像、实景三维模型、实景影像数据采集，打造出南粤古驿道空间大数据平台，让南粤古驿道实现从‘现实世界’到‘虚拟空间’的数字孪生。”广东省地图院罗智伟说。 　　不只展现数字化技术的应用成果，数据要素也是本届峰会的重点之一。如今，数据已成为推动经济社会高质量发展的关键动力，2021年，广东在全国率先印发数据要素市场化配置改革行动方案，明确“1+2+3+X”的改革思路，构建两级数据要素市场体系。 　　本次参展的广州数据交易所，是广东省数据要素市场体系的枢纽。“我们基于智能交通、水产、陶瓷、电子制造等行业较为成熟的产业链平台，建设行业数据空间，推动行业数据产品批量挂牌和上架交易。”广州数据交易所总经理助理邹咸宇说，“此次峰会突出展现了数据要素乘数作用，让我们对建设好数据交易所、进一步释放数据要素作用充满信心和动力。”"),
            )
        )
    }
}
