Files
juzi/taobao/pages/splash/splash.axml
T
xsl fed52930cc feat(miniapp): align UI with H5 and harden device debugging
五个页面按 h5/css 的 style.css → ui-20261009 → ui-20261012 覆盖顺序逐条重排,
换算规则固定为 calc(N * var(--u)) → 2N rpx,固定 px 的字号保持 px。

- app.acss:换回 H5 设计 token(方角小倒角按钮 10rpx、卡片 14rpx、.chev 折线箭头)
- splash/profile/history:底图与按钮文字图改用 H5 资源,隐私/政策弹窗按 H5 重排
- report:环形分用 conic-gradient、人脸裁切窗口叠加 face_maps、标记点百分比盒、
  侧脸皱纹 pending/unavailable 文案;用 Playwright 抓 H5 94 个选择器几何比对,
  整页高 2438.7 vs 2438.67
- camera:淘宝 <camera> 组件在真机整页崩溃(嵌了微信专有的 <cover-view>),
  改为默认系统相机 + `config.nativeCamera` 开关 + pages/camtest 冒烟页验证组件
- permissions:淘宝用带前缀的 scope.camera(裸名返回 5022 Scope:camera信息不存在),
  先试带前缀再退回裸名,拒绝后不再重复弹窗
- voice:非 HTTPS 资源导致的异常不再冒泡成整页崩溃;app.js 加开发版错误 toast
- 开发版入口:权限诊断(启动页/相机页)、相机组件测试
- 测试 20/20(新增权限与相机能力用例)
2026-11-01 23:30:38 +08:00

122 lines
11 KiB
XML

