## 起因 用户 2026-11-01:「家书已经有人做了,八月份刚上线的」。 核实:「家书 HomeBook」(广州家书科技有限责任公司,粤ICP备2026096420号, 2026-06 成立、08 上线)。功能**部分重合**(家庭记录 + 相册 + 家谱)。 华为审核指南 1.3「应用名称不得和其他应用名称相同,避免混淆」, 虽然个人与企业主体查重不互通、技术上能过,但被人工驳回概率高。 ## 定名过程(用户逐个否掉) | 候选 | 否决原因 | |---|---| | 寸草 | — | | 家卷 | ❌ 与「家眷」同音,口头传播会打错字 | | 家时光 | ❌ App Store 已有「家·时光」定位几乎一致;且「家+时光」是常见组合,辨识度低 | | 家纪 | ❌ 已有重名 | | **岁月家** | ✅ 搜不到同名应用;是口号的直接展开(岁月 + 家) | ## 最终定稿(用户明确指定) ``` 应用名 岁月家 主标语 一家人用岁月写成的一本书 ← 不变 一句话简介 一家人用岁月写成的一本书 ← 改为与标语相同 官网标题 岁月家 · 一家人用岁月写成的一本书 英文名 FamilyBook ← 不变 包名 familybook.yangyq.net ← 不变 ``` ## 改动范围(17 + 18 处,12 个文件) ### 应用名(17 处) `AppScope/resources/base/element/string.json` 的 app_name, `entry/.../string.json` 的 16 条(应用名、卡片名、无障碍描述)。 ### 用户可见文案(18 处) `FbBackgroundSync` / `EntryAbility`「正在同步家书数据」、 `FbAttachOpen`「家书附件」相册名、`FbHttp` 地址校验失败提示、 `FbCardData` / `FbCardMediaData` 卡片空态「先在「家书」里填写服务器地址」、 `TopBar` / `Drawer` / `FbLoginPage` 的应用名文本、`FbSettingsPage` 的说明。 ## 刻意不改 - **包名 / bundleName**(用户明确要求不变,且改了等于换一个应用) - **英文名 FamilyBook**、目录名、仓库名(改了会让 git 历史、部署脚本、证书路径全跟改) - **代码注释**里 200+ 处「家书 FamilyBook · 某模块」—— 不影响运行时, 改了只会制造噪音 diff,让将来 blame 变难 - **主标语**里一个字都没动 ## 验证 ### 编译 `BUILD SUCCESSFUL`,33 tasks。 ### 产物实测 解包 `.hap` 的 `resources.index`: - 「岁月家」出现 **17** 次 - 「家书」出现 **0** 次 ### 全局一致性校验(31 项全过) `_tooling/check_rename.js`: - 客户端 app_name / EntryAbility_label / 产物内容 - .ets 用户可见文案无残留(排除注释) - 服务端非注释代码无残留 - `Auth::homeTitle()` 用「某某某的家庭岁月」 - `DEFAULT_SLOGAN` 未被改动 - 官网线上 5 个页面无「家书」、标题含岁月家、渲染后 h1 是品牌名 - 材料 app_name / 一句话简介 / 包名 / versionCode / 域名 ⚠️ 校验过程中我自己的判据出了 2 次假红: ① 注释识别不全(漏了 `/**` 单行块注释和 `<!--` HTML 注释)→ 补齐 isCommentLine ② 「为什么叫岁月家」整节重写后,旧断言还在查「书信」「家与书」 (那是**旧名字**的逻辑)→ 改成查「岁月」+「家」的拆解 ## 一处语义决策(问过用户) 网页端 `Auth::homeTitle()` 生成「某某某的家书」—— 这是**产品核心语义** (每个家有自己的那一本),直接换成品牌名会读成「某某某的岁月家」,不通。 用户定:改成 **「某某某的家庭岁月」**。 兜底(无姓名时)仍用品牌名「岁月家」。 ## 连带影响(不阻塞) - 上架材料 7 个文件已同步(含软著全称改为「岁月家家庭生活档案管理软件」) - 官网已部署,线上标题已是新名字 - 软著申请尚未提交 —— 正好一次写对新名字,不需要变更
145 lines
6.6 KiB
JSON
145 lines
6.6 KiB
JSON
{
|
||
"app_name": "岁月家",
|
||
"app_name_check": {
|
||
"value": "岁月家",
|
||
"chars": 2,
|
||
"limit": "≤15 个汉字字符",
|
||
"verdict": "PASS",
|
||
"note": "两字,唯一、有辨识度,不是通用词。与安装后桌面名称(AppScope/resources/base/element/string.json 的 app_name)一致。"
|
||
},
|
||
"one_line_intro": {
|
||
"value": "一家人用岁月写成的一本书",
|
||
"chars": 13,
|
||
"limit": "≤17 个汉字",
|
||
"verdict": "PASS"
|
||
},
|
||
"one_line_intro_alternatives": [
|
||
{ "value": "把一家人的日子记在一起", "chars": 11, "verdict": "PASS" },
|
||
{ "value": "家庭日程与生活记录工具", "chars": 11, "verdict": "PASS" }
|
||
],
|
||
"category": {
|
||
"primary": "实用工具",
|
||
"secondary_suggestion": "效率 / 备忘录 / 个人助理(以 AGC 下拉列表实际项为准)",
|
||
"note": "不要选「社交」「金融理财」—— 房贷/账本只是记账,不做任何投资理财服务,选后者需金融资质。"
|
||
},
|
||
"age_rating": {
|
||
"recommended": "3+",
|
||
"reasoning": "无任何游戏、无暴力、无社交陌生人互动、无付费。家庭内部使用。",
|
||
"questionnaire_answers": {
|
||
"是否包含暴力内容": "否",
|
||
"是否包含性/裸露内容": "否",
|
||
"是否包含恐怖/惊悚内容": "否",
|
||
"是否包含赌博": "否",
|
||
"是否包含酒精/烟草/毒品": "否",
|
||
"是否包含粗俗语言": "否",
|
||
"是否允许用户间自由社交或内容分享给陌生人": "否(仅同一家庭内成员可见)",
|
||
"是否包含用户生成内容公开发布": "否",
|
||
"是否含应用内购买": "否",
|
||
"是否含广告": "否",
|
||
"是否可收集位置": "否",
|
||
"是否允许陌生人联系用户": "否"
|
||
}
|
||
},
|
||
"privacy_labels": {
|
||
"收集个人信息": "是(账号手机号、用户主动录入的家庭内容)",
|
||
"用于第三方广告": "否",
|
||
"与第三方共享": "否",
|
||
"允许用户请求删除数据": "是(设置 → 账号 → 注销账号;各条目可单独删除)",
|
||
"数据加密传输": "是(全站 HTTPS)",
|
||
"数据可导出": "是(设置 → 数据导出)"
|
||
},
|
||
"permissions_declaration": [
|
||
{
|
||
"permission": "ohos.permission.INTERNET",
|
||
"level": "normal",
|
||
"purpose": "与用户自行部署的岁月家服务端通信,读写日程/任务/名册等数据",
|
||
"required": true,
|
||
"if_denied": "无法登录,无法同步任何数据"
|
||
},
|
||
{
|
||
"permission": "ohos.permission.GET_NETWORK_INFO",
|
||
"level": "normal",
|
||
"purpose": "判断网络是否可用,断网时提示「离线,当前为缓存数据」而不是无限转圈",
|
||
"required": true,
|
||
"if_denied": "网络异常时提示不准确"
|
||
},
|
||
{
|
||
"permission": "ohos.permission.DETECT_GESTURE",
|
||
"level": "normal",
|
||
"purpose": "识别左右手握持,自动调整界面方向。不采集、不上传、不记录任何手势数据",
|
||
"required": false,
|
||
"if_denied": "界面方向不自动调整,可手动设置"
|
||
}
|
||
],
|
||
"declared_not_collected": [
|
||
"位置信息(未申请任何定位权限)",
|
||
"通讯录(未申请联系人权限)",
|
||
"相机(未申请 CAMERA 权限)",
|
||
"麦克风",
|
||
"通话记录/短信",
|
||
"应用安装列表",
|
||
"剪贴板",
|
||
"设备唯一标识符(OAID/IMEI/MAC/SN)",
|
||
"生物识别信息"
|
||
],
|
||
"third_party_sdk": {
|
||
"统计/广告/推送 SDK": "无",
|
||
"系统能力(非第三方 SDK)": [
|
||
"Map Kit(华为 HMS Core)— 地点自动补全,仅传关键词",
|
||
"HUKS(鸿蒙系统)— 密钥硬件保护,不出网",
|
||
"CryptoArchitectureKit(鸿蒙系统)— 加解密,不出网",
|
||
"MediaLibraryKit(鸿蒙系统)— 保存附件到相册,不出网",
|
||
"ShareKit(鸿蒙系统)— 系统分享面板,不出网",
|
||
"TelephonyKit(鸿蒙系统)— 拉起系统拨号盘,不出网",
|
||
"BackgroundTasksKit(鸿蒙系统)— 定时后台同步,不出网"
|
||
]
|
||
},
|
||
"package": {
|
||
"bundleName": "familybook.yangyq.net",
|
||
"versionName": "0.8.0",
|
||
"versionCode": 800,
|
||
"compatibleSdkVersion": "6.1.1(24)",
|
||
"targetSdkVersion": "26.0.0",
|
||
"runtimeOS": "HarmonyOS",
|
||
"deviceTypes": ["phone", "tablet"],
|
||
"submit_format": ".app(App Pack)",
|
||
"submit_note": "AppGallery 只收 .app,不是 .hap。用 release 模式 `Build APP` 产出。当前 versionCode=800,若已提交过请确保递增。"
|
||
},
|
||
"distribution": {
|
||
"countries": ["中国大陆"],
|
||
"reason": "服务端仅中国大陆节点;隐私政策为中文;先上一地降低审核复杂度,稳定后再扩。",
|
||
"pricing": "免费"
|
||
},
|
||
"assets_checklist": {
|
||
"app_icon": {
|
||
"spec": "216×216 PNG,≤500KB(或 1024×1024 PNG ≤3MB),正方形、无圆角、无阴影",
|
||
"current": "AppScope/resources/base/media/fb_logo.png 是 192×192 —— 尺寸不达标,需另出 216×216 与 1024×1024",
|
||
"must_match": "与 app.json5 的 icon 引用同一图案($media:fb_logo)"
|
||
},
|
||
"screenshots": {
|
||
"spec": "3–5 张,竖屏 1080×1920(9:16)或横屏 1920×1080(16:9),PNG/JPG ≤5MB",
|
||
"must_be": "真机原生鸿蒙界面截图,不得是设计稿、不能带调试信息、不能出现其他平台标识",
|
||
"suggested_shots": [
|
||
"首页(今日概览:日程 + 任务 + 纪念日 + 往年今天)",
|
||
"日程月视图(含日程色块)",
|
||
"日程周视图(含当前时间红线)",
|
||
"任务看板",
|
||
"名册列表"
|
||
]
|
||
},
|
||
"intro_video": { "spec": "可选,1–3 个,15 秒–2 分钟,竖屏 720×1280", "recommend": "暂不做,非必需" },
|
||
"copyright_docs": {
|
||
"spec": "软著证书扫描件或电子版权证明,1–5 张 JPG/PNG ≤15MB,或 PDF ≤5MB",
|
||
"current": "❌ 无「岁月家」软著 —— 现有 6 项软著均与岁月家无关(见软著情况说明)"
|
||
}
|
||
},
|
||
"consistency_must_match": {
|
||
"说明": "AGC 后台填的名称/图标/一句话简介/分类,必须与 HAP 包内实际值完全一致,前后不一致是高频驳回点。",
|
||
"items": [
|
||
{ "后台填": "应用名称「岁月家」", "包内": "AppScope/resources/base/element/string.json → app_name = 岁月家", "状态": "一致" },
|
||
{ "后台填": "图标(216×216)", "包内": "app.json5 → icon = $media:fb_logo(192×192)", "状态": "图案需一致,尺寸需补" },
|
||
{ "后台填": "包名 familybook.yangyq.net", "包内": "app.json5 → bundleName", "状态": "一致" },
|
||
{ "后台填": "版本 0.8.0 (800)", "包内": "app.json5 → versionName/versionCode", "状态": "一致" }
|
||
]
|
||
}
|
||
} |