Commit Graph

17 Commits

Author SHA1 Message Date
63c7e87ea7 feat(ppt): add data review step between parsing and generation
Add a mandatory data verification step so users can inspect and edit
LLM-extracted data before generating the PPT.

- New PptDataReview.vue: auto-validation on mount, key metrics cards,
  editable benefit/withdrawal tables, inline error highlighting
- New PUT /session/<id>/extractions API endpoint for saving user edits
- Extend PptPage flow from 4 steps to 5 (upload→parse→review→generate→result)
- Update ppt-api.ts with updateExtractions() method
- Update PptParsing button text to match new flow

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-24 18:22:14 +08:00
1debd7df39 feat(ppt): upgrade renderer from 5 fixed slides to 10+ configurable pages
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>
2026-07-24 17:49:09 +08:00
3a0f4f6830 feat: support Dify-synced models without separate API key
When a model is selected from Dify, set provider='dify' and call
through Dify Chat API (/v1/chat-messages) using the existing
DIFY_CHAT_APP_API_KEY. No separate API key configuration needed.

- Frontend: hide API Key/Base URL fields when provider is 'dify',
  show 'via Dify, no API key needed' tag
- Backend: add _call_dify() to route through Dify Chat API
- Backend: _try_load_db_config supports dify provider without api_key

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-24 16:18:59 +08:00
02e299682e feat: support configurable image generation models for poster creation
- Expand poster image model settings with provider, model name, API key,
  and base URL fields (was only model name + API key)
- Add presets for OpenAI (gpt-image-1), Doubao (火山引擎), and Zhipu (CogView)
- Refactor image_generator.py to read config from system_settings DB instead
  of hardcoding gpt-image-1 and OPENAI_API_KEY env var
- All OpenAI-compatible image APIs work via configurable base URL
- Add doubao and cogview to brand name mapping

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-24 16:11:37 +08:00
cecf908153 fix: correct response data path for Dify models and settings API
The axios interceptor already returns response.data, so accessing
res.data.data was one level too deep, causing the models list to
always be empty.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-24 15:23:45 +08:00
7a53834f5d fix: use localhost for BaoDan admin URL in local dev
Replace hardcoded server IP 150.5.135.143 with localhost in
openDifyAdmin() to match local development environment.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-24 14:38:52 +08:00
53346c9def fix: query Dify DB directly for available models instead of API call
- Replace API-based model fetching with direct SQL query on
  provider_models table (shared PostgreSQL, no auth needed)
- Frontend: auto-detect base_url from model name when selecting
  a Dify model, set provider to 'custom'
- Remove unused requests import and API key fallback logic

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-24 14:20:34 +08:00
6d571f56a8 fix: auto-fetch Dify models using existing API keys as fallback
- Backend: try DIFY_CHAT/WORKFLOW_API_KEY when workspace key is missing
- Frontend: always show '从 Dify 获取' button, not just after first fetch

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-24 13:48:37 +08:00
c8e0c0bb1e feat: add model configuration for PPT and poster generation
- PptSettingsAdmin.vue: full settings page with provider/model/API key
  config for PPT extraction, poster copy, and poster image generation
- Backend: GET /insurance/admin/ppt/available-models to fetch models
  from Dify API (falls back to builtin list when unavailable)
- LLM client: read model config from SystemSetting DB with 60s cache,
  priority: database > environment variables > defaults
- ppt-admin-api.ts: add getAvailableModels() method

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-24 13:46:04 +08:00
6c3343a222 fix: accept cached extractions in generate/validate and improve parse error UX
- generate_ppt and validate_extraction now accept status 'cached'
  alongside 'success', matching the frontend's hasSuccess logic
- PptParsing: show extraction error messages in the results table
- PptParsing: show '解析失败' icon when all extractions fail
- PptParsing: only show '下一步' button when at least one extraction succeeded
- routes.py: add error logging with stack trace in parse endpoint

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-24 13:05:27 +08:00
c8832ae50c fix: add missing progressStatus computed in PptParsing.vue
progressStatus was referenced in the template but never defined,
causing a Vue runtime warning on every render.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-24 12:57:33 +08:00
6eded843a7 0723 PPT加海报功能01版本修复-数据可以正常加载 2026-07-23 21:32:38 +08:00
effc2a24e4 0723 PPT加海报功能01版本修复 2026-07-23 17:40:12 +08:00
5d28e4518e 0723 PPT加海报功能初步完成 2026-07-23 15:04:16 +08:00
4a556a1cc7 0723 PPT功能初步融合 2026-07-23 13:10:50 +08:00
d0a887d5c2 0712 修复一个版本 2026-07-12 14:17:18 +08:00
bc4c339e0c 第一次提交。可以使用企微群消息 2026-07-02 23:13:23 +08:00