Commit Graph

11 Commits

Author SHA1 Message Date
zwt13703 57cdb01ec8 feat: 生成点表单重构 - 参考文件改为开关 + 备注字段
- 模型新增 need_ref_file(bool) + remark(text) 字段
- 生成点创建表单移除直接上传,改为「需要参考文件」开关 + 备注文本框
- 测试按钮:检测 need_ref → 弹出文件选择 → 上传后提取文本 + 调AI
- 生成任务:检查 ref_file_path,有则提取文本并入 prompt
- 前后端完整联调,TypeScript 零错误
2026-07-06 18:27:30 +08:00
zwt13703 c11ea22e88 fix: 占位符替换 - 新增 selected_text 字段彻底解决位置偏移问题
- 新增 generation_points.selected_text 字段存储用户实际选中的文本
- 生成任务优先使用 selected_text 直改 docx,不再依赖脆弱的位置偏移
- 前端创建生成点时同时传递选中文本内容
- 原始 docx 直改方案完美保留所有样式(加粗/标题/表格)
- 端到端验证: {{ placeholder }} → AI 内容替换成功,样式不变
2026-07-06 18:20:00 +08:00
zwt13703 e937449e6a fix: 样式丢失问题 - 生成任务改为直改原始 docx 保留样式
- generate.py: 直接加载原始 docx 用 python-docx 替换文本,不再经过 HTML→docx
- html_to_docx: 增强支持 bold/italic/heading 等基本格式
- text替换: 支持段落内 runs 和表格 cell 内的文本替换
- 结果: AI 内容正确插入,字体/加粗/标题等原始样式完全保留
2026-07-06 17:53:15 +08:00
zwt13703 3db8208c55 fix: Celery 异步任务 event loop 冲突修复
- 原因: 全局 async_session_factory 绑定在 Celery 主进程 event loop
- Celery fork worker 后创建新 loop,旧 connection 绑定冲突
- 修复: 每个任务内创建独立 async engine + session factory
- 任务完成后 dispose engine 释放连接
2026-07-06 17:45:05 +08:00
zwt13703 40b861cfcc fix: 核心 bug 修复 - API Key 加密/解密 + AI 调用 + 数据安全
- schema: 用 @field_serializer 掩码 api_key,不再直接修改 SQLAlchemy 对象
- API: 移除所有 model.api_key='***' 赋值,防止数据库被覆盖
- security: SHA256(SECRET_KEY) 派生合法 Fernet 32 字节密钥
- ai_adapter: CustomAdapter 改用 OpenAI-compatible messages 格式
- ai_adapter: trust_env=False 防止代理干扰,增加详细异常信息
- templates: bleach HTML 净化防止 XSS
- .env.example: CORS_ORIGINS 修复为 JSON 数组格式
- 端到端验证:单点测试 + 异步生成任务均通过
2026-07-06 17:26:32 +08:00
zwt13703 aeff8753ec feat: 补充完善 - 拖拽排序 + 系统设置 + 安全加固 + 文档更新
- 生成点拖拽排序: HTML5 Drag & Drop + batch-order API 持久化
- 系统设置 API: GET/PUT /api/v1/settings,前端接入 system_config 表
- 安全加固: bleach HTML 净化(XSS防护),文件类型白名单,上传大小限制
- 修复 Fernet 密钥: SHA256 派生合法 32 字节密钥
- README 更新: 修正技术栈版本,补充生产/开发部署步骤
2026-07-06 17:16:31 +08:00
zwt13703 c4c2b44434 fix: Fernet 密钥派生使用 SHA256 哈希生成合法 32 字节密钥
- 原因: key.ljust(44, b'=') 不产生合法的 Fernet 密钥
- 修复: SHA256(SECRET_KEY) → base64url 编码 → 有效 Fernet key
2026-07-06 17:03:55 +08:00
zwt13703 017a19515c feat: 阶段五 - 部署上线与安全加固
- Dockerfile: backend (FastAPI), celery-worker, web (多阶段构建 + Nginx)
- docker-compose.yml: 完整 5 服务编排 (postgres + redis + backend + celery + nginx)
- Nginx 反向代理配置 + gzip 压缩 + API 代理
- 安全增强: 请求大小限制、文件类型白名单(.docx/.txt/.pdf)、安全中间件
- .dockerignore: 排除 venv/node_modules 等
- .env.example: 精简为生产关键变量
- package.json: postinstall 自动复制 TinyMCE 自托管文件
- deploy.sh: 一键部署脚本
2026-07-06 16:57:00 +08:00
zwt13703 afabb6446a feat: 阶段三 - 异步任务与 AI 集成
- AI 调用适配器:工厂模式,支持 openai/azure/custom 三种供应商
- 参考文件解析器:提取 txt/docx/pdf 文本内容
- Celery 配置与生成任务:模板加载→生成点排序→参考解析→AI调用→HTML插入→文档保存
- 任务管理 API:触发/状态查询/结果下载(docx+pdf)/取消/列表
- 单点测试 API:生成点预览不保存文档
- 23 个 API 端点全部注册
2026-07-06 16:28:00 +08:00
zwt13703 aa84521449 feat: 阶段二 - 核心业务 API 实现
- Pydantic Schemas: AIModel, Template, GenerationPoint, GenerationTask
- 文档处理服务: docx↔HTML (Mammoth), docx→PDF (reportlab)
- AI 模型管理 API: CRUD + 启用/禁用切换 + API Key 加密
- 模板管理 API: 上传/转换HTML/在线编辑保存/下载(docx+pdf)
- 生成点管理 API: CRUD + 参考文件上传 + 批量排序
- 17 个 API 端点注册,后端启动验证通过
2026-07-06 16:18:23 +08:00
zwt13703 b5fa343bf8 feat: 阶段一 - 项目基础设施搭建
- 创建前后端项目目录结构
- docker-compose.yml (Postgres 18.3 + Redis 7)
- 后端:FastAPI + SQLAlchemy 异步引擎 + Alembic 迁移
- 5个ORM模型:AIModel, Template, GenerationPoint, GenerationTask, SystemConfig
- 核心模块:config, database, security(Fernet加密), file_storage
- 前端:Vite + React 18 + TS + Ant Design + React Router
- 侧边栏布局 + 5个占位页面
2026-07-06 16:16:23 +08:00