33b4c734aa
后端: - 新增认证(auth)、任务(tasks)、映射(mappings)、对账(reconciliation)、异常(exceptions)、导出(exports) API - 新增核心模块: database, security, permissions, tenant, exceptions, error_handlers - 新增数据模型: user, company, reconciliation_task, field_mapping, uploaded_file 等 - 新增服务层: ai_recognizer, file_parser, file_storage, mapping, reconciliation 等 - 添加数据库迁移脚本 前端: - 新增登录页面和仪表盘页面 - 新增任务列表、任务详情、字段映射页面 - 新增异常处理页面和规则设置页面 - 新增 API 代理路由 /api/[...path] - 新增 UI 组件库 (button, card, dialog, input, table 等) - 新增 auth 组件 (ProtectedRoute, PermissionGate) - 新增 layout 组件 (Header, Sidebar) - 新增 mapping 组件 (FieldMappingTable, AISuggestionPanel) - 新增 API 客户端和 hooks (useAsync, useToast, usePermission 等) - 新增状态管理 (auth-store, company-store, ui-store) - 集成 Tailwind CSS 和 shadcn/ui 组件库 其他: - 添加 Alembic 数据库迁移配置 - 添加初始化示例数据脚本 - 更新项目文档
130 lines
4.9 KiB
Python
130 lines
4.9 KiB
Python
"""
|
|
标准字段定义
|
|
|
|
定义工资表、社保表、个税表的标准字段
|
|
"""
|
|
|
|
from enum import Enum
|
|
|
|
|
|
class StandardField(str, Enum):
|
|
"""标准字段枚举"""
|
|
|
|
# ===== 公共字段 =====
|
|
EMPLOYEE_NAME = "员工姓名" # 员工姓名
|
|
EMPLOYEE_ID = "工号" # 工号
|
|
DEPARTMENT = "部门" # 部门
|
|
POSITION = "岗位" # 岗位/职位
|
|
|
|
# ===== 工资表字段 =====
|
|
BASE_SALARY = "基本工资" # 基本工资
|
|
BONUS = "奖金" # 奖金
|
|
ALLOWANCE = "补贴" # 补贴
|
|
OVERTIME_PAY = "加班费" # 加班费
|
|
DEDUCTION = "扣款" # 扣款
|
|
GROSS_SALARY = "应发工资" # 应发工资
|
|
NET_SALARY = "实发工资" # 实发工资/净工资
|
|
BANK_CARD = "银行账号" # 银行账号
|
|
ID_CARD = "身份证号" # 身份证号
|
|
|
|
# ===== 社保表字段 =====
|
|
SOCIAL_SECURITY_BASE = "社保基数" # 社保基数
|
|
PENSION_INSURANCE = "养老保险" # 养老保险(个人)
|
|
MEDICAL_INSURANCE = "医疗保险" # 医疗保险(个人)
|
|
UNEMPLOYMENT_INSURANCE = "失业保险" # 失业保险(个人)
|
|
HOUSING_FUND = "公积金" # 住房公积金(个人)
|
|
PENSION_INSURANCE_COMPANY = "养老保险(公司)" # 养老保险(公司)
|
|
MEDICAL_INSURANCE_COMPANY = "医疗保险(公司)" # 医疗保险(公司)
|
|
UNEMPLOYMENT_INSURANCE_COMPANY = "失业保险(公司)" # 失业保险(公司)
|
|
HOUSING_FUND_COMPANY = "公积金(公司)" # 住房公积金(公司)
|
|
SOCIAL_SECURITY_TOTAL = "社保合计" # 社保合计
|
|
|
|
# ===== 个税表字段 =====
|
|
TAXABLE_INCOME = "应税收入" # 应税收入
|
|
PRE_TAX_DEDUCTION = "税前扣除" # 税前扣除(三险一金等)
|
|
TAX_FREE_INCOME = "免税收入" # 免税收入
|
|
TAX_EXEMPT_INCOME = "税前减免" # 税前减免
|
|
QUICK_DEDUCTION = "速算扣除数" # 速算扣除数
|
|
TAX_AMOUNT = "应缴个税" # 应缴个人所得税
|
|
TAX_PAID = "已缴个税" # 已缴个人所得税
|
|
AFTER_TAX_INCOME = "税后收入" # 税后收入
|
|
|
|
|
|
# 标准字段分组
|
|
FIELD_GROUPS = {
|
|
"公共字段": [
|
|
StandardField.EMPLOYEE_NAME,
|
|
StandardField.EMPLOYEE_ID,
|
|
StandardField.DEPARTMENT,
|
|
StandardField.POSITION,
|
|
],
|
|
"工资表字段": [
|
|
StandardField.BASE_SALARY,
|
|
StandardField.BONUS,
|
|
StandardField.ALLOWANCE,
|
|
StandardField.OVERTIME_PAY,
|
|
StandardField.DEDUCTION,
|
|
StandardField.GROSS_SALARY,
|
|
StandardField.NET_SALARY,
|
|
StandardField.BANK_CARD,
|
|
StandardField.ID_CARD,
|
|
],
|
|
"社保表字段": [
|
|
StandardField.SOCIAL_SECURITY_BASE,
|
|
StandardField.PENSION_INSURANCE,
|
|
StandardField.MEDICAL_INSURANCE,
|
|
StandardField.UNEMPLOYMENT_INSURANCE,
|
|
StandardField.HOUSING_FUND,
|
|
StandardField.PENSION_INSURANCE_COMPANY,
|
|
StandardField.MEDICAL_INSURANCE_COMPANY,
|
|
StandardField.UNEMPLOYMENT_INSURANCE_COMPANY,
|
|
StandardField.HOUSING_FUND_COMPANY,
|
|
StandardField.SOCIAL_SECURITY_TOTAL,
|
|
],
|
|
"个税表字段": [
|
|
StandardField.TAXABLE_INCOME,
|
|
StandardField.PRE_TAX_DEDUCTION,
|
|
StandardField.TAX_FREE_INCOME,
|
|
StandardField.TAX_EXEMPT_INCOME,
|
|
StandardField.QUICK_DEDUCTION,
|
|
StandardField.TAX_AMOUNT,
|
|
StandardField.TAX_PAID,
|
|
StandardField.AFTER_TAX_INCOME,
|
|
],
|
|
}
|
|
|
|
|
|
# 字段类型映射
|
|
FIELD_TYPES = {
|
|
StandardField.EMPLOYEE_NAME.value: "string",
|
|
StandardField.EMPLOYEE_ID.value: "string",
|
|
StandardField.DEPARTMENT.value: "string",
|
|
StandardField.POSITION.value: "string",
|
|
StandardField.BASE_SALARY.value: "number",
|
|
StandardField.BONUS.value: "number",
|
|
StandardField.ALLOWANCE.value: "number",
|
|
StandardField.OVERTIME_PAY.value: "number",
|
|
StandardField.DEDUCTION.value: "number",
|
|
StandardField.GROSS_SALARY.value: "number",
|
|
StandardField.NET_SALARY.value: "number",
|
|
StandardField.BANK_CARD.value: "string",
|
|
StandardField.ID_CARD.value: "string",
|
|
StandardField.SOCIAL_SECURITY_BASE.value: "number",
|
|
StandardField.PENSION_INSURANCE.value: "number",
|
|
StandardField.MEDICAL_INSURANCE.value: "number",
|
|
StandardField.UNEMPLOYMENT_INSURANCE.value: "number",
|
|
StandardField.HOUSING_FUND.value: "number",
|
|
StandardField.PENSION_INSURANCE_COMPANY.value: "number",
|
|
StandardField.MEDICAL_INSURANCE_COMPANY.value: "number",
|
|
StandardField.UNEMPLOYMENT_INSURANCE_COMPANY.value: "number",
|
|
StandardField.HOUSING_FUND_COMPANY.value: "number",
|
|
StandardField.SOCIAL_SECURITY_TOTAL.value: "number",
|
|
StandardField.TAXABLE_INCOME.value: "number",
|
|
StandardField.PRE_TAX_DEDUCTION.value: "number",
|
|
StandardField.TAX_FREE_INCOME.value: "number",
|
|
StandardField.TAX_EXEMPT_INCOME.value: "number",
|
|
StandardField.QUICK_DEDUCTION.value: "number",
|
|
StandardField.TAX_AMOUNT.value: "number",
|
|
StandardField.TAX_PAID.value: "number",
|
|
StandardField.AFTER_TAX_INCOME.value: "number",
|
|
} |