from typing import Literal, Annotated
from pydantic import Field


ChineseEthnicGroup = Annotated[
    Literal[
        "汉族",
        "蒙古族",
        "回族",
        "藏族",
        "维吾尔族",
        "苗族",
        "彝族",
        "壮族",
        "布依族",
        "朝鲜族",
        "满族",
        "侗族",
        "瑶族",
        "白族",
        "土家族",
        "哈尼族",
        "哈萨克族",
        "傣族",
        "黎族",
        "傈僳族",
        "佤族",
        "畲族",
        "高山族",
        "拉祜族",
        "水族",
        "东乡族",
        "纳西族",
        "景颇族",
        "柯尔克孜族",
        "土族",
        "达斡尔族",
        "仫佬族",
        "羌族",
        "布朗族",
        "撒拉族",
        "毛南族",
        "仡佬族",
        "锡伯族",
        "阿昌族",
        "普米族",
        "塔吉克族",
        "怒族",
        "乌孜别克族",
        "俄罗斯族",
        "鄂温克族",
        "德昂族",
        "保安族",
        "裕固族",
        "京族",
        "塔塔尔族",
        "独龙族",
        "鄂伦春族",
        "赫哲族",
        "门巴族",
        "珞巴族",
        "基诺族",
    ],
    Field(
        title="民族",
        description="中国国务院公布的 56 个法定民族之一。",
    ),
]


ChineseProvinceLevelRegion = Annotated[
    Literal[
        # 4 个直辖市
        "北京",
        "天津",
        "上海",
        "重庆",
        # 23 个省
        "河北",
        "山西",
        "辽宁",
        "吉林",
        "黑龙江",
        "江苏",
        "浙江",
        "安徽",
        "福建",
        "江西",
        "山东",
        "河南",
        "湖北",
        "湖南",
        "广东",
        "海南",
        "四川",
        "贵州",
        "云南",
        "陕西",
        "甘肃",
        "青海",
        "台湾",
        # 5 个自治区
        "西藏",
        "内蒙古",
        "广西",
        "宁夏",
        "新疆",
        # 2 个特别行政区
        "香港",
        "澳门",
    ],
    Field(
        title="省级行政区",
        description="中国现行省级行政区（省、自治区、直辖市、特别行政区）。",
    ),
]


ChineseGender = Annotated[
    Literal[
        "男",
        "女",
    ],
    Field(
        title="性别",
        description="中国居民信息登记中常用的性别分类。",
    ),
]


ChineseMaritalStatus = Annotated[
    Literal[
        "未婚",
        "已婚",
        "丧偶",
        "离婚",
        "再婚",
    ],
    Field(
        title="婚姻状况",
        description="中国居民信息登记中常用的婚姻状况分类。",
    ),
]


ChineseEducationLevel = Annotated[
    Literal[
        "无学历",
        "小学",
        "初中",
        "高中",
        "中专",
        "大专",
        "本科",
        "硕士",
        "博士",
    ],
    Field(
        title="文化程度",
        description="中国居民信息登记中常用的文化程度分类。",
    ),
]
