import json
import os

mapping = {
    # 编程技术
    "软件工程，glue_coding_用提示词": "编程技术",
    "前端复刻流程": "编程技术",
    "输入转单行JSON": "编程技术",
    "序列图生成": "编程技术",
    "流程图": "编程技术",
    "函数化万物": "编程技术",
    "编程知识库": "编程技术",
    "网页UI逆向分析提示词": "编程技术",
    "用户优化前端设计": "编程技术",
    "图像特征提取": "编程技术",
    "前端通用设计": "编程技术",

    # 逻辑工具箱
    "哲学工具箱": "逻辑工具箱",
    "逻辑工具箱": "逻辑工具箱",
    "批判性思维分析": "逻辑工具箱",
    "思维模型": "逻辑工具箱",
    "政治批判工具箱": "逻辑工具箱",
    "未来视角": "逻辑工具箱",
    "层级结构分析": "逻辑工具箱",
    "问题分类识别": "逻辑工具箱",
    "分析": "逻辑工具箱",
    "终极本质分析": "逻辑工具箱",
    "事实核查": "逻辑工具箱",
    "关键词图谱": "逻辑工具箱",
    "语言分析元prompt": "逻辑工具箱",
    "逻辑分析": "逻辑工具箱",
    "黄金圈解释": "逻辑工具箱",
    "谋士": "逻辑工具箱",
    "经验": "逻辑工具箱",
    "道": "逻辑工具箱",
    "法": "逻辑工具箱",
    "术": "逻辑工具箱",
    "器": "逻辑工具箱",
    "心经口诀创作提示词": "逻辑工具箱",
    "临界知识": "逻辑工具箱",
    "项目分析": "逻辑工具箱",
    "对话提问": "逻辑工具箱",
    "思维导图": "逻辑工具箱",

    # 内容创作
    "文案逆向": "内容创作",
    "x_prompt收集": "内容创作",
    "x提示词收集": "内容创作",
    "x爆款文案生成器": "内容创作",
    "推文制作提示词": "内容创作",
    "李继刚文选": "内容创作",
    "解释提示词": "内容创作",
    "一句话描述任何内容": "内容创作",
    "子弹总结": "内容创作",
    "文本转md语法电子书处理": "内容创作",
    "排版和图片，视频转文本": "内容创作",
    "艺术风格描述": "内容创作",
    "视频生成提示词": "内容创作",
    "图片逆向": "内容创作",
    "排版": "内容创作",
    "内容提炼": "内容创作",
    "简讯提示词": "内容创作",
    "艺术": "内容创作",
    "人话写作": "内容创作",
    "小红书": "内容创作",
    "组织语言": "内容创作",
    "正向人物生平报告官方文案": "内容创作",
    "gemini字幕处理": "内容创作",

    # 学习教育
    "学习提示词": "学习教育",
    "学习用提示词": "学习教育",
    "ai学习用提示词": "学习教育",
    "书籍结构化分析": "学习教育",
    "典籍句子学习": "学习教育",
    "anki卡片格式输出": "学习教育",
    "notebookllm用提示词": "学习教育",
    "英文学习": "学习教育",
    "速成学习": "学习教育",
    "论文解读": "学习教育",
    "真传一句话": "学习教育",
    "学习音频": "学习教育",
    "豆包听书": "学习教育",
    "最小知识框架": "学习教育",

    # 商业分析
    "grok商业金融分析提示词": "商业分析",
    "投资调研": "商业分析",
    "行业分析": "商业分析",
    "需求对齐": "商业分析",
    "需求结构化描述": "商业分析",
    "麦肯锡行业分析": "商业分析",
    "产品策略": "商业分析",
    "行业咨询": "商业分析",
    "需求解析": "商业分析",
    "SOP制作": "商业分析",

    # 提示词工程
    "元提示词": "提示词工程",
    "提示词模块": "提示词工程",
    "根据内容逆向提示词": "提示词工程",
    "系统提示词": "提示词工程",
    "AI使用思维": "提示词工程",
    "使用ai的思维": "提示词工程",
    "最小字数系统提示词": "提示词工程",
    "ChatGPT": "提示词工程",
    "Reddit提示词": "提示词工程",
    "好prompt生成器": "提示词工程",
    "思维协议": "提示词工程",
    "grok抓取提示词": "提示词工程",

    # 其他
    "AI_交易系统提示词": "综合杂项",
    "面向CZ": "综合杂项",
}

id_map = {
    "编程技术": 1,
    "逻辑工具箱": 2,
    "内容创作": 3,
    "学习教育": 4,
    "商业分析": 5,
    "提示词工程": 6,
    "综合杂项": 7
}

input_file = "prompt_jsonl/prompt_docs_2025_1222_004537.jsonl"
output_file = "prompt_jsonl/prompt_docs_refactored.jsonl"

def process():
    stats = {}
    with open(input_file, 'r', encoding='utf-8') as fin, \
         open(output_file, 'w', encoding='utf-8') as fout:
        for line in fin:
            if not line.strip(): continue
            data = json.loads(line)
            old_cat = data.get('category', '')
            new_cat = mapping.get(old_cat, "综合杂项")
            
            # Keep original category in tags if it doesn't exist?
            # Or just replace. The user said "只调整 'category'"
            data['category'] = new_cat
            data['category_id'] = id_map.get(new_cat, 7)
            
            fout.write(json.dumps(data, ensure_ascii=False) + '\n')
            stats[new_cat] = stats.get(new_cat, 0) + 1
            
    print("Refactor complete.")
    for cat, count in stats.items():
        print(f"{cat}: {count}")

if __name__ == "__main__":
    process()
