models.py 21.3 KB
from django.db import models
from .named_enum import DocStatus, KeywordsType, RequestTeam, RequestTrigger, FailureReason, ProcessName, WorkflowName

# Create your models here.


# 上传文件记录表/任务表
class UploadDocRecords(models.Model):
    id = models.AutoField(primary_key=True, verbose_name="id")
    metadata_version_id = models.CharField(max_length=64, verbose_name="元数据版本id")  # 索引
    application_id = models.CharField(max_length=64, verbose_name="申请id")
    main_applicant = models.CharField(max_length=16, verbose_name="主申请人")
    co_applicant = models.CharField(max_length=16, verbose_name="共同申请人")
    guarantor_1 = models.CharField(max_length=16, verbose_name="担保人1")
    guarantor_2 = models.CharField(max_length=16, verbose_name="担保人2")
    document_name = models.CharField(max_length=255, verbose_name="文件名")
    document_scheme = models.CharField(max_length=64, verbose_name="文件方案")
    business_type = models.CharField(max_length=64, verbose_name="业务类型")
    data_source = models.CharField(max_length=64, verbose_name="数据源")
    upload_finish_time = models.DateTimeField(verbose_name="上传完成时间")
    update_time = models.DateTimeField(auto_now=True, verbose_name='修改时间')
    create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')

    class Meta:
        managed = False
        db_table = 'upload_doc_records'
        situ_db_label = 'afc'


class HILDoc(models.Model):
    id = models.AutoField(primary_key=True, verbose_name="id")
    metadata_version_id = models.CharField(max_length=64, verbose_name="元数据版本id")
    application_id = models.CharField(max_length=64, verbose_name="申请id")                  # 联合索引
    status = models.SmallIntegerField(default=DocStatus.INIT.value, verbose_name="文件状态")  # 联合索引
    retry_step = models.SmallIntegerField(null=True, verbose_name="重试环节")
    retry_times = models.SmallIntegerField(default=0, verbose_name="重试次数")
    is_retry = models.BooleanField(default=False, verbose_name="是否需要重试")
    # main_applicant = models.CharField(max_length=16, verbose_name="主申请人")
    # co_applicant = models.CharField(max_length=16, verbose_name="共同申请人")
    # guarantor_1 = models.CharField(max_length=16, verbose_name="担保人1")
    # guarantor_2 = models.CharField(max_length=16, verbose_name="担保人2")
    document_name = models.CharField(max_length=255, verbose_name="文件名")
    document_scheme = models.CharField(max_length=64, verbose_name="文件方案")
    data_source = models.CharField(max_length=64, verbose_name="数据源")
    upload_finish_time = models.DateTimeField(verbose_name="上传完成时间")           # 索引
    create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')  # 索引
    start_time = models.DateTimeField(null=True, verbose_name='开始时间')            # 联合索引
    end_time = models.DateTimeField(null=True, verbose_name='结束时间')              # 联合索引
    duration = models.IntegerField(null=True, verbose_name='处理时长')

    bs_count = models.IntegerField(default=0, verbose_name='银行流水处理数目')
    mvi_count = models.IntegerField(default=0, verbose_name='机动车销售统一发票处理数目')
    ic_count = models.IntegerField(default=0, verbose_name='身份证处理数目')
    rp_count = models.IntegerField(default=0, verbose_name='居住证处理数目')
    bc_count = models.IntegerField(default=0, verbose_name='银行卡处理数目')
    bl_count = models.IntegerField(default=0, verbose_name='营业执照处理数目')
    uci_count = models.IntegerField(default=0, verbose_name='二手车发票处理数目')
    eep_count = models.IntegerField(default=0, verbose_name='港澳台通行证处理数目')
    dl_count = models.IntegerField(default=0, verbose_name='行驶证处理数目')
    pp_count = models.IntegerField(default=0, verbose_name='护照处理数目')
    mvc_count = models.IntegerField(default=0, verbose_name='机动车登记证书处理数目')
    vat_count = models.IntegerField(default=0, verbose_name='增值税发票处理数目')

    class Meta:
        managed = False
        db_table = 'hil_doc'


