📎 Planetree LP CRM v2.0 - 附件服务统一化演示

Reference implementation for 阶段 1.5 (IndexedDB 模式) + 1.5.1 (R2 后端模式) · 走云端 R2,需要登录
🎯 演示目的: 验证 AttachmentService 统一接口, attachmentIndex 与 IndexedDB 的作用, "删除整个 entity" 时附件是否同步清理 (解决 v1 历史 bug)。
📂 6 个 moduleType: contact_card · cert_image · dd_attach · comm_attach · followup_dd_attach · followup_comm_attach
⚠️ 当前演示只展示前 3 个(后 3 个 moduleType 接口一致,代码加几个 entity 即可)
Bill Huang 的名片 0

🧪 关键测试: 删除整个 entity 的所有附件

这是 v1 历史 bug 修复点:AttachmentService.removeByEntity('contact_card', ...) 会一次性清掉这个联系人所有名片附件 (index + blob 同步)。

5 期条款书 的附件 0

🧪 关键测试: 删除整个 entity 的所有附件

v1 中 Storage.deleteDueDiligence 只删数据,附件成为孤儿。 v2 通过 AttachmentService.removeByEntity('dd_attach', ...) 一次性清理。

2026 Q2 与 Bill 的电话 附件 0

🧪 关键测试: 删除整个 entity 的所有附件

v1 中 Storage.deleteCommunication 也不删附件。 v2 同样用统一接口清理。

🔍 IndexedDB 调试面板 (attachmentIndex)
(已上 R2,要清空请走 app.html 后台或调后端 API)
总附件数 0
总大小 0 B
按 moduleType 分布
    attachmentId moduleType lpId entityId fieldName storedName size uploaded