af057ff165
Keep current plans and release controls discoverable without losing historical evidence, and include the reviewed Windows start/stop workflow.
2.8 KiB
2.8 KiB
AI 合同平台 V2 - T4 合同仓库 MVP 闭环记录
日期:2026-06-24
目标
对照《AI 合同平台 V2 重构版开发方案》,本轮进入 T4:合同仓库 MVP。目标不是做复杂企业网盘,而是服务合同主流程,让用户能完成:
- 查看合同附件列表。
- 在线预览可读文本内容。
- 下载原始附件。
- 从附件直接进入关联合同详情。
- 附件上传、下载行为进入合同审计链。
本轮完成
后端
- 新增文件详情接口:
GET /api/v1/files/{file_id}。 - 新增文件预览接口:
GET /api/v1/files/{file_id}/preview。 - 新增文件下载接口:
GET /api/v1/files/{file_id}/download。 - 新增响应模型:
FilePreviewFileDownload
- SQLite 仓储支持从配置的
file_storage_dir读取附件内容。 - 读取文件时校验存储路径必须位于配置的附件目录内,避免误读仓库外文件。
- 下载关联合同附件时写入
file_downloaded审计事件。 - 内存仓储同步支持上传内容暂存、预览和下载,保持本地模式行为一致。
前端
- 合同仓库
/files的“预览”按钮接入真实预览接口。 - “下载”按钮接入真实下载接口,前端根据 base64 内容生成浏览器下载。
- 关联合同标题仍作为进入合同详情的主入口。
- 预览内容使用表格内轻量展开,不新增复杂文件系统页面。
契约和测试
yuqei-contract-platform/packages/contract-openapi/openapi.yaml已补齐文件详情、预览、下载接口。ContractAuditEvent.event_type增加file_downloaded。- 新增测试覆盖:
- 文件详情读取。
- 文本预览。
- 下载内容一致。
- 附件下载审计回写到合同详情。
简化原则检查
本轮继续遵循“企业主线轻量化”原则:
- 文件仓库只围绕合同附件,不做独立复杂网盘。
- 文件列表里标题/合同名是主要入口,预览和下载是两个明确动作。
- 审计存在,但不压到普通操作前面。
- 后端保留可扩展点,后续可替换为对象存储或流式下载,但当前 API 对前端足够稳定。
验证结果
python -m pytest yuqei-contract-platform\services\contract-api\tests -q:18 passed。python -m compileall yuqei-contract-platform\services\contract-api\src\yuqei_contract_api:通过。python -c "import yaml; ... openapi.yaml ...":通过。npm --prefix yuqei-contract-platform\apps\contract-web run build:通过。npm --prefix yuqei-contract-platform\apps\contract-web run typecheck:通过。
后续建议
下一步可以继续 T5:统一搜索 MVP,把合同、文件、审查任务统一接到真实查询入口,并保持“结果标题作为主入口、少按钮、按更新时间排序”的简单体验。