From f05476f6db4cb060966de3d85b3bc7ce1912ac87 Mon Sep 17 00:00:00 2001 From: Zhou Weidong <502333560@qq.com> Date: Sat, 17 Oct 2026 15:51:04 +0800 Subject: [PATCH] =?UTF-8?q?docs(plans):=20=E4=B8=8B=E5=8F=91=20K5=20?= =?UTF-8?q?=E5=85=8B=E8=8E=B1=E5=9B=A0=E8=93=9D=E4=B8=BB=E9=A2=98=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/plans/INBOX.md | 97 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) diff --git a/docs/plans/INBOX.md b/docs/plans/INBOX.md index d8525d6..3281fbb 100644 --- a/docs/plans/INBOX.md +++ b/docs/plans/INBOX.md @@ -20,6 +20,103 @@ --- +## [待处理] 2026-10-17 | K5 客户端视觉:克莱因蓝主题 + 印尼市场适配 + +**用户指令(2026-10-17)**:「改 UI 及 App 整体颜色,克莱因蓝,针对印尼市场,认真阅读文档严格执行」。 + +> **本批只做 K5 视觉与本地化,不做 K4,不接新接口。** +> **颜色口径**:specs 全文没有成文色板或设计稿(已检索 `AGENTS.md`、`CODING_STANDARDS.md`、`GIT_WORKFLOW.md`、`docs/01~20`、`docs/plans/*`、`FruitServer/docs/*`); +> 颜色值来自用户 2026-10-17 明确裁定的 **方案 A**,按下方色值执行,不得自行另选。 + +### 〇、开工前必读(按顺序) + +1. `AGENTS.md`(目标市场:首发印尼) +2. `CODING_STANDARDS.md`(Dart/Flutter 红线、门禁) +3. `GIT_WORKFLOW.md`(Git Flow) +4. specs `docs/02-技术架构.md`(印尼首发)、`docs/15-成本清单与预算.md`(印尼语/Android 主导)、`docs/19-术语表.md`、`docs/16-测试用例库.md` +5. 本 INBOX 条目 + +### 一、PM 已勘察的现状(实测,直接用) + +- 主题集中在 `lib/core/theme/app_colors.dart`:`blue #2F7BFF`、`blueSoft #8FB4FF`、`ink/bar/card/muted`。 +- `lib/app.dart` 浅色与深色两套 `ColorScheme.fromSeed` 都硬编码 `seedColor: 0xFF2F7BFF`,另有 `scaffoldBackgroundColor`。 +- **42 处硬编码蓝色**散落 14 个文件,分布:`mine_view.dart` 13、`discover_view.dart` 5、`player_view.dart` 4、`comment_tile.dart` 3、`drama_detail_view.dart` 3、`home_view.dart` 2、`auth_view.dart` 2、`app.dart` 2,其余 7 个文件各 1。 +- `lib/core/config/locale_controller.dart` **只支持 `en` / `zh`**,选 `id` 会落成 null(跟随系统)——印尼首发缺陷。 +- `app.dart` 的 `localeResolutionCallback` 在系统语言不支持时回退 `supported.first`(当前为 en),与「首发印尼」不符。 +- 三语 arb 齐全:`app_en.arb` / `app_zh.arb` / `app_id.arb` 各 243 个 key。 + +### 二、本批范围(4 块,按顺序做) + +#### K5-A 主题色系统(克莱因蓝) + +色值(用户裁定,方案 A): + +| Token | 值 | 用途 | +|---|---|---| +| `blue` | `#002FA7` | 主色(Klein Blue / IKB) | +| `bluePressed` | `#00227A` | 按下/激活态 | +| `blueSoft` | `#5B7BE0` | 深色背景上的高亮/次级文字与图标 | +| `onPrimary` | `#FFFFFF` | 主色上的文字/图标 | +| `ink/bar/card/muted` | 保持现值 | 深色底不改成蓝色,不破坏现有暗色风格 | + +- `app_colors.dart` 增加上述 token,并把 `blue` 改为 `#002FA7`;`blueSoft` 若与现有语义冲突,明确注释用途。 +- `app.dart` 两套主题改为显式 `ColorScheme`(或 `fromSeed` + 覆盖 `primary/onPrimary`),确保浅色与深色下主色一致为 `#002FA7`;`seedColor` 不得再出现其他蓝色字面量。 +- **对比度硬要求**:正文文字 ≥ 4.5:1、大字号/图标 ≥ 3:1;主色大面积背景使用 `bluePressed`,主色上的文字用 `onPrimary`。 +- 新增单测:至少断言 `blue == Color(0xFF002FA7)`、`onPrimary` 在白底/主色上的对比度达标。 + +#### K5-B 全量 UI 替换 + +- 把 42 处硬编码蓝色全部改为 `AppColors.*` 或 `Theme.of(context).colorScheme.*`,页面层禁止再出现 `0xFF2F7BFF` / `Colors.blue`。 +- 覆盖页面:首页、发现、详情、播放(右栏/进度条)、我的、评论弹窗与评论项、观看记录、收藏、下载、登录、`AuthGate`、快捷抽屉。 +- 统一控件:FilledButton/TextButton、Tab 指示器、Switch、进度条、选中态、链接、SnackBar 主色。 +- **不改语义色**:错误红、成功绿、点赞红(如有)保持原语义,不因主题替换改成蓝色。 + +#### K5-C 印尼市场适配 + +- `LocaleController` 支持 `id`:`'id' => Locale('id')`,读写 `ui.locale` 持久化。 +- 默认语言规则:用户未显式选择时跟随系统;系统语言不是 `en/zh/id` 时**回退 `id`**(首发印尼),不得回退 `en`。 +- 语言选择入口增加 **Bahasa Indonesia** 选项(现有入口位置沿用,不新造页面)。 +- 校验三语 arb:新增文案必须 en/zh/id 三份齐全;禁止硬编码文案。 +- 日期/数字本地化:检查现有格式化是否按 locale(`intl`),`id` 下日期/数字格式正确。 +- 不接 Google 登录、不做支付(属 K4/后续)。 + +#### K5-D 回归与验收 + +- 深色/浅色两套主题、加载/空/失败三态、小屏(iPhone SE 级别)均不破版。 +- 新增 widget 测试:主题主色生效、页面无硬编码蓝色(可用静态扫描测试)、`LocaleController` 支持 id 与回退 id。 +- 真机验收由用户执行:主题色、按钮/进度条/选中态、语言切换与印尼语显示。 + +### 三、明确不做 + +- 不改业务逻辑、接口调用、后端、`ReelShortWeb`、specs。 +- 不做 Google 登录、支付、下载落盘。 +- 不改 App 图标/启动图(无设计资源;如后续提供 Stitch 出稿再做)。 +- 不替换信息架构与页面布局,只做颜色、主题与本地化;布局仅在换色后出现对比度/溢出问题时做最小修正。 + +### 四、规范约束 + +- 颜色只允许在 `app_colors.dart` 与主题层定义;页面禁止硬编码色值(测试断言除外)。 +- l10n 三语齐全并重新生成;所有新增文案进三份 arb。 +- 新文件首行 `// Author: fruit.com.cn`;public 类/方法文档注释;无 AI 痕迹。 +- 代码规模红线:函数 ≤50 行、参数 ≤5、类 ≤300 行、单文件 ≤500 行、嵌套 ≤4 层、圈复杂度 ≤10。 + +### 五、门禁 + +1. `dart analyze lib test` 零告警;`flutter test` 全过。 +2. `flutter build apk --debug` 通过。 +3. 新增测试覆盖:主题 token 与对比度、无硬编码蓝色扫描、locale id 支持与回退、语言切换。 +4. 真机/设备侧验证由用户执行(红线 7、10),回执给「用户可照做步骤 + 每步预期」,禁止用开发机 `curl` 冒充设备证据。 + +### 六、Git 与留痕 + +- 开工前先处理上一条诊断分支 `feature/flutter-ios-home-diagnostics`:按实际情况提交为诊断增强或清理回滚,确保 K5 从**干净的 `develop`** 拉分支(当前 develop 为 `e1147cf`)。 +- 分支:`feature/flutter-k5-klein-blue`;完成后 `git merge --no-ff` 回 `develop` 并 push;不动 `main`。 +- 先写 `FruitServer/docs/plans/2026-10-17-K5.md`(范围、影响文件、色值表、风险、待确认)。 +- 每步「叙述 + 命令 + 原始输出 + 解读」追加到 `docs/plans/PROGRESS.md`;完成后停住写回执(含用户验证步骤与预期)。 +- 提交作者与提交者统一 `Zhou Weidong <502333560@qq.com>`。 + +--- + ## [已处理·待用户验收] 2026-10-17 | K3 客户端第三批:互动(评论 + 点赞 + 举报 + 分享) **用户指令(2026-10-17)**:客户端继续对接接口及 UI,严格执行 specs。