class AFCDoc(models.Model):
    id = models.AutoField(primary_key=True, verbose_name="id")
    metadata_version_id = models.CharField(max_length=64, verbose_name="元数据版本id")
    application_id = models.CharField(max_length=64, verbose_name="申请id")
    status = models.SmallIntegerField(default=DocStatus.INIT.value, verbose_name="文件状态")
    retry_step = models.SmallIntegerField(null=True, verbose_name="重试环节")
    retry_times = models.SmallIntegerField(default=0, verbose_name="重试次数")
    is_retry = models.BooleanField(default=False, verbose_name="是否需要重试")
    # main_applicant = models.CharField(max_length=16, verbose_name="主申请人")
    # co_applicant = models.CharField(max_length=16, verbose_name="共同申请人")
    # guarantor_1 = models.CharField(max_length=16, verbose_name="担保人1")
    # guarantor_2 = models.CharField(max_length=16, verbose_name="担保人2")
    document_name = models.CharField(max_length=255, verbose_name="文件名")
    document_scheme = models.CharField(max_length=64, verbose_name="文件方案")
    data_source = models.CharField(max_length=64, verbose_name="数据源")
    upload_finish_time = models.DateTimeField(verbose_name="上传完成时间")
    create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
    start_time = models.DateTimeField(null=True, verbose_name='开始时间')
    end_time = models.DateTimeField(null=True, verbose_name='结束时间')
    duration = models.IntegerField(null=True, verbose_name='处理时长')

    bs_count = models.IntegerField(default=0, verbose_name='银行流水处理数目')
    mvi_count = models.IntegerField(default=0, verbose_name='机动车销售统一发票处理数目')
    ic_count = models.IntegerField(default=0, verbose_name='身份证处理数目')
    rp_count = models.IntegerField(default=0, verbose_name='居住证处理数目')
    bc_count = models.IntegerField(default=0, verbose_name='银行卡处理数目')
    bl_count = models.IntegerField(default=0, verbose_name='营业执照处理数目')
    uci_count = models.IntegerField(default=0, verbose_name='二手车发票处理数目')
    eep_count = models.IntegerField(default=0, verbose_name='港澳台通行证处理数目')
    dl_count = models.IntegerField(default=0, verbose_name='行驶证处理数目')
    pp_count = models.IntegerField(default=0, verbose_name='护照处理数目')
    mvc_count = models.IntegerField(default=0, verbose_name='机动车登记证书处理数目')
    vat_count = models.IntegerField(default=0, verbose_name='增值税发票处理数目')

    class Meta:
        managed = False
        situ_db_label = 'afc'
        db_table = 'afc_doc'


class GCAPRecords(models.Model):
    id = models.AutoField(primary_key=True, verbose_name="id")
    status = models.IntegerField(null=True, verbose_name='状态')
    rating = models.IntegerField(null=True, verbose_name='排名')
    entity = models.CharField(null=True, max_length=128, verbose_name="业务类型")
    application_id = models.CharField(max_length=64, verbose_name="申请id")
    application_version = models.IntegerField(null=True, verbose_name='申请版本')
    intermediate_decision = models.CharField(null=True, max_length=128, verbose_name="中间决策")
    submit_datetime = models.DateTimeField(null=True, verbose_name='提交时间')
    update_time = models.DateTimeField(auto_now=True, verbose_name='修改时间')
    create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')

    class Meta:
        managed = False
        situ_db_label = 'afc'
        db_table = 'gcap_records'


class PriorityApplication(models.Model):
    id = models.AutoField(primary_key=True, verbose_name="id")
    application_id = models.CharField(max_length=64, verbose_name="申请id")  # 联合索引
    on_off = models.BooleanField(default=True, verbose_name="是否有效")       # 联合索引
    update_time = models.DateTimeField(auto_now=True, verbose_name='修改时间')
    create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')

    class Meta:
        managed = False
        situ_db_label = 'afc'
        db_table = 'priority_application'


class Keywords(models.Model):
    id = models.AutoField(primary_key=True, verbose_name="id")
    keyword = models.CharField(max_length=64, verbose_name="关键词")
    type = models.SmallIntegerField(choices=KeywordsType.get_choices_lst(), verbose_name="类型")
    on_off = models.BooleanField(default=True, verbose_name="是否有效")
    update_time = models.DateTimeField(auto_now=True, verbose_name='修改时间')
    create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')

    class Meta:
        managed = False
        situ_db_label = 'afc'
        db_table = 'keywords'
        verbose_name = '银行流水关键词'
        verbose_name_plural = verbose_name


