Rewrite fast_pptx_renderer.py to read requiredPageTypes from template config instead of hardcoding 5 slides. Add 10 slide builder functions (cover, company, narrative, chart, timeline, table, compare, synergy, conclusion, closing) with python-pptx native charts. Key changes: - Renderer reads templateConfig.requiredPageTypes and slidesConfig from DeckContract to determine slide sequence and per-slide metadata - routes.py loads PptTemplate and PptCompany from DB, normalizes all PDF extractions (not just the first), passes full context to renderer - renderer.py injects templateConfig, company info, and multi-product data into DeckContract - Add slides_config_json column to PptTemplate (migrate_017) for per-slide title/narrative/chartType configuration via admin UI - Admin template editor now supports drag-reorder slides, per-slide title/narrative hint, chart/table type selection - Add requiredPageTypes to savings/ink, savings/minimal, savings/business templates (were missing, causing fallback to defaults) - Fix IUL normalizer: add payYears and totalPremium to policy dict - Fix CI/IUL normalizer: add totalSurrenderValue alias to benefitRows so charts render correctly for all product types - Port calculation functions from baodanppt: decade_rows, paid_premium, simple_return, compound_return, find_payback_year Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
31 lines
657 B
JSON
31 lines
657 B
JSON
{
|
|
"id": "savings-business",
|
|
"planType": "savings",
|
|
"stylePreset": "business",
|
|
"sourceTemplateAssetId": "business",
|
|
"cloneReady": true,
|
|
"cloneRenderer": "savings-business-v1",
|
|
"displayName": "储蓄险商务风",
|
|
"maxDisplayPolicyYear": 80,
|
|
"tableIntervalYears": 10,
|
|
"requiredPageTypes": [
|
|
"cover",
|
|
"company",
|
|
"narrative",
|
|
"chart",
|
|
"chart",
|
|
"timeline",
|
|
"timeline",
|
|
"table",
|
|
"table",
|
|
"conclusion",
|
|
"closing"
|
|
],
|
|
"qualityRules": {
|
|
"forbidPlaceholderImages": true,
|
|
"forbidSyntheticOfficialValues": true,
|
|
"requirePdfHash": true,
|
|
"requireSourcePagesForOfficialTables": true
|
|
}
|
|
}
|