Files
FamilyBook_harmonyos/docs/上架/商店信息_结构化.json
T
laoyang 825008657b 品牌改名:家书 → 岁月家 (laoyang/FamilyBook#38)
## 起因

用户 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 个文件已同步(含软著全称改为「岁月家家庭生活档案管理软件」)
- 官网已部署,线上标题已是新名字
- 软著申请尚未提交 —— 正好一次写对新名字,不需要变更
2026-11-01 19:55:36 +08:00

145 lines
6.6 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"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", "状态": "一致" }
]
}
}