class Configs(models.Model):
    id = models.AutoField(primary_key=True, verbose_name="id")
    value = models.CharField(max_length=255, verbose_name="配置值")
    comment = models.CharField(max_length=64, verbose_name="说明")

    class Meta:
        managed = False
        situ_db_label = 'afc'
        db_table = 'configs'
        verbose_name = '配置信息'
        verbose_name_plural = verbose_name


# 比对信息表
class AFCComparisonInfo(models.Model):
    id = models.BigAutoField(primary_key=True, verbose_name="id")  # 主键
    uniq_seq = models.CharField(max_length=128, verbose_name="唯一序列号")  # 索引?
    application_id = models.CharField(max_length=64, verbose_name="申请id")  # 索引
    # CUSTOMER_TYPE = ['TCCOR', 'TCDAS', 'TCFRE', 'TCIAS', 'TCIND', 'TCSEP', 'TCURE']
    customer_type = models.CharField(max_length=16, verbose_name="顾客类型")
    application_version = models.SmallIntegerField(default=0, verbose_name="应用版本")
    vehicle_status = models.CharField(max_length=16, verbose_name="车辆状况")  # VEHICLE_STATUS = ['PCUSD', 'PCNEW']

    individual_cus_info = models.TextField(verbose_name="个人信息")

    usedcar_info = models.TextField(null=True, verbose_name="二手车信息")

    corporate_cus_info = models.TextField(null=True, verbose_name="企业信息")

    update_time = models.DateTimeField(auto_now=True, verbose_name='修改时间')
    create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')  # 索引

    class Meta:
        managed = False
        db_table = 'afc_comparison_info'
        situ_db_label = 'afc'


# 比对信息表
class HILComparisonInfo(models.Model):
    id = models.BigAutoField(primary_key=True, verbose_name="id")  # 主键
    uniq_seq = models.CharField(max_length=128, verbose_name="唯一序列号")  # 索引?
    application_id = models.CharField(max_length=64, verbose_name="申请id")  # 索引
    # CUSTOMER_TYPE = ['TCCOR', 'TCDAS', 'TCFRE', 'TCIAS', 'TCIND', 'TCSEP', 'TCURE']
    customer_type = models.CharField(max_length=16, verbose_name="顾客类型")
    application_version = models.SmallIntegerField(default=0, verbose_name="应用版本")
    vehicle_status = models.CharField(max_length=16, verbose_name="车辆状况")  # VEHICLE_STATUS = ['PCUSD', 'PCNEW']

    individual_cus_info = models.TextField(verbose_name="个人信息")

    usedcar_info = models.TextField(null=True, verbose_name="二手车信息")

    corporate_cus_info = models.TextField(null=True, verbose_name="企业信息")

    update_time = models.DateTimeField(auto_now=True, verbose_name='修改时间')
    create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')  # 索引

    class Meta:
        managed = False
        db_table = 'hil_comparison_info'


# OCR结果累计表
class AFCOCRResult(models.Model):
    id = models.AutoField(primary_key=True, verbose_name="id")  # 主键
    application_id = models.CharField(max_length=64, verbose_name="申请id")  # 索引

    bs_ocr = models.TextField(null=True, verbose_name="银行流水")
    mvi_ocr = models.TextField(null=True, verbose_name="机动车销售统一发票")
    ic_ocr = models.TextField(null=True, verbose_name="身份证")
    rp_ocr = models.TextField(null=True, verbose_name="居住证")
    bc_ocr = models.TextField(null=True, verbose_name="银行卡")
    bl_ocr = models.TextField(null=True, verbose_name="营业执照")
    uci_ocr = models.TextField(null=True, verbose_name="二手车发票")
    eep_ocr = models.TextField(null=True, verbose_name="港澳台通行证")
    dl_ocr = models.TextField(null=True, verbose_name="行驶证")
    pp_ocr = models.TextField(null=True, verbose_name="护照")
    mvc_ocr = models.TextField(null=True, verbose_name="机动车登记证")
    vat_ocr = models.TextField(null=True, verbose_name="增值税发票")

    update_time = models.DateTimeField(auto_now=True, verbose_name='修改时间')
    create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')

    class Meta:
        managed = False
        db_table = 'afc_ocr_result'
        situ_db_label = 'afc'


