OCR 表格模式改为更适合计划书的 PSM 4。 分别支持斜杠年度、独立年度/年龄列、纵向压缩表格、保证/非保证双栏。 防止错误的坐标解析结果覆盖正确 OCR 数据。 身故利益表与退保价值表按保单年度合并。 修复吸烟状态、保额、年缴/单缴金额和缴费年期。 补齐 SIUL3、SBIUL2、GIUL3、FWD IF、AIA PIL2 产品配置。 多份计划书现在保留全部保司,不再只取第一家公司。 用户端保司选项、生成快照和渲染过程统一使用后台脱敏名
58 lines
1.8 KiB
Python
58 lines
1.8 KiB
Python
"""迁移 035:补充富卫 IF 和友邦 PIL2 的 IUL 产品配置。"""
|
||
import json
|
||
import logging
|
||
|
||
from sqlalchemy import text
|
||
|
||
logger = logging.getLogger(__name__)
|
||
|
||
|
||
def migrate():
|
||
from insurance.db.compat import db
|
||
|
||
products = [
|
||
{
|
||
"id": "fwd-if-iul",
|
||
"company_id": "fwd",
|
||
"display_name": "FWD IF",
|
||
"aliases": [
|
||
"FWD IF", "FWDSG IF", "FWD Singapore IF",
|
||
"IF Indexed Universal Life",
|
||
],
|
||
},
|
||
{
|
||
"id": "aia-pil2-iul",
|
||
"company_id": "aia",
|
||
"display_name": "AIA PIL2",
|
||
"aliases": ["PIL2", "PIL 2", "AIA PIL2"],
|
||
},
|
||
]
|
||
required_modules = json.dumps([
|
||
"cover",
|
||
"company",
|
||
"index-account-configuration",
|
||
"guaranteed-floor-analysis",
|
||
"legacy-leverage-analysis",
|
||
"recommendation",
|
||
"closing",
|
||
], ensure_ascii=False)
|
||
for product in products:
|
||
db.session.execute(text(
|
||
"INSERT INTO insurance_ppt_products "
|
||
"(id, company_id, plan_type, display_name, aliases_json, "
|
||
"required_modules_json, status, sort_order) "
|
||
"SELECT :id, :company_id, 'iul', :display_name, :aliases_json, "
|
||
":required_modules_json, 1, 20 "
|
||
"WHERE NOT EXISTS ("
|
||
"SELECT 1 FROM insurance_ppt_products WHERE id = :id"
|
||
")"
|
||
), {
|
||
"id": product["id"],
|
||
"company_id": product["company_id"],
|
||
"display_name": product["display_name"],
|
||
"aliases_json": json.dumps(product["aliases"], ensure_ascii=False),
|
||
"required_modules_json": required_modules,
|
||
})
|
||
db.session.commit()
|
||
logger.info("[migrate_035] 已补充富卫 IF 和友邦 PIL2 产品配置")
|