docs(plans): 合并 K5 实施回执
This commit is contained in:
commit
61634415a9
3 files changed
+317
-1
No files matched your search
@@ -0,0 +1,82 @@
|
||||
# 2026-10-17 K5 客户端视觉:克莱因蓝主题 + 印尼市场适配
|
||||
|
||||
## 一、目标与边界
|
||||
|
||||
本轮只完成 Flutter 客户端的主题色、蓝色收敛、印尼语 locale 和回归测试:
|
||||
|
||||
- K5-A:建立克莱因蓝 token 与浅色/深色显式 `ColorScheme`,主色统一 `#002FA7`。
|
||||
- K5-B:清理页面层的旧蓝字面量,统一使用 `AppColors` / `ColorScheme`;不改语义色。
|
||||
- K5-C:`LocaleController` 支持 `id`;未显式选择时跟随系统,非 `en/zh/id` 回退 `id`;
|
||||
两个现有语言入口增加 Bahasa Indonesia。
|
||||
- K5-D:补主题 token、对比度、硬编码扫描、locale 回退与语言切换测试,
|
||||
回归深色/浅色、三态和小屏布局。
|
||||
|
||||
不做 K4、支付、Google 登录、新接口、下载落盘、App 图标/启动图或信息架构调整;
|
||||
不改后端、`ReelShortWeb`、specs。
|
||||
|
||||
## 二、用户裁定色值
|
||||
|
||||
| Token | 值 | 用途 |
|
||||
| --- | --- | --- |
|
||||
| `blue` | `#002FA7` | Klein Blue / IKB 主色 |
|
||||
| `bluePressed` | `#00227A` | 按下/激活态与大面积蓝色背景 |
|
||||
| `blueSoft` | `#5B7BE0` | 深色背景上的高亮/次级文字与图标 |
|
||||
| `onPrimary` | `#FFFFFF` | 主色上的文字/图标 |
|
||||
| `ink` | `#0B0C10` | 保持现值 |
|
||||
| `bar` | `#101114` | 保持现值 |
|
||||
| `card` | `#17191F` | 保持现值 |
|
||||
| `muted` | `#B7BDC9` | 保持现值 |
|
||||
|
||||
对比度口径:正文 ≥ 4.5:1,大字/图标 ≥ 3:1;错误红、成功绿、点赞红等语义色不改。
|
||||
|
||||
## 三、预计影响文件
|
||||
|
||||
- `lib/core/theme/app_colors.dart`
|
||||
- `lib/app.dart`
|
||||
- `lib/core/config/locale_controller.dart`
|
||||
- `lib/pages/mine/mine_logic.dart`
|
||||
- `lib/pages/home/widgets/home_quick_drawer.dart`
|
||||
- `lib/pages/home/home_view.dart`
|
||||
- `lib/pages/discover/discover_view.dart`
|
||||
- `lib/pages/drama_detail/drama_detail_view.dart`
|
||||
- `lib/pages/player/player_view.dart`
|
||||
- `lib/pages/player/player_logic.dart`
|
||||
- `lib/pages/player/widgets/seek_progress_bar.dart`
|
||||
- `lib/pages/player/widgets/comment_tile.dart`
|
||||
- `lib/pages/player/widgets/drama_comments_sheet.dart`
|
||||
- `lib/pages/mine/mine_view.dart`
|
||||
- `lib/pages/watch_records/watch_records_page.dart`
|
||||
- `lib/pages/downloads/downloads_page.dart`
|
||||
- `lib/pages/auth/auth_view.dart`
|
||||
- `lib/core/widgets/auth_gate.dart`
|
||||
- `lib/l10n/app_{en,zh,id}.arb` 与生成文件
|
||||
- `test/theme/*`、`test/config/*`、相关页面 widget 测试
|
||||
|
||||
实际改动以静态扫描结果为准;不改业务逻辑和页面布局。
|
||||
|
||||
## 四、TDD 顺序
|
||||
|
||||
1. 写主题 token/对比度、硬编码蓝色扫描、locale `id` 持久化与未知语言回退测试,确认红灯。
|
||||
2. K5-A:新增色值 token 和浅色/深色 `ColorScheme`,补主题测试转绿。
|
||||
3. K5-B:按扫描结果替换页面蓝色字面量,补语言入口和 widget 回归。
|
||||
4. K5-C:实现 `id` locale、系统语言跟随、未知系统语言回退 `id`,两个入口增加
|
||||
Bahasa Indonesia。
|
||||
5. K5-D:全量扫描、深色/浅色与小屏 widget 回归。
|
||||
6. 门禁:`dart analyze lib test`、`flutter test`、`flutter build apk --debug`。
|
||||
7. `--no-ff` 合并回 `develop` 并 push;FruitServer 仅提交 `docs/plans`。
|
||||
|
||||
## 五、风险与处理
|
||||
|
||||
- 克莱因蓝在浅色背景上作为文字可能对比不足:正文继续使用现有着色,
|
||||
主色主要用于按钮/图标/选中态;主色背景统一配 `onPrimary`。
|
||||
- `blueSoft` 仅用于深色背景高亮,避免在浅色背景当正文色造成低对比度。
|
||||
- 现有 `_orange` 等历史命名可能实际承载蓝色,替换时按语义改名,避免误导。
|
||||
- 直接替换主题色可能影响 FilledButton、Slider、Switch 等 Material 控件:
|
||||
通过显式 `ColorScheme` 和 widget 测试统一验证。
|
||||
- 语言入口两处需同步,避免“我的”和快捷抽屉行为不一致。
|
||||
- 真机、设备截图与系统语言切换证据由用户执行,Codex 不跑真机。
|
||||
|
||||
## 六、待确认
|
||||
|
||||
- 当前无产品歧义;按用户裁定的方案 A 色值执行。
|
||||
- specs 无成文色板,若后续提供 Stitch 视觉稿,再按新稿更新 token 与页面映射。
|
||||
+118
-1
@@ -20,7 +20,7 @@
|
||||
|
||||
---
|
||||
|
||||
## [待处理] 2026-10-17 | K5 客户端视觉:克莱因蓝主题 + 印尼市场适配
|
||||
## [已处理·待用户验收] 2026-10-17 | K5 客户端视觉:克莱因蓝主题 + 印尼市场适配
|
||||
|
||||
**用户指令(2026-10-17)**:「改 UI 及 App 整体颜色,克莱因蓝,针对印尼市场,认真阅读文档严格执行」。
|
||||
|
||||
@@ -115,6 +115,123 @@
|
||||
- 每步「叙述 + 命令 + 原始输出 + 解读」追加到 `docs/plans/PROGRESS.md`;完成后停住写回执(含用户验证步骤与预期)。
|
||||
- 提交作者与提交者统一 `Zhou Weidong <502333560@qq.com>`。
|
||||
|
||||
### 七、K5 完成回执(2026-10-17)
|
||||
|
||||
**结论**:K5-A 主题 token/ColorScheme、K5-B 蓝色收敛、K5-C 印尼语适配、
|
||||
K5-D 回归均已完成并停止,未开始 K4,未接新接口,未跑真机。
|
||||
|
||||
#### 7.1 诊断分支收口
|
||||
|
||||
- iOS 首页诊断插桩已保留在未合并分支
|
||||
`feature/flutter-ios-home-diagnostics`,提交
|
||||
`7efbed97587dd3ed02967dcbbaa6fb85693c1883`。
|
||||
- K5 从干净的 ReelShort `develop e1147cf` 拉出,未夹带诊断插桩。
|
||||
|
||||
#### 7.2 色值、主题与蓝色收敛
|
||||
|
||||
- `AppColors.blue = #002FA7`、`bluePressed = #00227A`、
|
||||
`blueSoft = #5B7BE0`、`onPrimary = #FFFFFF`。
|
||||
- `AppTheme.light()` / `AppTheme.dark()` 使用显式 ColorScheme,两套主题
|
||||
`primary` 均为 `#002FA7`、`onPrimary` 均为白色;SnackBar 使用深蓝背景白字。
|
||||
- 深色表面的小图标、链接和轨道使用 `blueSoft`;大面积选中背景使用
|
||||
`bluePressed`;主按钮使用 `blue + onPrimary`。
|
||||
- 页面层旧蓝 `0xFF2F7BFF`、`0xFF8FB4FF`、`Colors.blue` 扫描结果为空。
|
||||
- 错误红、成功绿、点赞红等语义色未改;App 图标/启动图未改。
|
||||
|
||||
#### 7.3 印尼市场适配
|
||||
|
||||
- `LocaleController` 支持选择、持久化和恢复 `id`。
|
||||
- 未显式选择时跟随系统;系统语言非 `en/zh/id` 时回退 `id`。
|
||||
- “我的”语言弹层与首页快捷抽屉均增加 Bahasa Indonesia;
|
||||
快捷抽屉改为 Wrap,避免 320px 小屏溢出。
|
||||
- 新增 `bahasaIndonesia` 三语文案并重新生成 l10n。
|
||||
- 观看记录与下载授权的日期/时间改由 `MaterialLocalizations` 按当前 locale
|
||||
和系统 12/24 小时设置格式化。
|
||||
|
||||
#### 7.4 门禁原始结果
|
||||
|
||||
```
|
||||
$ cd /Users/jianghaifeng/Desktop/ReelShort/ReelShort
|
||||
$ dart analyze lib test
|
||||
Analyzing lib, test...
|
||||
No issues found!
|
||||
|
||||
$ flutter test
|
||||
00:12 +251 ~1: All tests passed!
|
||||
|
||||
$ flutter build apk --debug
|
||||
Running Gradle task 'assembleDebug'... 26.6s
|
||||
✓ Built build/app/outputs/flutter-apk/app-debug.apk
|
||||
```
|
||||
|
||||
`~1` 是既有 live watch 用例在 8081 未启动时按机制跳过,不是失败。
|
||||
|
||||
新增测试覆盖:
|
||||
|
||||
- Klein Blue token、白字/主色对比度、图标/深底对比度。
|
||||
- 浅色/深色 ColorScheme 与 widget 实际主题值。
|
||||
- `lib` 旧蓝字面量静态扫描。
|
||||
- locale `id` 选择、持久化、系统语言跟随与未知语言回退 `id`。
|
||||
- Bahasa Indonesia 选项、语言切换、印尼语日期/时间格式。
|
||||
- 320×568 深色小屏首页与“我的”页不溢出。
|
||||
|
||||
#### 7.5 Git
|
||||
|
||||
- 功能提交:`10d448c8ba93aa2762e14babdb528805897b3992`
|
||||
`feat(flutter): 应用克莱因蓝主题与印尼语适配`
|
||||
- `--no-ff` 合并提交:`e52d81881c19202c7adc8d13a6f78f78e4f6182f`
|
||||
`merge: 合并 K5 克莱因蓝主题与印尼语适配`
|
||||
- 已推送:`e1147cf..e52d818 develop -> develop`
|
||||
- author/committer 均为 `Zhou Weidong <502333560@qq.com>`;未操作 `main`。
|
||||
|
||||
#### 7.6 用户真机验证步骤与预期
|
||||
|
||||
前置:安装最新 debug APK,分别准备一套 Android 与 iOS 设备,保留系统深色/浅色
|
||||
切换条件。以下证据必须由用户在设备侧取得,Codex 未执行真机验证。
|
||||
|
||||
1. 浅色与深色系统下分别打开首页、发现、详情、播放、我的、收藏、记录和下载。
|
||||
|
||||
预期:页面可读、无溢出;主按钮为克莱因蓝白字;选中态/进度条可见;
|
||||
深色底上的链接和图标使用较亮的蓝紫高亮;旧亮蓝 `#2F7BFF` 不再出现。
|
||||
|
||||
2. 对主按钮、进度条、选中 Tab 截图并用取色工具检查。
|
||||
|
||||
预期:主色接近 `#002FA7`;按下/激活大面积背景接近 `#00227A`;
|
||||
主色按钮文字为 `#FFFFFF`。
|
||||
|
||||
3. 在 iPhone SE 级小屏打开首页与“我的”,展开语言入口。
|
||||
|
||||
预期:三个语言选项自动换行,不挤出屏幕;底栏文字和图标不重叠。
|
||||
|
||||
4. 从“我的 → 语言”选择 Bahasa Indonesia,再冷启动 App。
|
||||
|
||||
预期:界面切为印尼语,重启后仍保持印尼语。
|
||||
|
||||
5. 从首页快捷抽屉选择 Bahasa Indonesia。
|
||||
|
||||
预期:同样切为印尼语,两个入口行为一致。
|
||||
|
||||
6. 清除 App 数据/重新安装,把系统语言设为法语,且不手动选择语言。
|
||||
|
||||
预期:App 自动使用印尼语,不回退英语。
|
||||
|
||||
7. 在印尼语下查看观看记录与下载授权时间。
|
||||
|
||||
预期:日期/时间使用印尼地区 Material 格式;系统 12/24 小时设置变化时格式跟随。
|
||||
|
||||
8. 未登录点评论发布/点赞/举报,登录页按钮与错误/成功提示仍清晰可辨。
|
||||
|
||||
预期:业务流程不变;Klein Blue 按钮、蓝色 SnackBar 与红色错误提示对比度正常。
|
||||
|
||||
设备侧截图、系统语言切换日志与真机结果由用户执行;开发机检查不能替代这些证据。
|
||||
|
||||
#### 7.7 已知边界
|
||||
|
||||
- 现有主体页面保持 dark-first 设计,并显式使用 `AppTheme.dark()`;
|
||||
根部同时提供浅色/深色 ColorScheme,未重做信息架构或页面布局。
|
||||
- App 图标、启动图、Google 登录与支付不在本批范围。
|
||||
- K4 未开始。
|
||||
|
||||
---
|
||||
|
||||
## [已处理·待用户验收] 2026-10-17 | K3 客户端第三批:互动(评论 + 点赞 + 举报 + 分享)
|
||||
|
||||
@@ -1667,3 +1667,120 @@ merge: 合并 K3 举报错误透传修复
|
||||
```
|
||||
|
||||
解读:报告本人内容现在会把后端错误原样展示;author/committer 均保持统一。
|
||||
|
||||
---
|
||||
|
||||
## 2026-10-17 K5 克莱因蓝主题与印尼语适配(【Codex】)
|
||||
|
||||
### 19.1 诊断分支收口
|
||||
|
||||
叙述:上一项 iOS 首页诊断插桩已提交在独立分支,不并入 K5,也不阻塞干净基线。
|
||||
|
||||
```
|
||||
$ git status --short --branch
|
||||
## feature/flutter-ios-home-diagnostics
|
||||
|
||||
$ git log -1 --oneline
|
||||
7efbed9 chore(flutter): 增加首页加载失败诊断日志
|
||||
```
|
||||
|
||||
解读:诊断提交保留为未合并 feature 分支;K5 从 `develop e1147cf` 新建,
|
||||
后续所有 K5 改动均在该基线上。
|
||||
|
||||
### 19.2 K5 计划
|
||||
|
||||
叙述:先写 `docs/plans/2026-10-17-K5.md`,记录方案 A 色值、影响文件、TDD、
|
||||
风险和待确认,再开始代码。
|
||||
|
||||
```
|
||||
Success. Updated the following files:
|
||||
A docs/plans/2026-10-17-K5.md
|
||||
```
|
||||
|
||||
### 19.3 K5 首次红灯
|
||||
|
||||
命令:
|
||||
|
||||
```
|
||||
$ flutter test test/theme test/config/locale_controller_test.dart test/mine/mine_logic_test.dart test/widget_test.dart
|
||||
```
|
||||
|
||||
原始输出(节选):
|
||||
|
||||
```
|
||||
Error when reading 'lib/core/theme/app_theme.dart': No such file or directory
|
||||
Member not found: 'bluePressed'
|
||||
Member not found: 'onPrimary'
|
||||
Method not found: 'resolveAppLocale'
|
||||
Found 0 widgets with text "Bahasa Indonesia"
|
||||
Expected: empty
|
||||
Actual: [
|
||||
'lib/core/theme/app_colors.dart:5: static const blue = Color(0xFF2F7BFF);',
|
||||
...
|
||||
]
|
||||
00:07 +22 -5: Some tests failed.
|
||||
```
|
||||
|
||||
解读:主题 token/ThemeData、locale 解析、语言选项和旧蓝扫描全部按预期红灯。
|
||||
|
||||
### 19.4 K5 实现与定向绿灯
|
||||
|
||||
实现内容:
|
||||
|
||||
- `AppColors` 新增 `bluePressed/onPrimary`,更新 `blue/blueSoft`。
|
||||
- 新增 `AppTheme.light/dark` 显式 ColorScheme 和控件主题。
|
||||
- 页面旧蓝清理,深色高亮改 `blueSoft`,大面积选中态改 `bluePressed`。
|
||||
- `resolveAppLocale` 支持 en/zh/id,未知系统语言回退 id。
|
||||
- 两个语言入口增加 Bahasa Indonesia;快捷抽屉改 Wrap。
|
||||
- 日期/时间改用 `MaterialLocalizations`。
|
||||
|
||||
定向测试:
|
||||
|
||||
```
|
||||
$ flutter test test/theme test/config test/formatting test/mine/mine_logic_test.dart test/widget_test.dart test/auth test/library test/watch test/download test/drama_detail
|
||||
00:08 +97: All tests passed!
|
||||
```
|
||||
|
||||
旧蓝扫描补跑:
|
||||
|
||||
```
|
||||
$ rg -n '0xFF2F7BFF|0xFF8FB4FF|Colors\.blue|_orange|seedColor' lib -g '*.dart'
|
||||
```
|
||||
|
||||
结果:无匹配(仅保留 `AppColors.blue/blueSoft/bluePressed` 等 token 引用)。
|
||||
|
||||
### 19.5 K5 最终门禁
|
||||
|
||||
```
|
||||
$ dart analyze lib test
|
||||
Analyzing lib, test...
|
||||
No issues found!
|
||||
|
||||
$ flutter test
|
||||
00:12 +251 ~1: All tests passed!
|
||||
|
||||
$ flutter build apk --debug
|
||||
Running Gradle task 'assembleDebug'... 26.6s
|
||||
✓ Built build/app/outputs/flutter-apk/app-debug.apk
|
||||
```
|
||||
|
||||
解读:全量测试除既有 live watch 跳过外全部通过,APK 构建成功。
|
||||
|
||||
### 19.6 Git
|
||||
|
||||
```
|
||||
10d448c8ba93aa2762e14babdb528805897b3992
|
||||
author: Zhou Weidong <502333560@qq.com>
|
||||
committer: Zhou Weidong <502333560@qq.com>
|
||||
subject: feat(flutter): 应用克莱因蓝主题与印尼语适配
|
||||
|
||||
e52d81881c19202c7adc8d13a6f78f78e4f6182f
|
||||
author: Zhou Weidong <502333560@qq.com>
|
||||
committer: Zhou Weidong <502333560@qq.com>
|
||||
subject: merge: 合并 K5 克莱因蓝主题与印尼语适配
|
||||
|
||||
To http://git.reelshort2.com/jianghaifeng/ReelShort.git
|
||||
e1147cf..e52d818 develop -> develop
|
||||
```
|
||||
|
||||
解读:K5 已以 `--no-ff` 合并到 ReelShort develop 并推送,未操作 main。
|
||||
Reference in new issue
Block a user