# OCR结果累计表
class HILOCRResult(models.Model):
    id = models.AutoField(primary_key=True, verbose_name="id")  # 主键
    application_id = models.CharField(max_length=64, verbose_name="申请id")  # 索引

    bs_ocr = models.TextField(null=True, verbose_name="银行流水")
    mvi_ocr = models.TextField(null=True, verbose_name="机动车销售统一发票")
    ic_ocr = models.TextField(null=True, verbose_name="身份证")
    rp_ocr = models.TextField(null=True, verbose_name="居住证")
    bc_ocr = models.TextField(null=True, verbose_name="银行卡")
    bl_ocr = models.TextField(null=True, verbose_name="营业执照")
    uci_ocr = models.TextField(null=True, verbose_name="二手车发票")
    eep_ocr = models.TextField(null=True, verbose_name="港澳台通行证")
    dl_ocr = models.TextField(null=True, verbose_name="行驶证")
    pp_ocr = models.TextField(null=True, verbose_name="护照")
    mvc_ocr = models.TextField(null=True, verbose_name="机动车登记证")
    vat_ocr = models.TextField(null=True, verbose_name="增值税发票")

    update_time = models.DateTimeField(auto_now=True, verbose_name='修改时间')
    create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')

    class Meta:
        managed = False
        db_table = 'hil_ocr_result'


# OCR Report
class HILOCRReport(models.Model):
    id = models.AutoField(primary_key=True, verbose_name="id")  # 主键
    case_number = models.CharField(max_length=64, verbose_name="申请id")
    request_team = models.SmallIntegerField(default=RequestTeam.ACCEPTANCE.value, verbose_name="来源")
    request_trigger = models.SmallIntegerField(default=RequestTrigger.POS.value, verbose_name="触发者")
    input_file = models.CharField(max_length=255, verbose_name="文件名")
    transaction_start = models.DateTimeField(verbose_name='开始时间')  # 索引
    transaction_end = models.DateTimeField(verbose_name='结束时间')
    successful_at_this_level = models.BooleanField(default=True, verbose_name="是否成功")
    failure_reason = models.SmallIntegerField(null=True, verbose_name="失败原因")
    process_name = models.SmallIntegerField(default=ProcessName.ALL.value, verbose_name="流程名称")
    total_fields = models.IntegerField(null=True, verbose_name='比对字段数目')
    workflow_name = models.SmallIntegerField(null=True, verbose_name="工作流程")

    class Meta:
        managed = False
        db_table = 'hil_ocr_report'


class AFCOCRReport(models.Model):
    id = models.AutoField(primary_key=True, verbose_name="id")  # 主键
    case_number = models.CharField(max_length=64, verbose_name="申请id")
    request_team = models.SmallIntegerField(default=RequestTeam.ACCEPTANCE.value, verbose_name="来源")
    request_trigger = models.SmallIntegerField(default=RequestTrigger.POS.value, verbose_name="触发者")
    input_file = models.CharField(max_length=255, verbose_name="文件名")
    transaction_start = models.DateTimeField(verbose_name='开始时间')  # 索引
    transaction_end = models.DateTimeField(verbose_name='结束时间')
    successful_at_this_level = models.BooleanField(default=True, verbose_name="是否成功")
    failure_reason = models.SmallIntegerField(null=True, verbose_name="失败原因")
    process_name = models.SmallIntegerField(default=ProcessName.ALL.value, verbose_name="流程名称")
    total_fields = models.IntegerField(null=True, verbose_name='比对字段数目')
    workflow_name = models.SmallIntegerField(null=True, verbose_name="工作流程")

    class Meta:
        managed = False
        db_table = 'afc_ocr_report'
        situ_db_label = 'afc'