<!-- ═════ 01 启动页 —— 对照 H5 index.html #s-splash(L43-58) + #p-privacy(L294-307) + #p-policy(L335-466) ═════ -->
<view class="splash">
<!-- 开发版入口(H5 无此入口,保持现有实现,样式低调) -->
<view class="dev-entries" a:if="{{showCameraDebug || showMvpDebug || showDiagnose}}">
<view class="dev-entry" a:if="{{showCameraDebug}}" onTap="onCameraDebug">开发调试 · 相机验收</view>
<view class="dev-entry" a:if="{{showMvpDebug}}" onTap="onMvpDebug">SAE MVP 连通性</view>
<view class="dev-entry" a:if="{{showDiagnose}}" onTap="onDiagnose">权限诊断</view>
<view class="dev-entry" a:if="{{showDiagnose}}" onTap="onCamTest">相机组件测试</view>
</view>
<!-- 诊断结果浮层:真机上唯一能看到相机能力/授权返回值的地方 -->
<view class="diag-panel" a:if="{{diagText}}">
<scroll-view class="diag-scroll" scroll-y>
<text class="diag-text">{{diagText}}</text>
</scroll-view>
<view class="diag-close" onTap="onCloseDiagnose">关闭</view>
</view>
<!-- H5 .splash-bg -->
<image class="splash-bg" src="{{bgUrl}}" mode="aspectFill" />
<!-- H5 .account-status.account-status-home -->
<view class="account-status account-status-home {{signedIn ? 'account-status-on' : ''}}">
<view class="account-label">
<view class="account-dot"></view>
<text class="account-text">{{accountLabel}}</text>
</view>
<view class="account-logout" a:if="{{signedIn}}" onTap="onLogout">退出登录</view>
</view>
<!-- H5 .splash-slogan.splash-slogan-updated
.splash-slogan-copy 原为 object-fit + clip-path:inset(68% 0 0) 只露底部 32%(中文那行),
acss 里改成等价的 overflow 裁切容器 + 上移 68% 的 image,像素结果一致 -->
<view class="splash-slogan">
<view class="splash-slogan-copy-clip">
<image class="splash-slogan-copy" src="{{sloganUrl}}" mode="scaleToFill" />
</view>
<view class="splash-slogan-brand">1'me,</view>
<view class="splash-slogan-english">FROM THE INSIDE OUT</view>
</view>
<!-- H5 .splash-bottom:brand-lockup + 开始检测 + 我的报告 -->
<view class="splash-bottom">
<view class="brand-row">
<image class="brand-lockup" src="{{logoUrl}}" mode="aspectFit" />
</view>
<button class="btn-primary" hover-class="btn-press" onTap="onOpenPrivacy">
<image class="splash-button-label" src="{{startLabelUrl}}" mode="aspectFit" />
</button>
<button class="btn-primary btn-history" hover-class="btn-press" onTap="onHistory">
<image class="splash-button-label btn-history-label" src="{{historyLabelUrl}}" mode="aspectFit" />
</button>
</view>
<!-- ═══ 弹窗:隐私授权(H5 #p-privacy) ═══ -->
<view class="overlay overlay-privacy" a:if="{{showPrivacy}}" onTap="onClosePrivacy">
<image class="overlay-bg" src="{{bgUrl}}" mode="aspectFill" />
<view class="overlay-dim"></view>
<view class="popup privacy-popup" catchTap="noop">
<button class="popup-close" onTap="onClosePrivacy">
<image class="popup-close-img" src="{{closeIconUrl}}" mode="aspectFit" />
</button>
<view class="popup-title">
<view>欢迎体验1'me</view>
<view>肌肤状态评估服务!</view>
</view>
<view class="popup-body">我们将采集您的面部影像,为您生成专属肌肤分析与状态管理方案。所有数据严格保密,仅用于本次检测分析。</view>
<view class="privacy-row" onTap="onToggleAgree">
<view class="checkbox {{agreed ? 'checked' : ''}}"></view>
<view class="privacy-text">我已阅读并同意相关<text class="privacy-link" catchTap="onOpenPolicy">隐私协议</text></view>
</view>
<button class="btn-primary popup-btn {{busy ? 'btn-busy' : ''}}" hover-class="btn-press" onTap="onAgreeContinue">继续</button>
</view>
</view>
<!-- ═══ 弹层:隐私政策全文(H5 #p-policy) ═══ -->
<view class="overlay overlay-policy" a:if="{{showPolicy}}">
<view class="policy-page">
<button class="nav-back policy-float-back" onTap="onClosePolicy">
<view class="chev left"></view>
</button>
<scroll-view scroll-y class="policy-body">
<view class="policy-title">Face⁺⁺个人信息与隐私保护政策</view>
<view class="policy-h2">前言</view>
<view class="policy-p">北京旷视科技有限公司及其关联公司(以下简称"我们"或"旷视")尊重并致力于保护个人信息与隐私。Face⁺⁺人工智能开放平台(以下简称"本平台")和/或Face⁺⁺人工智能开放平台服务(以下简称"本服务")作为旷视面向开发者的视觉智能开放平台与服务,严格参照《旷视个人信息与隐私保护政策》中的统一要求和标准处理相关个人信息;为进一步明确在本平台和本服务中可能涉及的个人信息处理实践情况,我们特制定了Face⁺⁺个人信息与隐私保护政策(以下简称"Face⁺⁺政策"),以介绍本平台和本服务中收集、使用、留存等个人信息的具体处理。</view>
<view class="policy-p">Face⁺⁺政策拟帮助客户和用户了解:我们如何收集使用个人信息、如何保留和披露、如何保护、个人信息在全球范围内的转移、您的个人信息权利、如何处理儿童的个人信息、如何联系我们、政策如何更新。</view>
<view class="policy-h2">一、我们如何收集使用个人信息</view>
<view class="policy-p">旷视将与客户一道,在符合《个人信息保护法》第十三条规定的合法性基础的前提下,确保所收集和处理的个人信息已取得您的完整、有效授权同意。</view>
<view class="policy-p">为提供人脸和人体图像识别相关技术的能力,我们将基于客户主动提供的原始图片、视频等数据进一步识别和提取面部识别特征、人体区域、人体特征和关键点、手势等生物识别信息,用于实现人脸比对、人脸检测、人脸搜索、人脸美颜、人脸融合等具体功能。请您理解,如您拒绝提供原始图片、视频等数据,前述功能应用将无法实现。</view>
<view class="policy-p">提请您注意的是,该等功能项下处理的面部识别特征等生物识别信息属于个人敏感信息,只有在具有特定的目的和充分的必要性、并采取严格保护措施的情形下,我们才会进行处理。我们将依法向您单独告知处理该等敏感个人信息的必要性以及对您个人权益的影响,并在您通过弹窗、勾选等明示方式单独同意后,方进行该等处理;您拒绝单独同意的,我们将不处理您的上述生物识别信息,但不影响您使用本平台和本服务的其他功能。</view>
<view class="policy-h2">二、我们如何保留和披露您的个人信息</view>
<view class="policy-p">除法律法规另有规定外,我们将在实现处理目的所必要的最短时间内保留您的个人信息,并通过本政策或相关服务规则向您明确告知各类个人信息的具体保存期限。在本平台和本服务下,我们主要提供技术能力的具体应用,因此在具体功能实现后,对于客户提供的原始图片、视频等数据以及基于该等原始数据形成的服务成果,我们将尽快删除或进行匿名化处理。此外,根据《网络安全法》等强制性法律法规要求,我们将切实保留网络日志不少于六个月。</view>
<view class="policy-h2">三、我们如何保护您的个人信息</view>
<view class="policy-p">我们已采取了合理、可行的管理措施和技术措施,以保护所处理的个人信息并应对个人信息安全事件,包括:及时对个人信息进行去标识化处理;定期审查个人信息处理方式并不断强化 API 和 SDK 等技术工具的安全性;实施传输全程安全加密等保障手段。如发生或者可能发生个人信息泄露、篡改、丢失的,我们将立即采取补救措施,并按照法律法规要求及时通知您。</view>
<view class="policy-h2">四、个人信息在全球范围内的转移</view>
<view class="policy-p">我们的服务器位于中国和加拿大。由于中国法律法规要求,原则上,在中国境内收集和产生的个人信息将统一在中国境内服务器进行处理。对于中国境外的业务,根据客户的选择,您的个人信息可能转移至位于中国或加拿大的服务器上进行处理。如确有必要向境外提供您的个人信息,我们将遵守《个人信息保护法》及数据出境相关法律法规的规定。</view>
<view class="policy-h2">五、您的个人信息权利</view>
<view class="policy-p">您依法享有知情权、访问权、更正权、删除权、注销账户权、拒绝自动决策权、解释权、可携权、查询权、撤销权。您可以通过具体产品或服务中设置的权限管理或隐私设置功能直接撤回相应授权,也可以通过发送邮件至 business@megvii.com 提交相关请求,我们将在核实您的身份后及时处理。</view>
<view class="policy-h2">六、我们如何处理儿童的个人信息</view>
<view class="policy-p">我们的所有产品、网站和服务主要面向企业客户,并不会自行主动收集、处理儿童个人信息。如我们发现任何客户或用户在未经父母或监护人同意的情况下提供包含儿童个人信息的原始数据,我们将立即删除该等原始数据并不会就该等数据提供任何服务。为免歧义,我们将不满14周岁的任何人均视为儿童。</view>
<view class="policy-h2">七、如何联系我们</view>
<view class="policy-p">如您对本政策及您的个人信息存在任何相关问题、申/投诉,或您需要任何个人信息权利相关的协助,请及时联系我们。您可以通过向 business@megvii.com 发送邮件联系我们,并提供您的姓名(名称)和联系方式、详细请求及相应链接。一般而言,我们会在15个工作日内或法律法规规定的期限内尽快回复。</view>
<view class="policy-h2">八、Face⁺⁺政策如何更新</view>
<view class="policy-p">我们保留不时更新或修改 Face⁺⁺政策的权利。但未经您明确同意,我们不会削减您按照 Face⁺⁺政策所应享有的权利。对于重大变更,我们会提供更为显著的通知。您可通过本页面查看最新版本的 Face⁺⁺政策。</view>
<view class="policy-end">—— 全文完 ——</view>
</scroll-view>
</view>
</view>
<!-- H5 .toast -->
<view class="toast {{toastOn ? 'show' : ''}}">{{toastText}}</view>
</view>