# B5-3 comment* 三集合决策报告(需人工确认,执行模型未自动执行) 现状:`comment` / `comment_like` / `comment_operation_logs` 在仓库内无任何 schema, 但三页完整实现了增删改查。门禁 `fieldDriftCount: 20` 全部来自这三集合(missing-in-schema)。 ## 页面实际字段(来自 list.vue field) | 集合 | 字段 | |---|---| | comment | content, root_id, author_id, parent_id, article_id, like_count, create_time, update_time, reply_count, ip_location | | comment_like | user_id, comment_id, create_time | | comment_operation_logs | parent_id, user_id, content, like_count, create_time, update_time, status | ## 官方 opendb-news-comments 字段(仓库内现有 schema) `_id, article_id, user_id, comment_content, like_count, comment_type, reply_user_id, reply_comment_id, comment_date, comment_ip` ## 方案 A:新建 3 份 schema(按页面字段) - 动作:补 `comment.schema.json` + `comment_like.schema.json` + `comment_operation_logs.schema.json`(权限 + 索引),上传后门禁 20 条漂移清零。 - 风险:若云端实际用的是 `opendb-news-comments`,会造成双写分裂(两套评论表并存)。 - 成本:小,纯新增文件,不碰页面。 ## 方案 B:页面改用官方表 opendb-news-comments 字段映射(差异大): | 页面字段(comment) | 官方字段 | 说明 | |---|---|---| | content | comment_content | 改名 | | create_time | comment_date | 改名(类型需核对 timestamp vs date) | | author_id | user_id | 改名 | | root_id / parent_id | reply_comment_id | 语义不完全等同,需确认盖楼模型 | | article_id | article_id | 同名 | | like_count | like_count | 同名 | | reply_count / update_time / ip_location | 无 | 官方表无对应,需加字段或弃用 | | — | comment_type / reply_user_id / comment_ip | 页面无对应,需确认是否需要 | - 风险:字段语义差异大,改完需重建/迁移数据;`comment_like` 与 `comment_operation_logs` 在官方体系无对应表,需另行设计。 - 成本:大,涉及页面 field、表单、查询条件全改 + 数据迁移。 ## 建议 缺云端真相时倾向 **A(新建 schema)**:先让三页有合同可依,门禁清零; 待确认云端真实用表后再做合并迁移。若云端已在用 `opendb-news-comments` 且有数据, 则选 B,但必须先出数据迁移脚本再改页面。 ## 确认后执行清单 - 选 A:新建 3 份 schema + 3 份 index + init 权限(如需细粒度),跑 `npm run check:contracts` 验收漂移清零。 - 选 B:改三页 field/表单/查询 + 迁移脚本 + 重跑门禁 + changelog 标注破坏性变更。