class HILCompareReport(models.Model):
    id = models.AutoField(primary_key=True, verbose_name="id")  # 主键
    case_number = models.CharField(max_length=64, verbose_name="申请id")
    request_team = models.SmallIntegerField(default=RequestTeam.ACCEPTANCE.value, verbose_name="来源")
    request_trigger = models.SmallIntegerField(default=RequestTrigger.SUBMITING.value, verbose_name="触发者")
    input_file = models.CharField(max_length=255, verbose_name="文件名", null=True)
    transaction_start = models.DateTimeField(verbose_name='开始时间')  # 索引
    transaction_end = models.DateTimeField(verbose_name='结束时间')
    successful_at_this_level = models.BooleanField(default=True, verbose_name="是否成功")
    failure_reason = models.TextField(null=True, verbose_name="失败原因")
    process_name = models.SmallIntegerField(default=ProcessName.CACOMPARE.value, verbose_name="流程名称")
    total_fields = models.IntegerField(null=True, verbose_name='比对字段数目')
    workflow_name = models.CharField(max_length=255, verbose_name="工作流程", null=True)

    class Meta:
        managed = False
        db_table = 'hil_compare_report'


class AFCCompareReport(models.Model):
    id = models.AutoField(primary_key=True, verbose_name="id")  # 主键
    case_number = models.CharField(max_length=64, verbose_name="申请id")
    request_team = models.SmallIntegerField(default=RequestTeam.ACCEPTANCE.value, verbose_name="来源")
    request_trigger = models.SmallIntegerField(default=RequestTrigger.SUBMITING.value, verbose_name="触发者")

    input_file = models.CharField(max_length=255, verbose_name="文件名", null=True)
    transaction_start = models.DateTimeField(verbose_name='开始时间')  # 索引
    transaction_end = models.DateTimeField(verbose_name='结束时间')
    successful_at_this_level = models.BooleanField(default=True, verbose_name="是否成功")
    failure_reason = models.TextField(null=True, verbose_name="失败原因")
    process_name = models.SmallIntegerField(default=ProcessName.CACOMPARE.value, verbose_name="流程名称")
    total_fields = models.IntegerField(null=True, verbose_name='比对字段数目')
    workflow_name = models.CharField(max_length=255, verbose_name="工作流程", null=True)

    class Meta:
        managed = False
        db_table = 'afc_compare_report'
        situ_db_label = 'afc'


class HILCompareOfflineReport(models.Model):
    id = models.AutoField(primary_key=True, verbose_name="id")  # 主键
    case_number = models.CharField(max_length=255, verbose_name="申请id")
    request_team = models.CharField(max_length=255, verbose_name="来源")
    request_trigger = models.CharField(max_length=1024, verbose_name="触发者")
    input_file = models.CharField(max_length=2048, verbose_name="文件名")
    transaction_start = models.DateTimeField(verbose_name='开始时间')  # 索引
    transaction_end = models.DateTimeField(verbose_name='结束时间')
    successful_at_this_level = models.BooleanField(default=True, verbose_name="是否成功")
    failure_reason = models.TextField(null=True, verbose_name="失败原因")
    process_name = models.CharField(max_length=1024, verbose_name="流程名称")
    total_fields = models.IntegerField(verbose_name='比对字段数目', null=True)
    workflow_name = models.CharField(max_length=1024, verbose_name="工作流程")

    class Meta:
        managed = False
        db_table = 'hil_compare_offline_report'


class AFCCompareOfflineReport(models.Model):
    id = models.AutoField(primary_key=True, verbose_name="id")  # 主键
    case_number = models.CharField(max_length=255, verbose_name="申请id")
    request_team = models.CharField(max_length=255, verbose_name="来源")
    request_trigger = models.CharField(max_length=1024, verbose_name="触发者")
    input_file = models.CharField(max_length=2048, verbose_name="文件名")
    transaction_start = models.DateTimeField(verbose_name='开始时间')  # 索引
    transaction_end = models.DateTimeField(verbose_name='结束时间')
    successful_at_this_level = models.BooleanField(default=True, verbose_name="是否成功")
    failure_reason = models.TextField(null=True, verbose_name="失败原因")
    process_name = models.CharField(max_length=1024, verbose_name="流程名称")
    total_fields = models.IntegerField(verbose_name='比对字段数目', null=True)
    workflow_name = models.CharField(max_length=1024, verbose_name="工作流程")

    class Meta:
        managed = False
        db_table = 'afc_compare_offline_report'
        situ_db_label = 'afc'