828d28c7 by 周伟奇

add comparsion offline result upload interface & swagger document

1 parent fc360367
swagger: '2.0'
info:
title: 接口文档
description: 宝马ocr/biz_logic接口文档
version: 1.0.0
host: li19dkocruat01vm.bmwgroup.net
basePath: /
tags:
- name: info
description: 比对结果
schemes:
- https
security:
- OAuth2: []
paths:
/api/compare/offline/v1:
post:
tags:
- info
summary: 线下文件夹比对结果上传
consumes:
- application/json
produces:
- application/json
parameters:
- in: body
name: body
required: true
schema:
$ref: '#/definitions/ComparisonOffline'
responses:
200:
description: ok
schema:
$ref: '#/definitions/ApiResponse'
securityDefinitions:
OAuth2:
type: oauth2
flow: application
description: 'This API uses OAuth 2 with the application(clientCredentials) grant
flow.
client_id=sMlciTkppsMzARwHpCVarm5q7DP2Vucj3ny8JFhw
client_secret=WNoOilDx140ZLcenDKfsnikv7S2LIFs60DciYoqnrZaYLqYsKpcmt7mJIL69o9AEf84uQvRnS3K2UioxfjNyImjR4UOyXbDcF6qYgTLC4KDVByKFdVhKfrn2Lc4q4BNW
scopes=write
'
tokenUrl: https://li19dkocruat01vm.bmwgroup.net/api/oauth/token/
scopes:
write: Grants write access
responses:
ErrorResponse:
description: 调用异常, 具体情况请参考`HTTP`状态码和`code`字段
schema:
$ref: '#/definitions/ApiResponse'
NoContent:
description: 后台接收请求,但是没有响应内容
schema:
$ref: '#/definitions/ApiResponse'
definitions:
ComparisonOffline:
type: object
required:
- is_hil
- case_number
- request_team
- request_trigger
- input_file
- transaction_start
- transaction_end
- successful_at_this_level
- process_name
- total_fields
- workflow_name
properties:
is_hil:
description: is_hil
type: boolean
example: false
case_number:
description: case_number
type: string
example: VAT Invoice Number
request_team:
description: request_team
type: string
example: Accounting
request_trigger:
description: request_trigger
type: string
example: Attended RPA (Q-Account + Machine Number)
input_file:
description: input_file
type: string
example: CH-B1000000身份证.jpeg
transaction_start:
description: transaction_start
type: string
format: date-time
example: '2027-04-30 19:22:29'
transaction_end:
description: transaction_end
type: string
format: date-time
example: '2027-04-30 19:22:29'
successful_at_this_level:
description: successful_at_this_level
type: boolean
example: false
failure_reason:
description: failure_reason
type: string
example: Fileds Name which doesn’t pass verification
process_name:
description: process_name
type: string
example: F1_VATInvoiceMapping
total_fields:
description: total_fields
type: integer
example: 0
workflow_name:
description: workflow_name
type: string
example: Normal invoice or Special invoice
ApiResponse:
description: 响应对象,code字段用于表示响应的状态; data字段用于存放响应内容
type: object
required:
- code
- msg
properties:
code:
type: integer
format: uint8
description: '0: success 1: need login 2: invalid params 3: internal error
4: object not exist 5: async wait 6: no permission 7: illegal operation'
example: 0
enum:
- 0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
msg:
type: string
example: success
data:
type: object
......@@ -5,4 +5,5 @@ from . import views
urlpatterns = [
path(r'v1', views.CompareView.as_view()),
path(r'settlement/v1', views.SECompareView.as_view()),
path(r'offline/v1', views.CompareOfflineView.as_view()),
]
......
......@@ -275,8 +275,8 @@ class HILOCRReport(models.Model):
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(null=True, verbose_name='开始时间') # 索引
transaction_end = models.DateTimeField(null=True, 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="流程名称")
......@@ -294,8 +294,8 @@ class AFCOCRReport(models.Model):
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(null=True, verbose_name='开始时间') # 索引
transaction_end = models.DateTimeField(null=True, 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="流程名称")
......@@ -308,4 +308,81 @@ class AFCOCRReport(models.Model):
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.POS.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.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_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.POS.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.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_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="文件名", 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.CharField(max_length=1024, verbose_name="流程名称")
total_fields = models.IntegerField(verbose_name='比对字段数目')
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="文件名", 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.CharField(max_length=1024, verbose_name="流程名称")
total_fields = models.IntegerField(verbose_name='比对字段数目')
workflow_name = models.CharField(max_length=1024, verbose_name="工作流程")
class Meta:
managed = False
db_table = 'afc_compare_offline_report'
situ_db_label = 'afc'
......
......@@ -16,7 +16,7 @@ from common import response
from common.mixins import GenericView
from common.tools.file_tools import file_write
from common.redis_cache import redis_handler as rh
from .models import DocStatus, PriorityApplication, GCAPRecords, AFCComparisonInfo, HILComparisonInfo
from .models import DocStatus, PriorityApplication, GCAPRecords, AFCComparisonInfo, HILComparisonInfo, AFCCompareOfflineReport, HILCompareOfflineReport
from .mixins import DocHandler
from . import consts
from apps.account.authentication import OAuth2AuthenticationWithUser
......@@ -276,6 +276,21 @@ priority_doc_args = {
}
compare_offline_args = {
'is_hil': fields.Boolean(required=True),
'case_number': fields.Str(required=True, validate=validate.Length(max=255)),
'request_team': fields.Str(required=True, validate=validate.Length(max=255)),
'request_trigger': fields.Str(required=True, validate=validate.Length(max=1024)),
'input_file': fields.Str(required=True, validate=validate.Length(max=2048)),
'transaction_start': fields.DateTime(required=True),
'transaction_end': fields.DateTime(required=True),
'successful_at_this_level': fields.Boolean(required=True),
'failure_reason': fields.Str(required=False),
'process_name': fields.Str(required=True, validate=validate.Length(max=1024)),
'total_fields': fields.Int(required=True),
'workflow_name': fields.Str(required=True, validate=validate.Length(max=1024)),
}
class UploadDocView(GenericView, DocHandler):
# permission_classes = []
......@@ -435,7 +450,7 @@ class CompareView(GenericView):
permission_classes = [IsAuthenticated]
authentication_classes = [OAuth2AuthenticationWithUser]
# pos上传比对信息接口
# pos上传比对信息接口 CA
@use_args(compare_args, location='data')
def post(self, request, args):
# 存库
......@@ -486,7 +501,7 @@ class SECompareView(GenericView):
permission_classes = [IsAuthenticated]
authentication_classes = [OAuth2AuthenticationWithUser]
# pos上传比对信息接口
# pos上传比对信息接口 SE
@use_args(se_compare_args, location='data')
def post(self, request, args):
self.running_log.info('se compare in')
......@@ -512,6 +527,50 @@ class SECompareView(GenericView):
'''
class CompareOfflineView(GenericView):
permission_classes = [IsAuthenticated]
authentication_classes = [OAuth2AuthenticationWithUser]
# 线下文件夹比对结果上传接口
@use_args(compare_offline_args, location='data')
def post(self, request, args):
is_hil = args.get('is_hil', False)
table = HILCompareOfflineReport if is_hil else AFCCompareOfflineReport
table.objects.create(
case_number=args.get('case_number'),
request_team=args.get('request_team'),
request_trigger=args.get('request_trigger'),
input_file=args.get('input_file'),
transaction_start=args.get('transaction_start'),
transaction_end=args.get('transaction_end'),
successful_at_this_level=args.get('successful_at_this_level'),
failure_reason=args.get('failure_reason', ''),
process_name=args.get('process_name'),
total_fields=args.get('total_fields', 0),
workflow_name=args.get('workflow_name'),
)
return response.ok()
post.openapi_doc = '''
tags: [info]
summary: 线下文件夹比对结果上传
consumes: [application/json]
produces: [application/json]
parameters:
- in: body
name: body
required: true
schema:
$ref: "#/definitions/ComparisonOffline"
responses:
200:
description: ok
schema:
$ref: '#/definitions/ApiResponse'
'''
class DocView(GenericView, DocHandler):
# 文件列表页
......
......@@ -8,7 +8,7 @@ host: "li19dkocruat01vm.bmwgroup.net"
basePath: "/"
tags:
- name: info
description: 比对信息
description: 比对结果
schemes:
- "https"
security:
......@@ -47,555 +47,60 @@ NoContent:
parameters = ''
definitions = '''
individualCusInfo:
ComparisonOffline:
type: object
required: [applicantType, idType, customerChineseName, idNum, idExpiryDate, dateOfBirth, companyName, registeredCapital, selfEmployedSubType]
required: [is_hil, case_number, request_team, request_trigger, input_file, transaction_start, transaction_end, successful_at_this_level, process_name, total_fields, workflow_name]
properties:
applicantType:
description: applicantType
type: string
example: COAPP
enum: [COAPP, CUSTR, GAUTR1, GAUTR2]
idType:
description: idType
type: string
example: ITARI
enum: [ITARI, ITHKM, ITPRC, ITPSP, ITRES, ITTID, ITUSC, ITCCU]
secondIdType:
description: secondIdType
type: string
example: ITARI
enum: [ITARI, ITHKM, ITPRC, ITPSP, ITRES, ITTID]
customerChineseName:
description: customerChineseName
type: string
example: 李四
idNum:
description: idNum
type: string
example: 111111199404251111
secondIdNum:
description: secondIdNum
type: string
example: 111111199404251111
idExpiryDate:
description: idExpiryDate
type: string
format: date
example: "2027-04-30"
dateOfBirth:
description: dateOfBirth
type: string
format: date
example: "2027-04-30"
companyName:
description: companyName
type: string
example: 北京思图场景数据科技服务有限公司
registeredCapital:
description: registeredCapital
type: number
format: float
example: 1234.56
selfEmployedSubType:
description: selfEmployedSubType
type: string
example: CSIBM
enum: [CSIBM, CSOTH, CSSME]
SEindividualCusInfo:
type: object
required: [customerType, applicantType, customerName, idType, idNum, dateOfBirth, idExpiryDate, hukouProvince, hukouCity]
properties:
customerType:
description: customerType
type: string
example: TCCOR
enum: [TCCOR, TCDAS, TCFRE, TCIAS, TCIND, TCSEP, TCURE]
applicantType:
description: applicantType
type: string
example: COAPP
enum: [COAPP, CUSTR, GAUTR1, GAUTR2]
customerName:
description: customerName
type: string
example: 李四
idType:
description: idType
type: string
example: ITARI
enum: [ITARI, ITHKM, ITPRC, ITPSP, ITRES, ITTID, ITUSC, ITCCU]
idNum:
description: idNum
type: string
example: 111111199404251111
secondIdType:
description: secondIdType
type: string
example: ITARI
enum: [ITARI, ITHKM, ITPRC, ITPSP, ITRES, ITTID]
secondIdNum:
description: secondIdNum
type: string
example: 111111199404251111
dateOfBirth:
description: dateOfBirth
type: string
format: date
example: "2027-04-30"
idExpiryDate:
description: idExpiryDate
type: string
format: date
example: "2027-04-30"
nationality:
description: nationality
type: string
example: 中国
countryregion:
description: countryregion
type: string
example: 中国
hukouProvince:
description: hukouProvince
type: string
example: 山东省
hukouCity:
description: hukouCity
type: string
example: 日照市
residentialProvince:
description: residentialProvince
type: string
example: 江苏省
residentialCity:
description: residentialCity
type: string
example: 连云港市
propertyDocumentPolicy:
description: propertyDocumentPolicy
type: string
example: DOAOB
enum: [DOAOB, DOHDP, DOAMP, DOHED, DOAGQ, DOSME, DOLHK, DORET, DOPCQ, DOSNF, DOYES, DOGRC, DOLLR, DOVDL]
companyName:
description: companyName
type: string
example: 北京思图场景数据科技服务有限公司
registeredCapital:
description: registeredCapital
type: number
format: float
example: 1234.56
selfEmployedSubType:
description: selfEmployedSubType
is_hil:
description: is_hil
type: boolean
example: false
case_number:
description: case_number
type: string
example: VAT Invoice Number
request_team:
description: request_team
type: string
example: Accounting
request_trigger:
description: request_trigger
type: string
example: Attended RPA (Q-Account + Machine Number)
input_file:
description: input_file
type: string
example: CH-B1000000身份证.jpeg
transaction_start:
description: transaction_start
type: string
format: date-time
example: "2027-04-30 19:22:29"
transaction_end:
description: transaction_end
type: string
format: date-time
example: "2027-04-30 19:22:29"
successful_at_this_level:
description: successful_at_this_level
type: boolean
example: false
failure_reason:
description: failure_reason
type: string
example: Fileds Name which doesn’t pass verification
process_name:
description: process_name
type: string
example: F1_VATInvoiceMapping
total_fields:
description: total_fields
type: integer
example: 0
workflow_name:
description: workflow_name
type: string
example: CSIBM
enum: [CSIBM, CSOTH, CSSME]
associatedServiceInfo:
type: object
required: [service, amount, financedAmount]
properties:
service:
description: service
type: number
example: 1
amount:
description: amount
type: number
format: float
example: 1234.56
financedAmount:
description: financedAmount
type: number
format: float
example: 1234.56
monthlyPaymentInfo:
type: object
required: [term, amount]
properties:
term:
description: term
type: number
example: 12
amount:
description: amount
type: number
format: float
example: 1234.56
SEComparison:
type: object
required: [content]
properties:
content:
description: SE比对内容信息
type: object
required: [uniqSeq, applicationId, applicationVersion, applicationEntity, customerType, firstSubmmisonDate, individualCusInfo, vehicleInfo, insuranceInfo, bankInfo, quotationtInfo]
properties:
uniqSeq:
description: uniqSeq
type: string
example: 201809301905121000
applicationId:
description: applicationId
type: string
example: CH-B100000123
applicationVersion:
description: applicationVersion
type: integer
example: 0
applicationEntity:
description: applicationEntity
type: string
example: HIL
enum: [AFC, HIL]
customerType:
description: customerType
type: string
example: TCCOR
enum: [TCCOR, TCDAS, TCFRE, TCIAS, TCIND, TCSEP, TCURE]
firstSubmmisonDate:
description: firstSubmmisonDate
type: string
format: date
example: "2027-04-30"
individualCusInfo:
description: individualCusInfo
type: array
items:
$ref: "#/definitions/SEindividualCusInfo"
corporateCusInfo:
description: corporateCusInfo
type: object
required: [customerType, companyName, firstIdType, firstIdNo, businessLicenseNo, organizationCreditCode, taxRegistrationCertificateNo, establishmentDate, incorporationDate, businessLicenseDueDate, legalRepName, organizationType]
properties:
customerType:
description: customerType
type: string
example: TCCOR
enum: [TCCOR, TCDAS, TCFRE, TCIAS, TCIND, TCSEP, TCURE]
companyName:
description: companyName
type: string
example: 北京思图场景数据科技服务有限公司
firstIdType:
description: firstIdType
type: string
example: ITPRC
enum: [ITARI, ITHKM, ITPRC, ITPSP, ITRES, ITTID, ITUSC, ITCCU]
firstIdNo:
description: firstIdNo
type: string
example: MA007438143XJ1P
businessLicenseNo:
description: businessLicenseNo
type: string
example: MA007438143XJ1P
organizationCreditCode:
description: organizationCreditCode
type: string
example: MA007438143XJ1P
taxRegistrationCertificateNo:
description: taxRegistrationCertificateNo
type: string
example: MA007438143XJ1P
establishmentDate:
description: establishmentDate
type: string
format: date
example: "2027-04-30"
incorporationDate:
description: incorporationDate
type: string
format: date
example: "2027-04-30"
businessLicenseDueDate:
description: businessLicenseDueDate
type: string
format: date
example: "2027-04-30"
legalRepName:
description: legalRepName
type: string
example: 王五
organizationType:
description: organizationType
type: string
example: OTINS
enum: [OTINS, OTUNI, OTOTH, OTIND, OTCOR]
fleetCustomer:
description: fleetCustomer
type: boolean
example: false
beneficialOwnerName:
description: beneficialOwnerName
type: string
example: 王五
beneficialOwnerIdType:
description: beneficialOwnerIdType
type: string
example: ITPRC
enum: [ITARI, ITHKM, ITPRC, ITPSP, ITRES, ITTID, ITUSC, ITCCU]
beneficialOwnerIdNo:
description: beneficialOwnerIdNo
type: string
example: 324124534534
beneficialOwnerIdExpiryDate:
description: beneficialOwnerIdExpiryDate
type: string
format: date
example: "2027-04-30"
vehicleInfo:
description: vehicleInfo
type: object
required: [vehicleStatus, vehicleTransactionAmount, vinNo, dealer]
properties:
vehicleStatus:
description: vehicleStatus
type: string
example: Usedcar
vehicleTransactionAmount:
description: vehicleTransactionAmount
type: number
format: float
example: 1234.56
vinNo:
description: vinNo
type: string
example: DFS2341JK23
dealer:
description: dealer
type: string
example: TestDealer
option:
description: option
type: string
example: TestOption
msrp:
description: msrp
type: number
format: float
example: 1234.56
totalAmount:
description: totalAmount
type: number
format: float
example: 1234.56
insuranceInfo:
description: insuranceInfo
type: object
required: [insuredAmount, insuranceType, startDate, endDate]
properties:
insuredAmount:
description: insuredAmount
type: number
format: float
example: 1234.56
insuranceType:
description: insuranceType
type: string
example: ITCOM
enum: [ITCOM, ITCOS]
startDate:
description: startDate
type: string
format: date
example: "2027-04-30"
endDate:
description: endDate
type: string
format: date
example: "2027-04-30"
bankInfo:
description: bankInfo
type: object
required: [bankName, branchName, applicantType, accountHolderName, accountNo]
properties:
bankName:
description: bankName
type: string
example: 农业银行
branchName:
description: branchName
type: string
example: 回龙观支行
applicantType:
description: applicantType
type: string
example: COAPP
enum: [COAPP, CUSTR, GAUTR1, GAUTR2]
accountHolderName:
description: accountHolderName
type: string
example: 张三
accountNo:
description: accountNo
type: string
example: 634523426756756
bankVerificationStatus:
description: bankVerificationStatus
type: string
example: PASS
enum: [PASS, FAIL, N/A]
isAllDocUploaded:
description: isAllDocUploaded
type: boolean
example: false
quotationtInfo:
description: quotationtInfo
type: object
required: [totalLoanAmount, loanTerm, vehiclePrincipal, associatedServicePrincipal, associatedServiceInfo, monthlyPaymentInfo]
properties:
totalLoanAmount:
description: totalLoanAmount
type: number
format: float
example: 1234.56
loanTerm:
description: loanTerm
type: number
example: 12
vehiclePrincipal:
description: vehiclePrincipal
type: number
format: float
example: 1234.56
associatedServicePrincipal:
description: associatedServicePrincipal
type: number
format: float
example: 1234.56
associatedServiceInfo:
description: associatedServiceInfo
type: array
items:
$ref: "#/definitions/associatedServiceInfo"
monthlyPaymentInfo:
description: monthlyPaymentInfo
type: array
items:
$ref: "#/definitions/monthlyPaymentInfo"
Comparison:
type: object
required: [content]
properties:
content:
description: 比对内容信息
type: object
required: [uniqSeq, applicationId, applicationEntity, customerType, applicationVersion, vehicleStatus, comments, individualCusInfo]
properties:
uniqSeq:
description: uniqSeq
type: string
example: 201809301905121000
applicationId:
description: applicationId
type: string
example: CH-B100000123
applicationEntity:
description: applicationEntity
type: string
example: HIL
enum: [AFC, HIL]
customerType:
description: customerType
type: string
example: TCCOR
enum: [TCCOR, TCDAS, TCFRE, TCIAS, TCIND, TCSEP, TCURE]
applicationVersion:
description: applicationVersion
type: integer
example: 0
vehicleStatus:
description: vehicleStatus
type: string
example: PCUSD
enum: [PCUSD, PCNEW]
comments:
description: comments
type: array
items:
type: string
individualCusInfo:
description: individualCusInfo
type: array
items:
$ref: "#/definitions/individualCusInfo"
usedCarInfo:
description: usedCarInfo
type: object
required: [vinNo, manufactureDate, firstRegistrationDate]
properties:
vinNo:
description: vinNo
type: string
example: LBVSFJSDLFJLSDJF
manufactureDate:
description: manufactureDate
type: string
format: date
example: "2027-04-30"
firstRegistrationDate:
description: firstRegistrationDate
type: string
format: date
example: "2027-04-30"
corporateCusInfo:
description: corporateCusInfo
type: object
required: [customerChineseName, legalRepName, idNum, businessLicenseNo, taxRegistrationCode, incorporationDate, businessLicenseDueDate, capitalRegAmount]
properties:
customerChineseName:
description: customerChineseName
type: string
example: 北京思图场景数据科技服务有限公司
legalRepName:
description: legalRepName
type: string
example: 李六
idNum:
description: idNum
type: string
example: MA007438143XJ1P
businessLicenseNo:
description: businessLicenseNo
type: string
example: MA007438143XJ1P
taxRegistrationCode:
description: taxRegistrationCode
type: string
example: MA007438143XJ1P
incorporationDate:
description: incorporationDate
type: string
format: date
example: "2027-04-30"
businessLicenseDueDate:
description: businessLicenseDueDate
type: string
format: date
example: "2027-04-30"
capitalRegAmount:
description: capitalRegAmount
type: number
format: float
example: 1234.56
example: Normal invoice or Special invoice
ApiResponse:
description: 响应对象,code字段用于表示响应的状态; data字段用于存放响应内容
......
......@@ -4,11 +4,11 @@ info:
title: 接口文档
description: 宝马ocr/biz_logic接口文档
version: 1.0.0
host: "staging-bmw-ocr.situdata.com"
host: "li19dkocruat01vm.bmwgroup.net"
basePath: "/"
tags:
- name: doc
description: 文件
- name: info
description: 比对信息
schemes:
- "https"
security:
......@@ -28,7 +28,7 @@ OAuth2:
client_secret=WNoOilDx140ZLcenDKfsnikv7S2LIFs60DciYoqnrZaYLqYsKpcmt7mJIL69o9AEf84uQvRnS3K2UioxfjNyImjR4UOyXbDcF6qYgTLC4KDVByKFdVhKfrn2Lc4q4BNW
scopes=write
tokenUrl: https://staging-bmw-ocr.situdata.com/api/oauth/token/
tokenUrl: https://li19dkocruat01vm.bmwgroup.net/api/oauth/token/
scopes:
write: Grants write access
'''
......@@ -47,115 +47,9 @@ NoContent:
parameters = ''
definitions = '''
Doc:
type: object
required: [applicationData, applicantData, document]
properties:
applicationData:
description: 申请信息
type: object
required: [applicationId]
properties:
applicationId:
description: 申请id
type: string
example: CH-B0011010101
applicantData:
description: 申请人信息
type: object
required: [mainApplicantName, coApplicantName, guarantor1Name, guarantor2Name]
properties:
mainApplicantName:
description: 主申请人
type: string
example: 王明阳
coApplicantName:
description: 共同申请人
type: string
example: 王明月
guarantor1Name:
description: 担保人1
type: string
example: 王明日
guarantor2Name:
description: 担保人2
type: string
example: 王明雨
document:
description: 文件信息
type: object
required: [documentName, documentScheme, businessType, uploadFinishTime, dataSource, metadataVersionId]
properties:
documentName:
description: 文件名
type: string
example: CH-B0011010101王明阳申请表
documentScheme:
description: 文件方案
type: string
example: Acceptance
enum: [Acceptance, Settlement, Contract Management]
businessType:
description: 业务类型
type: string
example: CO00001
enum: [CO00001, CO00002]
uploadFinishTime:
description: 上传完成时间
type: string
example: '2020-09-01 12:21:11'
dataSource:
description: 数据源
type: string
example: POS
enum: [POS, EAPP, Econtract]
metadataVersionId:
description: 元数据版本ID
type: string
example: '8410480'
Application:
type: object
required: [APPLICATION_INFORMATION]
properties:
APPLICATION_INFORMATION:
description: 申请单信息
type: object
required: [SUBMIT_DATETIME, STATUS, ENTITY, RATING, APPLICATION_ID, APPLICATION_VERSION, INTERMEDIATE_DECISION]
properties:
SUBMIT_DATETIME:
description: 提交时间
type: string
example: 2020-07-08T18:33:31.000+08:00
STATUS:
description: 状态
type: integer
example: 42
ENTITY:
description: 业务类型
type: string
example: CO00001
enum: [CO00001, CO00002]
RATING:
description: 排名
type: integer
example: 4
APPLICATION_ID:
description: 申请id
type: string
example: CH-B0011010101
APPLICATION_VERSION:
description: 申请版本
type: integer
example: 1
INTERMEDIATE_DECISION:
description: ''
type: string
example: MUW
individualCusInfo:
type: object
required: [applicantType, idType, customerChineseName, idNum, idExpiryDate, dateOfBirth, selfEmployedSubType]
required: [applicantType, idType, customerChineseName, idNum, idExpiryDate, dateOfBirth, companyName, registeredCapital, selfEmployedSubType]
properties:
applicantType:
description: applicantType
......@@ -187,17 +81,414 @@ individualCusInfo:
idExpiryDate:
description: idExpiryDate
type: string
example: 2027-04-30
format: date
example: "2027-04-30"
dateOfBirth:
description: dateOfBirth
type: string
format: date
example: "2027-04-30"
companyName:
description: companyName
type: string
example: 北京思图场景数据科技服务有限公司
registeredCapital:
description: registeredCapital
type: number
format: float
example: 1234.56
selfEmployedSubType:
description: selfEmployedSubType
type: string
example: CSIBM
enum: [CSIBM, CSOTH, CSSME]
SEindividualCusInfo:
type: object
required: [customerType, applicantType, customerName, idType, idNum, dateOfBirth, idExpiryDate, hukouProvince, hukouCity]
properties:
customerType:
description: customerType
type: string
example: TCCOR
enum: [TCCOR, TCDAS, TCFRE, TCIAS, TCIND, TCSEP, TCURE]
applicantType:
description: applicantType
type: string
example: COAPP
enum: [COAPP, CUSTR, GAUTR1, GAUTR2]
customerName:
description: customerName
type: string
example: 李四
idType:
description: idType
type: string
example: ITARI
enum: [ITARI, ITHKM, ITPRC, ITPSP, ITRES, ITTID, ITUSC, ITCCU]
idNum:
description: idNum
type: string
example: 111111199404251111
secondIdType:
description: secondIdType
type: string
example: ITARI
enum: [ITARI, ITHKM, ITPRC, ITPSP, ITRES, ITTID]
secondIdNum:
description: secondIdNum
type: string
example: 111111199404251111
dateOfBirth:
description: dateOfBirth
type: string
example: 2027-04-30
format: date
example: "2027-04-30"
idExpiryDate:
description: idExpiryDate
type: string
format: date
example: "2027-04-30"
nationality:
description: nationality
type: string
example: 中国
countryregion:
description: countryregion
type: string
example: 中国
hukouProvince:
description: hukouProvince
type: string
example: 山东省
hukouCity:
description: hukouCity
type: string
example: 日照市
residentialProvince:
description: residentialProvince
type: string
example: 江苏省
residentialCity:
description: residentialCity
type: string
example: 连云港市
propertyDocumentPolicy:
description: propertyDocumentPolicy
type: string
example: DOAOB
enum: [DOAOB, DOHDP, DOAMP, DOHED, DOAGQ, DOSME, DOLHK, DORET, DOPCQ, DOSNF, DOYES, DOGRC, DOLLR, DOVDL]
companyName:
description: companyName
type: string
example: 北京思图场景数据科技服务有限公司
registeredCapital:
description: registeredCapital
type: number
format: float
example: 1234.56
selfEmployedSubType:
description: selfEmployedSubType
type: string
example: CSIBM
enum: [CSIBM, CSOTH, CSSME]
associatedServiceInfo:
type: object
required: [service, amount, financedAmount]
properties:
service:
description: service
type: number
example: 1
amount:
description: amount
type: number
format: float
example: 1234.56
financedAmount:
description: financedAmount
type: number
format: float
example: 1234.56
monthlyPaymentInfo:
type: object
required: [term, amount]
properties:
term:
description: term
type: number
example: 12
amount:
description: amount
type: number
format: float
example: 1234.56
SEComparison:
type: object
required: [content]
properties:
content:
description: SE比对内容信息
type: object
required: [uniqSeq, applicationId, applicationVersion, applicationEntity, customerType, firstSubmmisonDate, individualCusInfo, vehicleInfo, insuranceInfo, bankInfo, quotationtInfo]
properties:
uniqSeq:
description: uniqSeq
type: string
example: 201809301905121000
applicationId:
description: applicationId
type: string
example: CH-B100000123
applicationVersion:
description: applicationVersion
type: integer
example: 0
applicationEntity:
description: applicationEntity
type: string
example: HIL
enum: [AFC, HIL]
customerType:
description: customerType
type: string
example: TCCOR
enum: [TCCOR, TCDAS, TCFRE, TCIAS, TCIND, TCSEP, TCURE]
firstSubmmisonDate:
description: firstSubmmisonDate
type: string
format: date
example: "2027-04-30"
individualCusInfo:
description: individualCusInfo
type: array
items:
$ref: "#/definitions/SEindividualCusInfo"
corporateCusInfo:
description: corporateCusInfo
type: object
required: [customerType, companyName, firstIdType, firstIdNo, businessLicenseNo, organizationCreditCode, taxRegistrationCertificateNo, establishmentDate, incorporationDate, businessLicenseDueDate, legalRepName, organizationType]
properties:
customerType:
description: customerType
type: string
example: TCCOR
enum: [TCCOR, TCDAS, TCFRE, TCIAS, TCIND, TCSEP, TCURE]
companyName:
description: companyName
type: string
example: 北京思图场景数据科技服务有限公司
firstIdType:
description: firstIdType
type: string
example: ITPRC
enum: [ITARI, ITHKM, ITPRC, ITPSP, ITRES, ITTID, ITUSC, ITCCU]
firstIdNo:
description: firstIdNo
type: string
example: MA007438143XJ1P
businessLicenseNo:
description: businessLicenseNo
type: string
example: MA007438143XJ1P
organizationCreditCode:
description: organizationCreditCode
type: string
example: MA007438143XJ1P
taxRegistrationCertificateNo:
description: taxRegistrationCertificateNo
type: string
example: MA007438143XJ1P
establishmentDate:
description: establishmentDate
type: string
format: date
example: "2027-04-30"
incorporationDate:
description: incorporationDate
type: string
format: date
example: "2027-04-30"
businessLicenseDueDate:
description: businessLicenseDueDate
type: string
format: date
example: "2027-04-30"
legalRepName:
description: legalRepName
type: string
example: 王五
organizationType:
description: organizationType
type: string
example: OTINS
enum: [OTINS, OTUNI, OTOTH, OTIND, OTCOR]
fleetCustomer:
description: fleetCustomer
type: boolean
example: false
beneficialOwnerName:
description: beneficialOwnerName
type: string
example: 王五
beneficialOwnerIdType:
description: beneficialOwnerIdType
type: string
example: ITPRC
enum: [ITARI, ITHKM, ITPRC, ITPSP, ITRES, ITTID, ITUSC, ITCCU]
beneficialOwnerIdNo:
description: beneficialOwnerIdNo
type: string
example: 324124534534
beneficialOwnerIdExpiryDate:
description: beneficialOwnerIdExpiryDate
type: string
format: date
example: "2027-04-30"
vehicleInfo:
description: vehicleInfo
type: object
required: [vehicleStatus, vehicleTransactionAmount, vinNo, dealer]
properties:
vehicleStatus:
description: vehicleStatus
type: string
example: Usedcar
vehicleTransactionAmount:
description: vehicleTransactionAmount
type: number
format: float
example: 1234.56
vinNo:
description: vinNo
type: string
example: DFS2341JK23
dealer:
description: dealer
type: string
example: TestDealer
option:
description: option
type: string
example: TestOption
msrp:
description: msrp
type: number
format: float
example: 1234.56
totalAmount:
description: totalAmount
type: number
format: float
example: 1234.56
insuranceInfo:
description: insuranceInfo
type: object
required: [insuredAmount, insuranceType, startDate, endDate]
properties:
insuredAmount:
description: insuredAmount
type: number
format: float
example: 1234.56
insuranceType:
description: insuranceType
type: string
example: ITCOM
enum: [ITCOM, ITCOS]
startDate:
description: startDate
type: string
format: date
example: "2027-04-30"
endDate:
description: endDate
type: string
format: date
example: "2027-04-30"
bankInfo:
description: bankInfo
type: object
required: [bankName, branchName, applicantType, accountHolderName, accountNo]
properties:
bankName:
description: bankName
type: string
example: 农业银行
branchName:
description: branchName
type: string
example: 回龙观支行
applicantType:
description: applicantType
type: string
example: COAPP
enum: [COAPP, CUSTR, GAUTR1, GAUTR2]
accountHolderName:
description: accountHolderName
type: string
example: 张三
accountNo:
description: accountNo
type: string
example: 634523426756756
bankVerificationStatus:
description: bankVerificationStatus
type: string
example: PASS
enum: [PASS, FAIL, N/A]
isAllDocUploaded:
description: isAllDocUploaded
type: boolean
example: false
quotationtInfo:
description: quotationtInfo
type: object
required: [totalLoanAmount, loanTerm, vehiclePrincipal, associatedServicePrincipal, associatedServiceInfo, monthlyPaymentInfo]
properties:
totalLoanAmount:
description: totalLoanAmount
type: number
format: float
example: 1234.56
loanTerm:
description: loanTerm
type: number
example: 12
vehiclePrincipal:
description: vehiclePrincipal
type: number
format: float
example: 1234.56
associatedServicePrincipal:
description: associatedServicePrincipal
type: number
format: float
example: 1234.56
associatedServiceInfo:
description: associatedServiceInfo
type: array
items:
$ref: "#/definitions/associatedServiceInfo"
monthlyPaymentInfo:
description: monthlyPaymentInfo
type: array
items:
$ref: "#/definitions/monthlyPaymentInfo"
Comparison:
type: object
required: [content]
......@@ -257,16 +548,18 @@ Comparison:
manufactureDate:
description: manufactureDate
type: string
example: 2027-04-30
format: date
example: "2027-04-30"
firstRegistrationDate:
description: firstRegistrationDate
type: string
example: 2027-04-30
format: date
example: "2027-04-30"
corporateCusInfo:
description: corporateCusInfo
type: object
required: [customerChineseName, legalRepName, idNum, businessLicenseNo, taxRegistrationCode, incorporationDate, businessLicenseDueDate]
required: [customerChineseName, legalRepName, idNum, businessLicenseNo, taxRegistrationCode, incorporationDate, businessLicenseDueDate, capitalRegAmount]
properties:
customerChineseName:
description: customerChineseName
......@@ -291,11 +584,18 @@ Comparison:
incorporationDate:
description: incorporationDate
type: string
example: 2027-04-30
format: date
example: "2027-04-30"
businessLicenseDueDate:
description: businessLicenseDueDate
type: string
example: 2027-04-30
format: date
example: "2027-04-30"
capitalRegAmount:
description: capitalRegAmount
type: number
format: float
example: 1234.56
ApiResponse:
description: 响应对象,code字段用于表示响应的状态; data字段用于存放响应内容
......
base_part = '''
swagger: "2.0"
info:
title: 接口文档
description: 宝马ocr/biz_logic接口文档
version: 1.0.0
host: "staging-bmw-ocr.situdata.com"
basePath: "/"
tags:
- name: doc
description: 文件
schemes:
- "https"
security:
- OAuth2: []
'''
# scheme: oauth
security_definitions = '''
OAuth2:
type: oauth2
flow: application
description: >
This API uses OAuth 2 with the application(clientCredentials) grant flow.
client_id=sMlciTkppsMzARwHpCVarm5q7DP2Vucj3ny8JFhw
client_secret=WNoOilDx140ZLcenDKfsnikv7S2LIFs60DciYoqnrZaYLqYsKpcmt7mJIL69o9AEf84uQvRnS3K2UioxfjNyImjR4UOyXbDcF6qYgTLC4KDVByKFdVhKfrn2Lc4q4BNW
scopes=write
tokenUrl: https://staging-bmw-ocr.situdata.com/api/oauth/token/
scopes:
write: Grants write access
'''
responses = '''
ErrorResponse:
description: 调用异常, 具体情况请参考`HTTP`状态码和`code`字段
schema:
$ref: '#/definitions/ApiResponse'
NoContent:
description: 后台接收请求,但是没有响应内容
schema:
$ref: '#/definitions/ApiResponse'
'''
parameters = ''
definitions = '''
Doc:
type: object
required: [applicationData, applicantData, document]
properties:
applicationData:
description: 申请信息
type: object
required: [applicationId]
properties:
applicationId:
description: 申请id
type: string
example: CH-B0011010101
applicantData:
description: 申请人信息
type: object
required: [mainApplicantName, coApplicantName, guarantor1Name, guarantor2Name]
properties:
mainApplicantName:
description: 主申请人
type: string
example: 王明阳
coApplicantName:
description: 共同申请人
type: string
example: 王明月
guarantor1Name:
description: 担保人1
type: string
example: 王明日
guarantor2Name:
description: 担保人2
type: string
example: 王明雨
document:
description: 文件信息
type: object
required: [documentName, documentScheme, businessType, uploadFinishTime, dataSource, metadataVersionId]
properties:
documentName:
description: 文件名
type: string
example: CH-B0011010101王明阳申请表
documentScheme:
description: 文件方案
type: string
example: Acceptance
enum: [Acceptance, Settlement, Contract Management]
businessType:
description: 业务类型
type: string
example: CO00001
enum: [CO00001, CO00002]
uploadFinishTime:
description: 上传完成时间
type: string
example: '2020-09-01 12:21:11'
dataSource:
description: 数据源
type: string
example: POS
enum: [POS, EAPP, Econtract]
metadataVersionId:
description: 元数据版本ID
type: string
example: '8410480'
Application:
type: object
required: [APPLICATION_INFORMATION]
properties:
APPLICATION_INFORMATION:
description: 申请单信息
type: object
required: [SUBMIT_DATETIME, STATUS, ENTITY, RATING, APPLICATION_ID, APPLICATION_VERSION, INTERMEDIATE_DECISION]
properties:
SUBMIT_DATETIME:
description: 提交时间
type: string
example: 2020-07-08T18:33:31.000+08:00
STATUS:
description: 状态
type: integer
example: 42
ENTITY:
description: 业务类型
type: string
example: CO00001
enum: [CO00001, CO00002]
RATING:
description: 排名
type: integer
example: 4
APPLICATION_ID:
description: 申请id
type: string
example: CH-B0011010101
APPLICATION_VERSION:
description: 申请版本
type: integer
example: 1
INTERMEDIATE_DECISION:
description: ''
type: string
example: MUW
individualCusInfo:
type: object
required: [applicantType, idType, customerChineseName, idNum, idExpiryDate, dateOfBirth, selfEmployedSubType]
properties:
applicantType:
description: applicantType
type: string
example: COAPP
enum: [COAPP, CUSTR, GAUTR1, GAUTR2]
idType:
description: idType
type: string
example: ITARI
enum: [ITARI, ITHKM, ITPRC, ITPSP, ITRES, ITTID, ITUSC, ITCCU]
secondIdType:
description: secondIdType
type: string
example: ITARI
enum: [ITARI, ITHKM, ITPRC, ITPSP, ITRES, ITTID]
customerChineseName:
description: customerChineseName
type: string
example: 李四
idNum:
description: idNum
type: string
example: 111111199404251111
secondIdNum:
description: secondIdNum
type: string
example: 111111199404251111
idExpiryDate:
description: idExpiryDate
type: string
example: 2027-04-30
dateOfBirth:
description: dateOfBirth
type: string
example: 2027-04-30
selfEmployedSubType:
description: selfEmployedSubType
type: string
example: CSIBM
enum: [CSIBM, CSOTH, CSSME]
Comparison:
type: object
required: [content]
properties:
content:
description: 比对内容信息
type: object
required: [uniqSeq, applicationId, applicationEntity, customerType, applicationVersion, vehicleStatus, comments, individualCusInfo]
properties:
uniqSeq:
description: uniqSeq
type: string
example: 201809301905121000
applicationId:
description: applicationId
type: string
example: CH-B100000123
applicationEntity:
description: applicationEntity
type: string
example: HIL
enum: [AFC, HIL]
customerType:
description: customerType
type: string
example: TCCOR
enum: [TCCOR, TCDAS, TCFRE, TCIAS, TCIND, TCSEP, TCURE]
applicationVersion:
description: applicationVersion
type: integer
example: 0
vehicleStatus:
description: vehicleStatus
type: string
example: PCUSD
enum: [PCUSD, PCNEW]
comments:
description: comments
type: array
items:
type: string
individualCusInfo:
description: individualCusInfo
type: array
items:
$ref: "#/definitions/individualCusInfo"
usedCarInfo:
description: usedCarInfo
type: object
required: [vinNo, manufactureDate, firstRegistrationDate]
properties:
vinNo:
description: vinNo
type: string
example: LBVSFJSDLFJLSDJF
manufactureDate:
description: manufactureDate
type: string
example: 2027-04-30
firstRegistrationDate:
description: firstRegistrationDate
type: string
example: 2027-04-30
corporateCusInfo:
description: corporateCusInfo
type: object
required: [customerChineseName, legalRepName, idNum, businessLicenseNo, taxRegistrationCode, incorporationDate, businessLicenseDueDate]
properties:
customerChineseName:
description: customerChineseName
type: string
example: 北京思图场景数据科技服务有限公司
legalRepName:
description: legalRepName
type: string
example: 李六
idNum:
description: idNum
type: string
example: MA007438143XJ1P
businessLicenseNo:
description: businessLicenseNo
type: string
example: MA007438143XJ1P
taxRegistrationCode:
description: taxRegistrationCode
type: string
example: MA007438143XJ1P
incorporationDate:
description: incorporationDate
type: string
example: 2027-04-30
businessLicenseDueDate:
description: businessLicenseDueDate
type: string
example: 2027-04-30
ApiResponse:
description: 响应对象,code字段用于表示响应的状态; data字段用于存放响应内容
type: object
required: [code, msg]
properties:
code:
type: integer
format: uint8
description: '0: success
1: need login
2: invalid params
3: internal error
4: object not exist
5: async wait
6: no permission
7: illegal operation'
example: 0
enum: [0, 1, 2, 3, 4, 5, 6, 7]
msg:
type: string
example: success
data:
type: object
'''
\ No newline at end of file
......@@ -48,7 +48,7 @@ class Command(BaseCommand):
view_class = view.view_class
url_path, path_parameters = pattern[0][0]
url_path = unify_url_path_format(url_path)
if url_path not in ['/api/compare/settlement/v1', '/api/compare/v1']:
if url_path not in ['/api/compare/offline/v1']:
continue
url_path_paramters = getattr(view, 'parameters_doc', None)
if url_path_paramters:
......
import pyodbc
hil_sql = """
"""
afc_sql = """
"""
hil_cnxn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};', autocommit=True)
hil_cursor = hil_cnxn.cursor()
hil_cursor.execute(hil_sql)
hil_cursor.close()
hil_cnxn.close()
afc_cnxn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};', autocommit=True)
afc_cursor = afc_cnxn.cursor()
afc_cursor.execute(afc_sql)
afc_cursor.close()
afc_cnxn.close()
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!