已完成用户APP首期功能开发
交付用户端首期页面、配套接口、后台资源及测试文档。用户APP构建、静态分析和三个管理后台构建通过;完整测试仍有2项失败,后端模型注释检查未通过,详见交付记录。
This commit is contained in:
66
backend/api/cmd/cli/family_migration.go
Normal file
66
backend/api/cmd/cli/family_migration.go
Normal file
@@ -0,0 +1,66 @@
|
||||
// 功能:家庭成员与设备共享表的增量迁移;版本:1.0.0。
|
||||
package main
|
||||
|
||||
// migrateFamilySharing 只新增家庭共享相关表、约束、索引和中文注释。
|
||||
func migrateFamilySharing() error {
|
||||
return migrateClientColumns([]string{
|
||||
`CREATE TABLE IF NOT EXISTS user_family_member (
|
||||
id bigserial PRIMARY KEY, identity varchar(36) NOT NULL UNIQUE, created_at timestamptz NOT NULL, updated_at timestamptz NOT NULL, deleted_at timestamptz,
|
||||
status integer NOT NULL DEFAULT 1 CHECK (status IN (1,3)), owner_user_account_id bigint NOT NULL REFERENCES user_account(id), member_user_account_id bigint NOT NULL DEFAULT 0,
|
||||
name varchar(64) NOT NULL, phone varchar(32) NOT NULL, relationship varchar(32) NOT NULL DEFAULT '', invite_status integer NOT NULL DEFAULT 10 CHECK (invite_status IN (10,20,30,40)),
|
||||
request_no varchar(36) NOT NULL, expires_at timestamptz NOT NULL, accepted_at timestamptz, revoked_at timestamptz,
|
||||
UNIQUE(owner_user_account_id, request_no))`,
|
||||
`COMMENT ON TABLE user_family_member IS '家庭成员邀请与确认关系;紧急联系人不自动成为家庭成员'`,
|
||||
`COMMENT ON COLUMN user_family_member.id IS '数据库自增内部主键'`,
|
||||
`COMMENT ON COLUMN user_family_member.identity IS '对外业务UUID标识'`,
|
||||
`COMMENT ON COLUMN user_family_member.created_at IS '邀请创建时间'`,
|
||||
`COMMENT ON COLUMN user_family_member.updated_at IS '最后修改时间'`,
|
||||
`COMMENT ON COLUMN user_family_member.deleted_at IS '软删除时间'`,
|
||||
`COMMENT ON COLUMN user_family_member.status IS '通用状态:1=启用,3=归档'`,
|
||||
`COMMENT ON COLUMN user_family_member.owner_user_account_id IS '房主用户内部主键'`,
|
||||
`COMMENT ON COLUMN user_family_member.member_user_account_id IS '已接受邀请的成员用户内部主键;0=尚未接受'`,
|
||||
`COMMENT ON COLUMN user_family_member.name IS '房主填写的成员称呼'`,
|
||||
`COMMENT ON COLUMN user_family_member.phone IS '受邀手机号;接口仅脱敏显示'`,
|
||||
`COMMENT ON COLUMN user_family_member.relationship IS '与房主关系描述'`,
|
||||
`COMMENT ON COLUMN user_family_member.invite_status IS '邀请状态:10=待确认,20=已接受,30=已拒绝,40=已撤销'`,
|
||||
`COMMENT ON COLUMN user_family_member.request_no IS '同一房主邀请请求幂等UUID'`,
|
||||
`COMMENT ON COLUMN user_family_member.expires_at IS '邀请失效时间'`,
|
||||
`COMMENT ON COLUMN user_family_member.accepted_at IS '成员接受邀请时间'`,
|
||||
`COMMENT ON COLUMN user_family_member.revoked_at IS '房主撤销成员时间'`,
|
||||
`CREATE UNIQUE INDEX IF NOT EXISTS ux_family_active_phone ON user_family_member(owner_user_account_id,phone) WHERE status=1 AND invite_status IN (10,20) AND deleted_at IS NULL`,
|
||||
`CREATE INDEX IF NOT EXISTS idx_family_invitee ON user_family_member(phone,invite_status,status)`,
|
||||
`CREATE TABLE IF NOT EXISTS user_device_share (
|
||||
id bigserial PRIMARY KEY, identity varchar(36) NOT NULL UNIQUE, created_at timestamptz NOT NULL, updated_at timestamptz NOT NULL, deleted_at timestamptz,
|
||||
status integer NOT NULL DEFAULT 1 CHECK (status IN (1,3)), family_member_id bigint NOT NULL REFERENCES user_family_member(id), product_info_id bigint NOT NULL REFERENCES product_info(id),
|
||||
can_view boolean NOT NULL DEFAULT false, can_alert boolean NOT NULL DEFAULT false, can_control boolean NOT NULL DEFAULT false, UNIQUE(family_member_id,product_info_id))`,
|
||||
`COMMENT ON TABLE user_device_share IS '家庭成员按设备分配的查看、告警和控制权限'`,
|
||||
`COMMENT ON COLUMN user_device_share.id IS '数据库自增内部主键'`,
|
||||
`COMMENT ON COLUMN user_device_share.identity IS '对外业务UUID标识'`,
|
||||
`COMMENT ON COLUMN user_device_share.created_at IS '授权创建时间'`,
|
||||
`COMMENT ON COLUMN user_device_share.updated_at IS '授权最后修改时间'`,
|
||||
`COMMENT ON COLUMN user_device_share.deleted_at IS '软删除时间'`,
|
||||
`COMMENT ON COLUMN user_device_share.status IS '授权状态:1=启用,3=归档'`,
|
||||
`COMMENT ON COLUMN user_device_share.family_member_id IS '家庭成员关系内部主键'`,
|
||||
`COMMENT ON COLUMN user_device_share.product_info_id IS '房主名下设备内部主键'`,
|
||||
`COMMENT ON COLUMN user_device_share.can_view IS '是否允许查看设备资料和状态'`,
|
||||
`COMMENT ON COLUMN user_device_share.can_alert IS '是否允许接收危险告警'`,
|
||||
`COMMENT ON COLUMN user_device_share.can_control IS '是否允许发起远程控制;执行时仍需二次确认'`,
|
||||
`CREATE TABLE IF NOT EXISTS user_family_audit (
|
||||
id bigserial PRIMARY KEY, identity varchar(36) NOT NULL UNIQUE, created_at timestamptz NOT NULL, updated_at timestamptz NOT NULL, deleted_at timestamptz,
|
||||
status integer NOT NULL DEFAULT 1, owner_user_account_id bigint NOT NULL REFERENCES user_account(id), family_member_id bigint NOT NULL DEFAULT 0,
|
||||
actor_user_account_id bigint NOT NULL REFERENCES user_account(id), action varchar(32) NOT NULL, summary varchar(512) NOT NULL DEFAULT '')`,
|
||||
`COMMENT ON TABLE user_family_audit IS '家庭邀请和设备授权操作审计,只记录必要摘要'`,
|
||||
`COMMENT ON COLUMN user_family_audit.id IS '数据库自增内部主键'`,
|
||||
`COMMENT ON COLUMN user_family_audit.identity IS '对外业务UUID标识'`,
|
||||
`COMMENT ON COLUMN user_family_audit.created_at IS '操作发生时间'`,
|
||||
`COMMENT ON COLUMN user_family_audit.updated_at IS '记录更新时间'`,
|
||||
`COMMENT ON COLUMN user_family_audit.deleted_at IS '软删除时间,审计记录正常不删除'`,
|
||||
`COMMENT ON COLUMN user_family_audit.status IS '记录状态:1=有效'`,
|
||||
`COMMENT ON COLUMN user_family_audit.owner_user_account_id IS '房主用户内部主键'`,
|
||||
`COMMENT ON COLUMN user_family_audit.family_member_id IS '关联成员内部主键;0=无成员'`,
|
||||
`COMMENT ON COLUMN user_family_audit.actor_user_account_id IS '执行操作的用户内部主键'`,
|
||||
`COMMENT ON COLUMN user_family_audit.action IS '操作类型:invite/accept/reject/update_permissions/revoke'`,
|
||||
`COMMENT ON COLUMN user_family_audit.summary IS '不含手机号的操作摘要'`,
|
||||
`CREATE INDEX IF NOT EXISTS idx_family_audit_owner_time ON user_family_audit(owner_user_account_id,created_at DESC)`,
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user