#!/usr/bin/env python3 """批量重分类模板""" import os, re, shutil TEMPLATE_DIR = "/root/.openclaw/workspace/知识库/法律文书模板库/最高人民法院" # 分类映射 CATEGORIES = { "起诉状类": ["181", "187", "196", "203", "216", "224", "353", "361", "370", "379", "318", "752", "14", "379", "754"], "答辩状类": ["216", "224", "753"], "上诉状类": ["14", "379", "754", "613"], "再审类": ["613", "755"], "申请书类": ["22", "51", "59", "66", "74", "76", "79", "82", "87", "91", "102", "113", "118", "126", "131", "133", "137", "139", "141", "143", "159", "231", "235", "241", "250", "272", "280", "287", "293", "299", "402", "407", "432", "466", "469", "473", "476", "479", "485", "492", "499", "507", "513", "521", "526", "534", "538", "545", "554", "560", "564", "571", "591", "594", "602", "616", "622", "625", "630", "632", "635", "637", "654", "763", "764", "765", "766", "768", "769", "770", "771", "772", "773"], "保全类": ["113", "118", "126", "131", "133", "137", "141", "277", "319", "325", "328", "331", "333", "336", "339", "341", "345", "348", "760"], "证据类": ["74", "76", "79", "82", "87", "91", "102", "110", "112", "114", "116", "119", "121", "761"], "执行类": ["4", "10", "12", "18", "20", "24", "28", "31", "35", "40", "43", "49", "54", "58", "61", "63", "65", "69", "75", "77", "164", "166", "169", "173", "175", "179", "184", "190", "193", "197", "204", "208", "212", "221", "228", "248", "255", "258", "262", "266", "270", "275", "282", "286", "290", "295", "300", "302", "304", "306", "309", "311", "312", "316", "320", "322", "327", "332", "338", "342", "346", "349", "352", "354", "357", "360", "362", "365", "372", "374", "376", "377", "380", "382", "394", "403", "405", "409", "411", "417", "420", "427", "431", "434", "437", "438", "441", "443", "445", "447", "449", "452", "454", "457", "461", "463", "467", "484", "490", "494", "498", "501", "503", "508", "512", "524", "527", "539", "543", "549", "553", "639", "640", "642", "646", "648", "651", "652", "653"], "判决书类": ["5", "7", "9", "11", "13", "19", "21", "57", "71", "73", "78", "81", "83", "129", "150", "152", "154", "156", "171", "174", "176", "177", "178", "180", "182", "185", "186", "188", "236", "239", "243", "260", "276", "289", "292", "296", "305", "317", "321", "323", "324", "347", "356", "358", "367", "369", "371", "383", "385", "388", "391", "395", "396", "404", "406", "471", "552", "555"], "裁定书类": ["1", "8", "15", "17", "23", "25", "27", "29", "30", "32", "34", "36", "38", "39", "41", "44", "60", "62", "64", "85", "93", "96", "97", "99", "100", "101", "103", "105", "106", "107", "108", "110", "111", "112", "114", "116", "119", "121", "199", "200", "201", "205", "206", "207", "209", "210", "213", "214", "215", "217", "219", "222", "223", "226", "227", "229", "230", "232", "234", "237", "245", "246", "247", "249", "252", "253", "256", "261", "263", "265", "267", "269", "271", "273", "274", "278", "279", "281", "284", "285", "288", "291", "294", "297", "298", "301", "303", "308", "310", "313", "315", "326", "330", "334", "340", "344", "364", "366", "408", "410", "413", "415", "416", "419", "422", "435", "439", "440", "444", "446", "448", "450", "451", "453", "455", "456", "459", "464", "468", "470", "472", "474", "475", "477", "478", "480", "481", "482", "483", "486", "488", "489", "491", "493", "495", "497", "500", "502", "504", "506", "509", "510", "514", "515", "516", "517", "519", "520", "522", "525", "529", "530", "532", "533", "537", "540", "541", "544", "547", "548", "551", "556", "557", "558", "561", "563", "570", "573", "575", "577", "578", "581", "586", "589", "596", "599", "603", "605", "606", "608", "610", "612", "618", "619", "621", "624", "626", "627", "628", "629", "631", "633", "634", "636", "638", "641", "643", "644", "645", "647", "649", "650", "655", "674", "679", "680", "681", "702", "706", "710", "719", "721", "723", "725", "726", "727", "729", "730", "732", "734", "735", "739", "740", "742", "743", "746", "747", "748", "749", "750", "751", "762", "767"], "调解书类": ["238", "242", "244", "251", "254", "257", "259", "268", "399", "401", "557"], "决定书类": ["92", "95", "146", "155", "418", "421", "423", "426", "429", "523", "528", "531", "542", "550", "558", "561", "570", "587", "591", "597", "601", "606", "609", "611", "719", "721", "723", "725", "726", "729", "734", "735", "739", "740", "742"], "通知书类": ["123", "125", "128", "130", "132", "134", "135", "136", "138", "164", "169", "458", "460", "462", "465", "542", "614", "656", "657", "658", "659", "660", "661", "662", "682", "683", "684", "685", "686", "687", "688", "689", "690", "691", "692", "693", "694", "696", "699", "701", "703", "704", "705", "707", "708", "709", "712", "717", "718", "720", "724", "728", "731", "733"], "函类": ["28", "31", "35", "48", "52", "53", "56", "86", "88", "90", "124", "354", "412", "467", "484", "490", "566", "568", "585", "592", "598", "605", "615", "618", "619", "624", "626", "627", "629", "631", "633", "634", "636", "638", "641", "643", "644", "645", "647", "649", "650", "657", "672", "673", "675", "676", "677", "678", "746", "747", "748", "749", "750", "751"], "笔录类": ["144", "145", "149", "268", "373", "665", "666", "667", "668", "669"], "国家赔偿类": ["436", "446", "487", "515", "525", "529", "541", "550", "558", "573", "621", "695", "697", "698", "700", "702", "706", "710", "719", "721", "723", "725", "726", "727", "729", "730", "740", "742", "743"], } # 反转映射:ID -> 分类 ID_TO_CAT = {} for cat, ids in CATEGORIES.items(): for id in ids: ID_TO_CAT[id] = cat def main(): # 创建分类目录 for cat in CATEGORIES.keys(): os.makedirs(os.path.join(TEMPLATE_DIR, cat), exist_ok=True) os.makedirs(os.path.join(TEMPLATE_DIR, "其他类"), exist_ok=True) # 处理每个文件 other_dir = os.path.join(TEMPLATE_DIR, "其他类") moved = 0 for filename in os.listdir(other_dir): if not filename.endswith('.txt'): continue # 提取ID match = re.match(r'^(\d+)_', filename) if not match: continue uid = match.group(1) category = ID_TO_CAT.get(uid, "其他类") # 移动文件 src = os.path.join(other_dir, filename) dst = os.path.join(TEMPLATE_DIR, category, filename) shutil.move(src, dst) moved += 1 print(f" {filename} -> {category}") print(f"\n完成!已重新分类 {moved} 个模板") if __name__ == "__main__": main()