隐私政策
一、我们收集的信息
1.1 您主动提供的信息
- 账号信息:当您注册账号时,我们收集您设置的用户名和密码。密码使用 Argon2id 算法进行独立加盐哈希存储,服务器不保存明文密码。
- 邮箱地址:用于账号验证、密码找回和安全通知。邮箱在服务端加密保存,检索使用带密钥的哈希值,日志中不返回明文邮箱。
- 用户头像(可选):您可以选择上传头像图片,头像保存在服务器,仅用于APP内展示。
1.2 自动收集的信息
- 登录安全日志:为保护账号安全,我们记录登录时间、IP 地址(脱敏处理)、设备类型和登录结果。这些日志仅用于安全审计和异常检测,保存期限不超过 90 天。
- 会话信息:登录后生成的访问令牌和刷新令牌哈希,用于维持登录状态。令牌本身不包含您的个人身份信息。
- 匿名使用统计:我们可能收集匿名化的功能使用频率统计(如某个功能被点击的次数),用于改进产品。这些数据不包含可识别个人身份的信息。
- API调用频率:为防止滥用,我们按源IP记录AI临时凭证接口的调用频率,默认限制每小时30次。该记录仅用于限流,不关联用户账号。
1.3 申请的设备权限及用途
- 相机权限:用于拍摄渔获照片和装备照片。拍摄的照片默认保存在您的设备本地。当您使用AI鱼种识别或渔具参数识别功能时,照片将直接传输至第三方AI服务商(火山引擎)进行识别,不经过撸呀服务器。您可以在系统设置中随时关闭相机权限。
- 相册/存储权限:用于从相册选择渔获照片和装备照片,以及保存拍摄的照片到您的设备。我们不会读取您相册中的其他照片。
- 定位权限:用于获取当前位置的区县编码以查询天气,以及在地图上选点保存钓点。定位仅在您主动使用相关功能时获取,不会在后台持续追踪您的位置。天气查询仅传输六位区县编码,不传输GPS精确坐标。
- 通知权限(可选):用于装备保养到期提醒和渔获记录提醒。您可以在系统设置中随时关闭通知权限。
1.4 保存在您设备本地的信息(不上传服务器)
以下数据默认保存在您设备的本地存储中,不会上传到我们的服务器:
- 渔具装备清单(鱼竿、渔轮、鱼线、假饵、配件等)及参数
- 装备图片和渔获照片
- 渔获记录(鱼种、重量、长度、时间、地点、环境数据等)
- 本地OCR识别结果(离线识别,识别过程在本地完成)
- 库存管理数据
- 自选作战方案和搭配记录
- 本地装备分析结果和深层分析建议
- 收藏的钓点信息(包括地图坐标、钓点照片、环境记录等)
- 天气、气压、水温数据缓存(缓存20分钟)
- 应用偏好设置、主题选择和语言选择
您可以随时在APP的"设置 - 数据管理"中导出或清除这些本地数据。清除后数据将无法恢复,请谨慎操作。
二、我们如何使用信息
- 账号认证:使用用户名和密码哈希验证您的身份,允许您登录和使用账号相关功能。
- 邮箱验证与找回:向您的邮箱发送验证链接和密码重置邮件。
- 安全保护:通过登录日志检测异常登录行为,防止账号被盗用。
- 天气查询:根据您提供的六位区县编码,向天气数据服务商请求天气数据,并计算适钓指数。请求中不包含您的账号信息或GPS坐标。
- AI识别凭证:当您使用AI识别功能时,我们的网关向第三方AI服务商申请有效期1小时的临时访问凭证。永久密钥仅保存在服务器环境中,不会返回给客户端。
- 服务改进:使用匿名化的聚合统计数据(如功能使用频率)来改进产品体验,但这些数据不包含可识别个人身份的信息。
- 客户支持:当您联系我们寻求帮助时,使用您提供的信息来回复您的咨询和解决问题。
三、信息共享与披露
我们不会出售、出租或交易您的个人信息。仅在以下情况下可能共享信息:
- 经过您的同意:在获得您明确同意后。
- 法律要求:根据法律法规、法律程序或政府主管部门的强制性要求。
- 服务提供商:我们使用第三方服务来提供部分功能,这些服务商仅在我们的指示下处理您的信息,不得用于其他目的:
- 邮件服务(SMTP):用于发送账号验证和密码重置邮件,仅处理您的邮箱地址。
- 和风天气(QWeather):当您查询天气时,我们的网关向和风天气请求数据,请求中仅包含六位区县编码,不包含您的账号信息或GPS坐标。
- 火山引擎方舟(AI图片识别):当您使用AI鱼种识别或渔具参数识别功能时,您的照片将直接从您的设备传输至火山引擎进行识别,不经过撸呀服务器。火山引擎可能依据其隐私政策处理您的照片数据。您可以选择使用本地OCR识别功能代替云端AI识别。
- 百度地图服务:地图功能由北京百度网讯科技有限公司提供。只有在您明确同意后才加载百度地图服务;百度可能依据其隐私政策处理提供地图所需的设备、网络和位置信息。拒绝不会影响手工填写地点、保存渔获或装备管理。
四、系统架构与数据隔离
撸呀采用两层服务架构,确保数据隔离和密钥安全:
- 业务API层:负责账号认证、用户管理等核心业务,仅处理账号相关数据。
- 隐私网关层:负责天气查询和AI临时凭证发放,与业务数据隔离。网关不存储用户账号信息,不接受GPS坐标、图片内容、OCR文字等敏感字段。
- 密钥安全:第三方服务的永久API密钥仅保存在服务器环境变量中,不会返回给客户端或写入日志。AI识别使用有效期1小时的临时凭证,过期自动失效。
- 数据库隔离:数据库和缓存服务不暴露公网端口,仅在内部网络中通信。
五、数据安全
- 密码使用 Argon2id 算法独立加盐哈希,即使数据库泄露也无法还原明文密码。
- 邮箱地址在服务端使用对称加密存储,密钥与数据库分离保管。
- 所有 API 通信通过 HTTPS 加密传输。
- 连续 5 次密码错误将锁定账号 15 分钟,认证接口设有访问频率限制。
- AI临时凭证接口按源IP限流,默认每小时30次,防止滥用。
- 数据库和缓存服务不暴露公网端口,仅在内部网络中通信。
- 服务器部署在中国大陆境内,符合数据本地化要求。
- 我们定期进行安全审计和漏洞扫描,确保系统安全。
六、您的权利
- 访问和更正:您可以在 APP 的账号设置中查看和修改您的用户名和绑定邮箱。
- 修改密码:您可以随时在账号设置中修改密码。
- 注销账号:您可以在账号设置中申请注销账号。注销后,您的账号信息(用户名、密码哈希、加密邮箱、会话记录)将在 30 天内从服务器永久删除。已保存在您设备本地的数据不会被自动删除,需您手动清除。
- 数据导出:您可以在APP的"设置 - 数据管理"中导出您的本地数据(装备清单、渔获记录、钓点等)为JSON格式文件。
- 数据删除:您可以在APP的"设置 - 数据管理"中清除所有本地数据。
- 会话管理:您可以查看当前登录的设备列表,并远程退出任意设备。
- 撤回同意:您可以通过注销账号的方式撤回对个人信息收集的同意。
- 权限管理:您可以在设备系统设置中随时关闭相机、相册、定位、通知等权限。
- AI识别选择:您可以选择使用本地OCR识别(不上传照片)或云端AI识别(照片直接传输至第三方),在APP设置中可随时切换。
七、未成年人保护
撸呀主要面向成年钓鱼爱好者。如果您是未满 14 周岁的未成年人,请在监护人陪同下阅读本政策,并在监护人同意后使用我们的服务。我们不会主动收集未成年人的个人信息。如果监护人发现我们在未获得监护人同意的情况下收集了未成年人的个人信息,请联系我们,我们将立即删除相关信息。
八、Cookie 和本地存储
我们使用浏览器本地存储(IndexedDB 和 localStorage)保存您的装备数据、渔获记录、钓点和偏好设置。这些数据仅存储在您的设备上,不会发送到服务器。您可以在浏览器设置中管理或清除这些数据。
我们不使用Cookie追踪您的上网行为,也不与第三方共享您的浏览数据。
九、位置信息说明
定位仅在您主动点击"获取当前位置"后用于本机天气查询和地图选点。天气查询时,APP仅将当前位置对应的六位区县编码(如上海长宁区为310105)发送至服务器,不发送GPS精确坐标。GPS信息、照片中的地点信息和本地钓点保存在当前设备,不上传至撸呀服务器,也不用于后台轨迹或静默定位。
分享钓点时仅发送您主动填写的地名文字,不发送本机保存的坐标。您可以在"设置 - 清除所有本地数据"中删除本机钓点。
十、AI图片识别说明
撸呀提供两种识别方式,您可以根据隐私偏好选择:
10.1 本地OCR识别(默认,不上传照片)
- 识别过程完全在您的设备本地完成
- 照片不会上传到任何服务器
- 识别结果保存在您的设备本地
- 适用于渔具参数标签识别等简单场景
10.2 云端AI识别(可选,照片直接传输至第三方)
- 当您使用AI鱼种识别或渔具参数识别功能时,APP先向撸呀网关申请有效期1小时的临时访问凭证
- 获得凭证后,您的照片直接从您的设备传输至火山引擎方舟进行AI识别,不经过撸呀服务器
- 撸呀服务器不存储、不查看您的照片内容
- 临时凭证1小时后自动失效,永久密钥仅保存在服务器环境中
- 识别结果返回您的设备后,保存在本地,用于渔获记录
- 火山引擎可能依据其隐私政策处理您的照片数据,详情请参考火山引擎隐私政策
- 您可以随时在APP设置中关闭云端AI识别,改用本地OCR识别
十一、政策更新
我们可能会不时更新本隐私政策。更新后的政策将在本页面公布,重大变更会通过 APP 内通知或邮件告知您。继续使用我们的服务即表示您同意更新后的政策。
十二、联系我们
如果您对本隐私政策有任何疑问、意见或建议,或需要行使您的个人信息权利,请通过以下方式联系我们:
我们将在收到您的请求后 15 个工作日内回复。