feat: 税务合规智能体—税负监控+发票校验+社保比对
This commit is contained in:
@@ -592,3 +592,66 @@ class ExpenseReimbursement(Base):
|
||||
created_by = Column(String(100), nullable=True, comment="提交人")
|
||||
created_at = Column(DateTime, server_default=func.now())
|
||||
updated_at = Column(DateTime, server_default=func.now(), onupdate=func.now())
|
||||
|
||||
|
||||
# ============================================================
|
||||
# 税务合规智能体 (2026-08)
|
||||
# ① 税负监控 ② 发票校验 ③ 社保比对
|
||||
# ============================================================
|
||||
|
||||
class TaxRecord(Base):
|
||||
"""税务记录 — 税负监控:应纳税额/实缴额/税负率 vs 行业基准"""
|
||||
__tablename__ = "tax_records"
|
||||
id = Column(Integer, primary_key=True, index=True)
|
||||
entity_id = Column(Integer, default=1, comment="企业ID")
|
||||
period = Column(String(20), nullable=False, comment="期间 YYYY-MM")
|
||||
tax_type = Column(String(30), nullable=False, comment="税种: vat增值税/income所得税/surtax附加税")
|
||||
tax_payable = Column(Float, default=0, comment="应纳税额")
|
||||
tax_paid = Column(Float, default=0, comment="实缴税额")
|
||||
tax_rate = Column(Float, nullable=True, comment="适用税率 %")
|
||||
income = Column(Float, default=0, comment="当期收入/计税收入(税负率分母)")
|
||||
tax_burden_rate = Column(Float, nullable=True, comment="税负率 % = 实缴税额/收入×100")
|
||||
burden_status = Column(String(20), default="normal", comment="normal正常/warning超基准±20%内/alert超基准±20%")
|
||||
warning_msg = Column(String(500), nullable=True, comment="预警信息")
|
||||
remark = Column(String(500), nullable=True, comment="备注")
|
||||
created_at = Column(DateTime, server_default=func.now())
|
||||
updated_at = Column(DateTime, server_default=func.now(), onupdate=func.now())
|
||||
|
||||
|
||||
class InvoiceCheck(Base):
|
||||
"""发票校验 — 录入后按规则自动校验:号码格式/金额匹配报销单/供应商匹配合同"""
|
||||
__tablename__ = "invoice_check"
|
||||
id = Column(Integer, primary_key=True, index=True)
|
||||
entity_id = Column(Integer, default=1, comment="企业ID")
|
||||
invoice_no = Column(String(50), nullable=False, comment="发票号码")
|
||||
amount = Column(Float, nullable=False, comment="发票金额")
|
||||
invoice_type = Column(String(30), default="vat", comment="发票类型: vat专用/vat普通/electronic电子/other其他")
|
||||
invoice_date = Column(DateTime, nullable=True, comment="开票日期")
|
||||
supplier = Column(String(200), nullable=True, comment="供应商名称")
|
||||
reimb_no = Column(String(50), nullable=True, comment="关联报销单号")
|
||||
contract_no = Column(String(50), nullable=True, comment="关联合同编号")
|
||||
check_status = Column(String(20), default="pending", comment="校验状态: pending待校验/valid通过/invalid异常/warning提醒")
|
||||
check_result = Column(JSON, nullable=True, comment="校验明细: [{rule, passed, message}]")
|
||||
check_reason = Column(String(1000), nullable=True, comment="异常原因汇总")
|
||||
checked_at = Column(DateTime, nullable=True, comment="校验时间")
|
||||
created_at = Column(DateTime, server_default=func.now())
|
||||
updated_at = Column(DateTime, server_default=func.now(), onupdate=func.now())
|
||||
|
||||
|
||||
class SocialSecurity(Base):
|
||||
"""社保缴费记录 — 社保比对:基数与工资匹配/单位缴纳比例/漏缴提醒"""
|
||||
__tablename__ = "social_security"
|
||||
id = Column(Integer, primary_key=True, index=True)
|
||||
entity_id = Column(Integer, default=1, comment="企业ID")
|
||||
employee = Column(String(100), nullable=False, comment="人员姓名")
|
||||
period = Column(String(20), nullable=False, comment="期间 YYYY-MM")
|
||||
base_amount = Column(Float, default=0, comment="缴费基数")
|
||||
salary = Column(Float, nullable=True, comment="申报工资")
|
||||
company_amount = Column(Float, default=0, comment="单位缴纳金额")
|
||||
personal_amount = Column(Float, default=0, comment="个人缴纳金额")
|
||||
company_rate = Column(Float, nullable=True, comment="单位缴纳比例 % (养老16%+医疗8%+失业0.5%≈24.5%)")
|
||||
check_status = Column(String(20), default="normal", comment="normal正常/warning基数或比例异常/alert漏缴")
|
||||
warning_msg = Column(String(500), nullable=True, comment="异常提醒: 漏缴/基数不符/比例异常")
|
||||
remark = Column(String(500), nullable=True, comment="备注")
|
||||
created_at = Column(DateTime, server_default=func.now())
|
||||
updated_at = Column(DateTime, server_default=func.now(), onupdate=func.now())
|
||||
|
||||
Reference in New Issue
Block a user