feat(privacy): add personalized ads toggle in settings

- Add PrivacySettings schema with can_sell field (default: false)
- Move privacy toggle to GeneralSettingsScreen with clear labeling
- Update l10n for zh/en/zh_hant with user-friendly copy
- Clean up redundant PrivacyNotificationSettingsScreen
- Update profile-protocol.md to reflect new privacy schema
- Fix basedpyright warnings in user.py
This commit is contained in:
qzl
2026-04-17 13:11:09 +08:00
parent be30eb6eab
commit 913ed26f8d
17 changed files with 417 additions and 163 deletions
@@ -0,0 +1,31 @@
{
"name": "feat-privacy-do-not-sell",
"title": "Do Not Sell My Personal Information 开关",
"dev_type": "fullstack",
"created_at": "2026-04-17",
"status": "in_progress",
"worktree": "feat-privacy-do-not-sell",
"description": "实现 CCPA/CPRA 合规的 Do Not Sell My Personal Information 开关功能:将 privacy 字段升级为结构化 PrivacySettings 对象,主开关在隐私通知设置页,法律中心列表页提供快捷入口,后端存储用户偏好,默认开启(不卖)。",
"prd": "prd.md",
"related_docs": [
"docs/discussions/legal-compliance-us.md",
"https://uidqlzahr8w.feishu.cn/wiki/As6AwJRImilu4Lk0lNtcrbmXnOc"
],
"checklist": {
"backend": [
"Create PrivacySettings class with do_not_sell + future fields",
"Update ProfileSettingsV1.privacy to use PrivacySettings type",
"Add backward compatibility logic for existing dict data",
"Verify PATCH /users/me/settings works with new PrivacySettings"
],
"frontend": [
"Create PrivacySettings class matching backend schema",
"Update ProfileSettingsV1.privacy to use PrivacySettings type",
"Add SettingsSwitchTile to PrivacyNotificationSettingsScreen (main switch)",
"Keep Profile Visibility placeholder unchanged",
"Add SettingsMenuTile shortcut to LegalCenterScreen (CCPA compliance)",
"Implement navigation from LegalCenter to PrivacyNotificationSettings",
"Add l10n keys (zh/en/zh_Hant): title, description, enabled, disabled"
]
}
}