用户界面个性化
1)原则
1.首先是好处,然后是"魔术"。任何更改都应该缩短目标(投注/存款/游戏/设置)的路径,而不仅仅是"惊喜"。
2.透明度和控制。用户可以看到什么是个性化的,并且易于管理。有一个"聪明的个性化"拨号器。
3.柔和的适应。建议而不是强加: 不引人注目的建议,保持手动选择.
4.安全和隐私。数据最少,只有一致的信号,可理解的存储策略。
5.A/B代替猜测。每个假设都经过实验和控制回归。
2)个性化领域
导航:分区顺序,快速快捷方式,最后访问屏幕。
亮度和密度:卡的大小,列数,电源用户的"密集"模式。
内容:推荐的游戏/市场,兴趣标签,精选提供商。
促销和横幅:相关促销,锦标赛,奖金(带频率控制)。
搜索和过滤器: 加载历史记录,保存预设.
通知:聪明的数字对抗"风暴",夜间沉默,类型重要。
主题/对比/字体:记住视觉偏好。
域格式:系数(十进制/分数/美国),显示货币,语言。
3)个性化模式
3.1手动设置(explicit)
首选项面板:用户自己打开/关闭小部件,调整顺序,设置系数/货币/主题格式。
3.2上下文适应(context-aware)
它依赖于设备,白天时间,网络:晚上是一个黑暗的默认主题,在弱连接上-简化媒体,在移动上-缩短旋转木马。
3.3行为部分(行为部分)
插槽球员,体育博彩,现场比赛,新手集群。影响分区的顺序、建议和提示。始终将返回路径留给"默认"。
4)体系结构: 信号→解决方案→ UI
信号:事件(观看/点击/投注),配置文件设置,上下文(时区,设备),限制(限制/管辖权)。
规则/模型层:ficheflagi,分段器,推荐服务。
UI渲染:组件采用语义令牌和configs(内部没有ML逻辑)。
本地配置文件:部分首选项存储在客户端上(例如小部件顺序),并同步到帐户。
5)用户控制和透明度
个性化标记为"智能设置"徽章,并带有tooltip"根据您的操作更改块顺序"。
设置:打开/关闭个性化、"重置建议"、"显示标准主"。
更改历史记录: "添加了收藏夹块,因为您经常打开……"
6)互动和模式
拖动小部件(drag-n-drop)+"按原样返回"按钮。
从卡菜单中隐藏/显示块。
在搜索/目录中保存的过滤器/设置。
巡回赛考虑到最近的搜索和固定的联赛/比赛。
"从现场继续":最后一个优惠券/游戏/锦标赛是第一个屏幕。
"对你来说"部分不是第一个或侵入性的;总有"显示一切"和"不要显示它"。
7) iGaming的细节
负责任的游戏:个人限额提醒和超时-优先于促销。对有积极限制的球员没有压力。
系数和市场:首先显示最喜欢的联赛和市场;诚实地表示"最近修改的系数"。
游戏建议: 提供商/主题的多样性,限制单个提供商的重播;"你打了3 ×-尝试类似的。"
收银员:记住精选的存款/输出方法,显示货币;ETA和佣金与国家相关。
一天的时间:晚上-安静的通知和柔和的口音。
8)可用性和本地化
所有个性化单元均具有可聚焦的hendles,"aria-grabbed"用于drag-n-drop。
不要依赖颜色作为"适合您"的唯一指示器-添加文本标签。
钥匙/线索本地化;数字格式和货币-按地区。
RTL模式:顺序镜像,拖曳方向正确。
9)表演和可持续性
Configs和指南-使用TTL的客户端上的缓存(例如15-30分钟)和增量更新。
将"英雄"(第一个屏幕)水合而不会锁定其他UI。
推荐服务的下降≠ UI的下降:我们显示默认列表。
我们限制块的"抖动":重新排列不超过N小时/会话。
10)隐私和合规性
获得营销个性化的明确同意。
仅存储必要的信号,并有自动删除的时间表。
让我们简单地导出/重置首选项配置文件。
不要使用敏感类别进行定位;遵守当地要求。
11)度量标准
Task Success/Time-to-Action: 用户实现目标的速度是否更快?
CTR个人区块vs控制。
包含个性化功能的Retention/Session depth。
Dismiss/Hide rate小部件("不感兴趣")。
支持率混淆("为什么要显示它?”).
Regret rate(个人推荐后的回滚)。
12)反模式
为"个人展示"隐藏导航。
未经同意在用户眼前对元素进行"传送"。
以个性化为幌子,积极地展示促销频率。
在没有透明度的关键流(收银机、KYC)中个性化。
每次登录时都会发生不可预测的变化。
为了算法,"锁"用于手动设置。
13)令牌和共鸣设计系统(示例)
json
{
"personalization": {
"enabledDefault": true,
"showBadge": true,
"maxReorderPerWeek": 2,
"widgetVariants": ["default","compact","dense"],
"cooldownHours": 24
},
"recommendations": {
"fallback": "trending",
"diversity": { "provider": true, "category": true },
"ttlMinutes": 30
},
"notifications": {
"digestHour": 9,
"quietHours": [22, 8]
}
}
14)Snippets
Ficheflag+片段(React)
tsx type Segment = 'slots' 'sports' 'live' 'newbie';
type Flags = { personalizeHome:boolean };
function useSegments (): Segment [] {/return from profile/dimensions/return ['sports', 'live'];}
function useFlags(): Flags { return { personalizeHome: true }; }
function Home() {
const segs = useSegments();
const { personalizeHome } = useFlags();
const blocks = [
{id: 'continue', title: 'Continue', fixed: true},
{id: 'sportsTop', title: 'Top Events', seg: 'sports'},
{id: 'slotsRec', title: 'Recommended slots', seg: 'slots'},
{id: 'liveRooms', title: 'Live rooms', seg: 'live'}
];
const ordered = personalizeHome
? [...blocks. filter(b=>b. fixed),...blocks. filter(b=>!b.fixed). sort((a,b)=> Number((segs. includes(b. seg as Segment)))-(segs. includes(a. seg as Segment)))]
: blocks;
return <Main blocks={ordered}/>;
}
Drag-n-drop reorder(简化)
js const list = document. querySelector('[data-widgets]');
let dragId = null;
list. addEventListener('dragstart', e => dragId = e. target. id);
list. addEventListener('drop', e => {
e. preventDefault();
const to = e. target. closest('[draggable]'). id;
if (dragId & & to & dragId! = = to) reorderWidgets (dragId, to) ;//save in profile
});
list. addEventListener('dragover', e => e. preventDefault());
个人化控制
html
<label>
<input type="checkbox" id="pToggle" checked>
Smart personalization
</label>
<button id = "reset "> Reset recommendations </button>
<script>
pToggle. onchange = () => setPersonalization(pToggle. checked);
reset. onclick = () => resetRecommendations () ;//clear profile/cache
</script>
15)空白/错误/状态
没有个性化数据: 显示趋势/新产品,解释"我们仍在学习您的行动。"
推荐服务错误:倒退块;敬酒"我们展示流行"。
过于狭窄的配置文件:增加多样性(提供商/类别)。
16) QA支票清单
透明度
- Bage"智能设置"和易于理解的工具。
- Tumbler打开/关闭个性化;"重置建议"。
UX
- 可从键盘拖动/隐藏块。
- 个人块不会重迭关键内容。
- 促销频率有限;有"不感兴趣"。
A11u/本地化
drag-n-drop的"aria",正确的tab顺序。
- 文本/格式/货币是本地化的;RTL是正确的。
表演/可靠性
- UI在建议下降时运行(倒退)。
- 在会话内没有区块顺序的"抖动"。
- Configs缓存;TTL和reconnects的后缀得到满足。
合规性
- 同意营销个性化。
- 信号存储时间表和删除/导出机制。
17)设计系统中的文档
Компоненты: `PersonalizedHome`, `ForYouRail`, `WidgetContainer`, `ReorderHandle`, `PrefsPanel`.
代币/代币:频率限制,TTL,"固定"块的特征,分散规则。
Gaids:"何时个性化","如何显示控制","倒退行为"。
Do/Do n't:隐藏导航,激进的横幅,会议期间频繁的重新安排。
简短摘要
个性化在透明、可逆和真正缩短目标路径时起作用。让用户控制,依靠一致的信号,将ML/规则排除在组件之外,并始终保持安全的默认状态。在iGaming中,它增加了信任和参与:更快地找到"自己的"市场和游戏,看到相关的限制和线索-没有侵入性和惊喜。