所有摊位采用相同材料字段,没有个人/公司经营类型。认证只以 pos_store.id 关联,摊主账号作为操作人记录。
id:主键。store_id:摊位 ID,唯一。approved_application_id:当前有效的已通过申请,首次通过前为空。current_application_id:最新草稿/申请,便于恢复填写及查看进度。version:并发保护版本。create_time、update_time:时间。主表不重复存放身份证件和全部材料,已通过数据通过 approved_application_id 读取。最新申请待审核或驳回不自动清空已有有效指针。
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 生成的存储列,唯一索引在数据库层保证每摊位至多一个待审核申请;业务同时锁主体行并校验版本。