26 lines
3.9 KiB
Markdown
26 lines
3.9 KiB
Markdown
# 协议全文与同意记录设计
|
||
|
||
用户已同意先实施协议全文展示及版本化同意记录。本轮复用内容后台和既有登录/隐私/资料授权入口;不新增融资28项填写内容、不开发私有上传或外部查询,不涉及同事产品机构库,不恢复产品AI条件分析。两仓原有短信未提交改动保留,短信仍默认关闭;本轮不提交、推送、部署或接生产。
|
||
|
||
## 协议与不可变版本
|
||
|
||
四种code固定对应scope:terms/account-terms、privacy/account-privacy、document-use/documents、data-authorization/data。fa_acticle作为协议草稿源,只有本轮结构化kind=agreement正文经运营确认已审核并正式发布后才成为可用协议;旧type2/3内容不自动转为正式版本。正式正文未知,本轮不编造、不填正式内容、不发布。
|
||
|
||
发布同事务保存fa_agreement_revision,唯一(code,version),冻结标题、正文、scope、SHA-256和UTC生效/发布时间。正文为纯文本,最多60000字节,保留换行,不执行HTML。版本ASCII字母数字点横线下划线、1至64字符,标题最多50字。未来生效版本不作为current;同版本不能改正文,修订须新版本。下架不抹除已发布历史,指定版本始终返回原文;新增/编辑/批量/旧入口不得绕过审核与版本约束。沿用后台权限及内容CSRF,不自动绑定正式角色。
|
||
|
||
## 同意与撤销
|
||
|
||
新增fa_user_consent保留本人同意的协议code/version/快照ID与摘要、服务端grantedAt、requestId。grant行保存首次revokedAt,每个已受理撤销请求追加event_kind=revoke命令并指向原grant;同意与撤销共享(user_id,request_id)唯一空间,新键重复撤销也不可被后续操作复用。服务端在事务与账户行锁内重核有效会话;grant读取当前已发布版并锁定,与发布锁顺序兼容。新请求必须scope匹配且版本当前,旧键同内容返回已有记录、异内容409,不因后续新版本而破坏旧键补确认。
|
||
|
||
GET /agreements/:code公开,version可选;GET /consents仅本人、可scope过滤和有界分页;POST /consents要求scope/agreementCode/agreementVersion/requestId;POST /consents/:id/revoke仅本人、重复保留首次时间、同键异操作拒绝。协议使用确认account-terms/account-privacy不当成可撤销的数据查询授权;仅documents/data提供撤销,撤销不删除历史证据。所有本地同意记录均不代表第三方授权或已经查询外部数据。
|
||
|
||
## 前端与登录
|
||
|
||
主包新增可匿名协议全文页,账号分包新增本人同意记录页。现有链接跳转全文,具备加载/未发布/失败重试和旧响应守卫;记录页可查看当时版本、手动撤销可选授权。复用现有登录勾选,加载terms/privacy后绑定所见版本;认证成功后使用当前会话保存两项同意,确认成功才跳转。登录已验证但保存未知时手动原键重试,不重复发送短信/验证密码;切换账户和离页不能回填。
|
||
|
||
后端登录契约和旧客户端兼容,本轮不启用强制协议登录策略;协议未发布时不产生同意证据,原有账户密码登录可继续,真实网络失败不能当未发布。正式正文/留存期限仍需业务确认。融资资料步骤的原选填行为保持,附件和外部查询仍未开放。
|
||
|
||
## 验证与迁移边界
|
||
|
||
新两表SQL只在全新私密本机MySQL隔离库安装,生产/schema迁移仅提供文件,不直接执行;独立Redis DB15、ROOT、命名空间和模型屏蔽。TDD先缺功能红测试,再测试发布不可变、历史精确读取、并发/幂等、跨账户、撤销、版本竞争、CSRF及旧内容/短信账户回归。前端纯测试、本地微信/Android编译与合成API受控渲染;不得通过默认H5入口访问生产API。全部完成后精确清理所属环境,真实渠道和正式正文验收不预填通过。
|