diff --git a/票据理赔自动化/case.py b/票据理赔自动化/case.py index 4d229ea..4d5d9d1 100644 --- a/票据理赔自动化/case.py +++ b/票据理赔自动化/case.py @@ -90,12 +90,12 @@ def receipt_adjust( # 初始化理算记录 adjustments = [] - # 初始化票据剩余理算金额 - remaining_adjustment_amount = masterdata.query_remaining_adjustment_amount( - receipt_number=receipt["number"], + # 初始化票据剩余金额 + remaining_amount = masterdata.query_remaining_amount( + number=receipt["number"], ) - if remaining_adjustment_amount is None: - remaining_adjustment_amount = ( + if remaining_amount is None: + remaining_amount = ( receipt["personal_self_payment"] # 个人自费金额 + receipt["non_medical_payment"] # 个人自付金额 + receipt["reasonable_amount"] # 合理金额 @@ -152,7 +152,7 @@ def receipt_adjust( adjustment_amount = max( Decimal("0.00"), min( - remaining_adjustment_amount, # 剩余理算金额 + remaining_amount, # 票据剩余金额 remaining_coverage_amount, # 个单剩余保额 adjustable_amount := ( ( @@ -198,12 +198,12 @@ def receipt_adjust( "reasonable_amount": receipt["reasonable_amount"], # 合理金额 "reasonable_ratio": liability["reasonable_ratio"], # 合理理算比例 "reasonable_adjustable_amount": reasonable_adjustable_amount, # 合理可理算金额 - "remaining_adjustment_amount": remaining_adjustment_amount, # 剩余理算金额 + "remaining_amount": remaining_amount, # 票据剩余金额 "remaining_coverage_amount": remaining_coverage_amount, # 个单剩余保额 "adjustable_amount": adjustable_amount, # 可理算金额 "adjustment_amount": adjustment_amount, # 理算金额 "adjustment_explanation": f""" - 1、剩余理算金额:{remaining_adjustment_amount:.2f}; + 1、票据剩余金额:{remaining_amount:.2f}; 2、个单剩余保额:{remaining_coverage_amount:.2f}; 3、可理算金额:{adjustable_amount:.2f},其中: 1)个人自费可理算金额:{personal_self_adjustable_amount:.2f}={receipt['personal_self_payment']:.2f}*{liability['personal_self_ratio']:.2f}%; @@ -218,9 +218,9 @@ def receipt_adjust( } ) - remaining_adjustment_amount -= adjustment_amount - # 若剩余理算金额小于等于0则跳出循环 - if remaining_adjustment_amount <= Decimal("0.00"): + remaining_amount -= adjustment_amount + # 若票据剩余金额小于等于0则跳出循环 + if remaining_amount <= Decimal("0.00"): break if not adjustments: @@ -241,7 +241,7 @@ def receipt_adjust( "reasonable_amount": receipt["reasonable_amount"], # 合理金额 "reasonable_ratio": None, # 合理理算比例 "reasonable_adjustable_amount": None, # 合理可理算金额 - "remaining_adjustment_amount": remaining_adjustment_amount, # 剩余理算金额 + "remaining_amount": remaining_amount, # 票据剩余金额 "remaining_coverage_amount": None, # 个单剩余保额 "adjustable_amount": None, # 可理算金额 "adjustment_amount": Decimal("0.00"), # 理算金额 @@ -250,9 +250,9 @@ def receipt_adjust( ) # 新增理算记录 - masterdata.add_ajustment( - receipt_number=receipt["number"], - remaining_adjustment_amount=remaining_adjustment_amount, + masterdata.add_receipt_adjustment( + number=receipt["number"], + remaining_amount=remaining_amount, ) return adjustments diff --git a/票据理赔自动化/database.db b/票据理赔自动化/database.db index 8167cfc..f41f3fa 100644 Binary files a/票据理赔自动化/database.db and b/票据理赔自动化/database.db differ diff --git a/票据理赔自动化/directory/254728869001/application_1.jpg b/票据理赔自动化/directory/254728869001/image_01.jpg similarity index 100% rename from 票据理赔自动化/directory/254728869001/application_1.jpg rename to 票据理赔自动化/directory/254728869001/image_01.jpg diff --git a/票据理赔自动化/directory/254728869001/beneficiary_1.jpg b/票据理赔自动化/directory/254728869001/image_02.jpg similarity index 100% rename from 票据理赔自动化/directory/254728869001/beneficiary_1.jpg rename to 票据理赔自动化/directory/254728869001/image_02.jpg diff --git a/票据理赔自动化/directory/254728869001/insurant_1.jpg b/票据理赔自动化/directory/254728869001/image_03.jpg similarity index 100% rename from 票据理赔自动化/directory/254728869001/insurant_1.jpg rename to 票据理赔自动化/directory/254728869001/image_03.jpg diff --git a/票据理赔自动化/directory/254728869001/invoice_1.jpg b/票据理赔自动化/directory/254728869001/image_04.jpg similarity index 100% rename from 票据理赔自动化/directory/254728869001/invoice_1.jpg rename to 票据理赔自动化/directory/254728869001/image_04.jpg diff --git a/票据理赔自动化/directory/254728869001/invoice_2.jpg b/票据理赔自动化/directory/254728869001/image_05.jpg similarity index 100% rename from 票据理赔自动化/directory/254728869001/invoice_2.jpg rename to 票据理赔自动化/directory/254728869001/image_05.jpg diff --git a/票据理赔自动化/directory/254728869001/invoice_3.jpg b/票据理赔自动化/directory/254728869001/image_06.jpg similarity index 100% rename from 票据理赔自动化/directory/254728869001/invoice_3.jpg rename to 票据理赔自动化/directory/254728869001/image_06.jpg diff --git a/票据理赔自动化/directory/254728869001/invoice_4.jpg b/票据理赔自动化/directory/254728869001/image_07.jpg similarity index 100% rename from 票据理赔自动化/directory/254728869001/invoice_4.jpg rename to 票据理赔自动化/directory/254728869001/image_07.jpg diff --git a/票据理赔自动化/directory/254728869001/invoice_5.jpg b/票据理赔自动化/directory/254728869001/image_08.jpg similarity index 100% rename from 票据理赔自动化/directory/254728869001/invoice_5.jpg rename to 票据理赔自动化/directory/254728869001/image_08.jpg diff --git a/票据理赔自动化/directory/254728869001/invoice_6.jpg b/票据理赔自动化/directory/254728869001/image_09.jpg similarity index 100% rename from 票据理赔自动化/directory/254728869001/invoice_6.jpg rename to 票据理赔自动化/directory/254728869001/image_09.jpg diff --git a/票据理赔自动化/directory/254728869001/invoice_7.jpg b/票据理赔自动化/directory/254728869001/image_10.jpg similarity index 100% rename from 票据理赔自动化/directory/254728869001/invoice_7.jpg rename to 票据理赔自动化/directory/254728869001/image_10.jpg diff --git a/票据理赔自动化/directory/254728869001/invoice_8.jpg b/票据理赔自动化/directory/254728869001/image_11.jpg similarity index 100% rename from 票据理赔自动化/directory/254728869001/invoice_8.jpg rename to 票据理赔自动化/directory/254728869001/image_11.jpg diff --git a/票据理赔自动化/directory/254728869001/invoice_9.jpg b/票据理赔自动化/directory/254728869001/image_12.jpg similarity index 100% rename from 票据理赔自动化/directory/254728869001/invoice_9.jpg rename to 票据理赔自动化/directory/254728869001/image_12.jpg diff --git a/票据理赔自动化/directory/254728869001/invoice_10.jpg b/票据理赔自动化/directory/254728869001/image_13.jpg similarity index 100% rename from 票据理赔自动化/directory/254728869001/invoice_10.jpg rename to 票据理赔自动化/directory/254728869001/image_13.jpg diff --git a/票据理赔自动化/directory/254728869001/invoice_11.jpg b/票据理赔自动化/directory/254728869001/image_14.jpg similarity index 100% rename from 票据理赔自动化/directory/254728869001/invoice_11.jpg rename to 票据理赔自动化/directory/254728869001/image_14.jpg diff --git a/票据理赔自动化/directory/254728869001/invoice_12.jpg b/票据理赔自动化/directory/254728869001/image_15.jpg similarity index 100% rename from 票据理赔自动化/directory/254728869001/invoice_12.jpg rename to 票据理赔自动化/directory/254728869001/image_15.jpg diff --git a/票据理赔自动化/dossiers/254728869001.html b/票据理赔自动化/dossiers/254728869001.html index ce73aeb..9d849cf 100644 --- a/票据理赔自动化/dossiers/254728869001.html +++ b/票据理赔自动化/dossiers/254728869001.html @@ -3,7 +3,7 @@ - 票据理赔自动化报告 + 票据理赔自动化 -
-
+
-

254728869001理算报告

+

理赔报告

- 保险分公司: 中银保险有限公司苏州分公司 | - 报案时间: 2025-07-25 12:00:00 + 保险分公司名称: 中银保险有限公司苏州分公司 | + 报案时间: 2025-07-25 12:00:00 | 赔案号:254728869001

@@ -429,105 +409,105 @@ 03 - 254728869001/insurant_1.jpg + image_03.jpg 居民身份证(国徽、头像面) 是 02 - 254728869001/beneficiary_1.jpg + image_02.jpg 银行卡 否,无需识别 01 - 254728869001/application_1.jpg + image_01.jpg 理赔申请书 是 04 - 254728869001/invoice_1.jpg + image_04.jpg 增值税发票 是 05 - 254728869001/invoice_10.jpg + image_13.jpg 增值税发票 是 06 - 254728869001/invoice_11.jpg + image_15.jpg 增值税发票 是 07 - 254728869001/invoice_12.jpg + image_05.jpg 增值税发票 是 08 - 254728869001/invoice_2.jpg + image_06.jpg 增值税发票 是 09 - 254728869001/invoice_3.jpg + image_07.jpg 增值税发票 是 10 - 254728869001/invoice_4.jpg + image_08.jpg 增值税发票 是 11 - 254728869001/invoice_5.jpg + image_09.jpg 增值税发票 是 12 - 254728869001/invoice_6.jpg + image_10.jpg 增值税发票 是 13 - 254728869001/invoice_7.jpg + image_11.jpg 增值税发票 是 14 - 254728869001/invoice_8.jpg + image_12.jpg 增值税发票 是 15 - 254728869001/invoice_9.jpg + image_14.jpg 增值税发票 是 @@ -618,7 +598,7 @@
-

在保个单

+

可理赔责任

@@ -672,7 +652,7 @@
理算金额
- 1860.94 + 0.00
@@ -694,9 +674,9 @@ 关联影像件: 0615
@@ -793,7 +773,7 @@
- + @@ -834,9 +814,9 @@ 关联影像件: 0706 @@ -942,7 +922,7 @@
剩余理算金额票据剩余金额 团单号 个单号 个单剩余保额
- + @@ -983,9 +963,9 @@ 关联影像件: 1413 @@ -1082,7 +1062,7 @@
剩余理算金额票据剩余金额 团单号 个单号 个单剩余保额
- + @@ -1123,9 +1103,9 @@ 关联影像件: 1312 @@ -1222,7 +1202,7 @@
剩余理算金额票据剩余金额 团单号 个单号 个单剩余保额
- + @@ -1237,22 +1217,22 @@ - + - + - +
剩余理算金额票据剩余金额 团单号 个单号 个单剩余保额
607.000.00 3291120253201000000001 3206021974013100295000.003139.06 药店购药补充 0.00 0.00 607.00 607.00607.000.00
- 理算金额合计: 607.00元 + 理算金额合计: 0.00元
@@ -1263,9 +1243,9 @@ 关联影像件: 1211
@@ -1362,7 +1342,7 @@ - + @@ -1377,22 +1357,22 @@ - + - + - +
剩余理算金额票据剩余金额 团单号 个单号 个单剩余保额
607.000.00 3291120253201000000001 3206021974013100294393.003139.06 药店购药补充 0.00 0.00 607.00 607.00607.000.00
- 理算金额合计: 607.00元 + 理算金额合计: 0.00元
@@ -1403,7 +1383,7 @@ 关联影像件: 05 - 剩余理算金额 + 票据剩余金额 团单号 个单号 个单剩余保额 @@ -1517,22 +1497,22 @@ - 119.56 + 0.00 3291120253201000000001 320602197401310029 - 3786.00 + 3139.06 药店购药补充 0.00 0.00 119.56 119.56 - 119.56 + 0.00
- 理算金额合计: 119.56元 + 理算金额合计: 0.00元
@@ -1543,9 +1523,9 @@ 关联影像件: 1514 @@ -1642,7 +1622,7 @@ - + @@ -1657,22 +1637,22 @@ - + - + - +
剩余理算金额票据剩余金额 团单号 个单号 个单剩余保额
123.480.00 3291120253201000000001 3206021974013100293666.443139.06 药店购药补充 0.00 0.00 123.48 123.48123.480.00
- 理算金额合计: 123.48元 + 理算金额合计: 0.00元
@@ -1683,7 +1663,7 @@ 关联影像件: 04 - 剩余理算金额 + 票据剩余金额 团单号 个单号 个单剩余保额 @@ -1806,22 +1786,22 @@ - 13.00 + 0.00 3291120253201000000001 320602197401310029 - 3542.96 + 3139.06 药店购药补充 0.00 0.00 13.00 13.00 - 13.00 + 0.00
- 理算金额合计: 13.00元 + 理算金额合计: 0.00元
@@ -1832,9 +1812,9 @@ 关联影像件: 0807 @@ -1940,7 +1920,7 @@ - + @@ -1958,7 +1938,7 @@ - + @@ -1981,9 +1961,9 @@ 关联影像件: 1009 @@ -2080,7 +2060,7 @@
剩余理算金额票据剩余金额 团单号 个单号 个单剩余保额0.00 3291120253201000000001 3206021974013100293529.963139.06 药店购药补充 0.00 0.00
- + @@ -2095,22 +2075,22 @@ - + - + - +
剩余理算金额票据剩余金额 团单号 个单号 个单剩余保额
131.500.00 3291120253201000000001 3206021974013100293529.963139.06 药店购药补充 0.00 0.00 131.50 131.50131.500.00
- 理算金额合计: 131.50元 + 理算金额合计: 0.00元
@@ -2121,9 +2101,9 @@ 关联影像件: 1110 @@ -2220,7 +2200,7 @@ - + @@ -2235,22 +2215,22 @@ - + - + - +
剩余理算金额票据剩余金额 团单号 个单号 个单剩余保额
156.200.00 3291120253201000000001 3206021974013100293398.463139.06 药店购药补充 0.00 0.00 156.20 156.20156.200.00
- 理算金额合计: 156.20元 + 理算金额合计: 0.00元
@@ -2261,9 +2241,9 @@ 关联影像件: 0908 @@ -2360,7 +2340,7 @@ - + @@ -2375,22 +2355,22 @@ - + - + - +
剩余理算金额票据剩余金额 团单号 个单号 个单剩余保额
103.200.00 3291120253201000000001 3206021974013100293242.263139.06 药店购药补充 0.00 0.00 103.20 103.20103.200.00
- 理算金额合计: 103.20元 + 理算金额合计: 0.00元
diff --git a/票据理赔自动化/image.py b/票据理赔自动化/image.py index 9b767c7..93b904c 100644 --- a/票据理赔自动化/image.py +++ b/票据理赔自动化/image.py @@ -118,7 +118,7 @@ def image_classify(image_index: int, image_path: Path, dossier: Dict[str, Any]) # 将已分类影像件添加至影像件层 dossier["images_layer"][f"{image_index:02d}"] = { "image_path": image_path.as_posix(), # 影像件路径 - "image_relative_path": image_path.relative_to(image_path.parent.parent).as_posix(), # 影像件相对路径 + "image_name": image_path.name, # 影像件名称 "image_format": image_format, # 影像件格式 "image_guid": image_guid, # 影像件唯一标识 "image_base64": image_base64, # 影像件BASE64编码 diff --git a/票据理赔自动化/masterdata.py b/票据理赔自动化/masterdata.py index f28cd36..9ef05a5 100644 --- a/票据理赔自动化/masterdata.py +++ b/票据理赔自动化/masterdata.py @@ -161,14 +161,16 @@ class MasterData(SQLite): # 初始化票据理算表 self.execute( sql=""" - CREATE TABLE IF NOT EXISTS adjustments + CREATE TABLE IF NOT EXISTS receipt_adjustments ( + --理算记录唯一标识 + guid TEXT PRIMARY KEY, --票据号 - receipt_number TEXT PRIMARY KEY, - --剩余理算金额 - remaining_adjustment_amount TEXT NOT NULL, + number TEXT NOT NULL, + --剩余金额 + remaining_amount TEXT NOT NULL, --理算时间 - adjust_time TEXT NOT NULL + adjust_time TEXT NOT NULL ) """ ) @@ -323,31 +325,31 @@ class MasterData(SQLite): except Exception as exception: raise RuntimeError(f"{str(exception)}") from exception - def query_remaining_adjustment_amount( + def query_remaining_amount( self, - receipt_number: str, + number: str, ) -> Optional[Decimal]: """ - 根据票据号查询剩余理算金额 - :param receipt_number: 票据号 - :return: 剩余理算金额 + 根据票据号查询剩余金额 + :param number: 票据号 + :return: 剩余金额 """ try: with self: result = self.query_one( sql=""" - SELECT remaining_adjustment_amount - FROM adjustments - WHERE receipt_number = ? + SELECT remaining_amount + FROM receipt_adjustments + WHERE number = ? ORDER BY adjust_time DESC LIMIT 1; """, - parameters=(receipt_number,), + parameters=(number,), ) if not result: return None - return Decimal(result["remaining_adjustment_amount"]).quantize( + return Decimal(result["remaining_amount"]).quantize( Decimal("0.00"), rounding=ROUND_HALF_UP, ) @@ -355,34 +357,47 @@ class MasterData(SQLite): except Exception as exception: raise RuntimeError(f"{str(exception)}") from exception - def add_ajustment( + def add_receipt_adjustment( self, - receipt_number: str, - remaining_adjustment_amount: Decimal, + number: str, + remaining_amount: Decimal, ) -> None: """ - 新增理算记录 - :param receipt_number: 票据号 - :param remaining_adjustment_amount: 剩余理算金额 + 新增票据理算记录 + :param number: 票据号 + :param remaining_amount: 剩余金额 :return: 无 """ - if remaining_adjustment_amount < Decimal("0.00"): - raise ValueError("剩余理算金额小于0") + if remaining_amount < Decimal("0.00"): + raise ValueError("剩余金额小于0") # 当前时间 current_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S.%f") + # 构建票据理算记录唯一标识 + + guid = ( + md5( + string=f"{number} {remaining_amount:.2f} {current_time}".encode( + "utf-8" + ) + ) + .hexdigest() + .upper() + ) + with self: if not self.execute( sql=""" - INSERT INTO adjustments - (receipt_number, remaining_adjustment_amount, adjust_time) + INSERT INTO receipt_adjustments + (guid, number, remaining_amount, adjust_time) VALUES - (?, ?, ?) + (?, ?, ?, ?) """, parameters=( - receipt_number, - f"{remaining_adjustment_amount:.2f}", + guid, + number, + f"{remaining_amount:.2f}", current_time, ), ): diff --git a/票据理赔自动化/template.html b/票据理赔自动化/template.html index 5f16412..f234778 100644 --- a/票据理赔自动化/template.html +++ b/票据理赔自动化/template.html @@ -3,7 +3,7 @@ - 票据理赔自动化报告 + 票据理赔自动化 -
-
+
-

{{ obj["report_layer"]["case_number"] }}理算报告

+

理赔报告

- 保险分公司: {{ obj["report_layer"]["insurer_company"] }} | + 保险分公司名称: {{ obj["report_layer"]["insurer_company"] }} | 报案时间: {{ obj["report_layer"]["report_time"] | - datetime_to_str }} + datetime_to_str }} | 赔案号:{{ + obj["report_layer"]["case_number"] }}

@@ -432,7 +413,7 @@ {% for image_index,image in obj["images_layer"].items() %} {{ image_index }} - {{ image["image_relative_path"] }} + {{ image["image_name"] }} {{ image["image_type"] }} {{ image["image_recognized"] }} @@ -529,7 +510,7 @@
-

在保个单

+

可理赔责任

@@ -702,7 +683,7 @@
- + @@ -717,7 +698,7 @@ {% for adjustment in receipt["adjustments"] %} - +
剩余理算金额票据剩余金额 团单号 个单号 个单剩余保额
{{ adjustment["remaining_adjustment_amount"] }}{{ adjustment["remaining_amount"] }} {{ adjustment["group_policy"] }} {{ adjustment["person_policy"] }} {{ adjustment["remaining_coverage_amount"] }}