# 摊位认证数据模型草案 所有摊位采用相同材料字段,没有个人/公司经营类型。认证只以 `pos_store.id` 关联,摊主账号作为操作人记录。 ## stall_qualification - `id`:主键。 - `store_id`:摊位 ID,唯一。 - `approved_application_id`:当前有效的已通过申请,首次通过前为空。 - `current_application_id`:最新草稿/申请,便于恢复填写及查看进度。 - `version`:并发保护版本。 - `create_time`、`update_time`:时间。 主表不重复存放身份证件和全部材料,已通过数据通过 `approved_application_id` 读取。最新申请待审核或驳回不自动清空已有有效指针。 ## stall_qualification_application - `id`、`qualification_id`、`store_id`、`application_version`。 - `status`:草稿、待审核、通过、驳回;数值定义在正式接口契约中统一。 - `responsible_name`、`contact_phone`、`identity_number`、`food_registration_number`。 - `identity_image_urls`、`stall_image_urls`、`food_registration_image_urls`:商品图片路径数组(`/profile/upload/YYYY/MM/DD/文件名.jpg或png`)序列化存储,不保存文件二进制;新图片按商品方式公开访问。兼容历史 `storeId/UUID.jpg或png` 私有引用,不回写旧申请。字段、Mapper、SQL 均不变,无新数据迁移。 - 第一版只保存统一表单的四组资料,不建立商业/税籍登记、保险等补充证明字段。 - `stall_name_snapshot`、`stall_address_snapshot`、`night_market_id_snapshot`:提交时由服务端读摊位数据固化,用于审核同一版本的实际内容。 - `submitted_by`、`submitted_at`。 - `reviewed_by`、`reviewed_at`、`reject_reason`。 - `version`、`create_time`、`update_time`。 同一认证主体的申请版本唯一。草稿允许修改,待审核及已经审核的申请材料不可改;驳回重提创建新版本而不是覆写驳回记录。DDL 已登记到 `updatesql/sql.md`,未执行。 `pending_store_id` 是由 `status=1` 生成的存储列,唯一索引在数据库层保证每摊位至多一个待审核申请;业务同时锁主体行并校验版本。