refactor: 更新团队成员状态和设备清理经验,优化文档内容
This commit is contained in:
@@ -64,3 +64,11 @@
|
||||
- 审计陷阱:构造点可能藏在 #[cfg(test)] 内(如 ble/gatt.rs:772、dynamic_plugin.rs:348),必须回看 mod tests 边界再下判定
|
||||
- BLE 命令的真实生产者是 core/dispatch.rs::parse_command(gatt.rs:120 调用),不在 gatt.rs 里直接构造消息
|
||||
- 结论:WifiProvisioned/DeviceEvent 均为"有消费无生产"的 Phase 2 占位(DeviceBackend trait 连事件通道都没有);plugin_rollback/switch/install 已是完整实现,队友旧注释会过时——审计要以当前代码为准,不能沿用他人历史结论
|
||||
|
||||
## 个人经验 (2026-07-03) — 设备时钟修复
|
||||
|
||||
- 时钟类故障先分层:服务层(timesyncd 是否 enabled)→ 硬件层(RTC 可读?dmesg 找 rtc 驱动报错)→ 网络层(NTP 源可达性)。本次前两层全中,第三层假设被证伪——别先入为主怪网络。
|
||||
- hym8563 这类 I2C RTC 掉电后置 VL 失效标志,`hwclock -r` 报 EINVAL 不等于芯片坏:`hwclock -w` 写一次即清标志恢复。
|
||||
- `timedatectl` 依赖 RTC 可读,RTC 失效时它整个不可用——破局用 `sudo date -s`。
|
||||
- `sudo -S` 从 stdin 读密码,与 heredoc 重定向互斥(heredoc 会顶掉管道,首行被当密码吞掉);远程写 root 文件用 `echo pwd | sudo -S bash -c 'printf ... > file'`。
|
||||
- apt "certificate not yet valid" 时禁止走 apt 装 ntp/chrony(自举死锁),只能用系统自带 timesyncd 或手动设时破局。
|
||||
|
||||
@@ -107,3 +107,10 @@
|
||||
- **测试要先实跑再交付**:m1_2_http.rs 首次交付时本机编不了 aarch64 依赖、没实跑,结果目标机暴露 1 个失败 + 1 个 dead_code warning。编不了也要逐个测试核对前提,不能只靠"看起来对"
|
||||
- **写测试前先核对产品校验(坏前提)**:`test_empty_playlist_does_not_panic` 假设空 playlist 配置能通过 `AppConfig::from_file`,但 config.rs `validate()` 自 init 提交就 `bail!("playlist 不能为空")`。测试的每个 expect/unwrap 前提都要回到产品代码里确认,产品故意拒绝的状态应改测"拒绝行为"(防退化),而不是硬造不可达状态
|
||||
- 测试辅助 struct 里"以后可能用"的方法(如本次的 `sender()`)不要预留;用不上就删,dead_code warning 违反零 warning 铁律
|
||||
## 设备磁盘清理经验(2026-07-03)
|
||||
- 磁盘清理逐项走"依赖检查→du 记录→删除→确认"四步,每步留证据;条件项(如 ~/.nvm)先查进程 + systemd/autostart/crontab 引用再决定
|
||||
- `pgrep -af` / `ps | grep` 远程执行时会命中承载命令的 `bash -c` 自身,必须过滤自匹配再下结论,否则会把"无进程"误判成"有进程"
|
||||
- 只删 target/debug 时用绝对路径精确到 debug 子目录,删后立即 `du + ls` 复核 release;运行中服务健康以"前后同一 PID"为最强证据(说明连重启都没发生过)
|
||||
- journal 是隐形大户(本次 1.5G),`journalctl --vacuum-size=100M` 只清归档段、安全;apt 缓存 `apt-get clean` 即可(392M→24K)
|
||||
- 本次共回收 ~13.4G:Flutter/Android 环境 7.6G + target/debug 3.5G + nvm 1.1G + apt 392M + journal 1.4G,96%→44%
|
||||
- 追加(开发工具清除):deb 装的编辑器(code/cursor)用 `dpkg -l` 确认来源后走 `apt-get purge`,配套删 sources.list.d 源文件和 keyring(Cursor 的 keyring 叫 anysphere.gpg,按 .sources 里 Signed-By 找,别按名字猜);purge 后跑 `autoremove --dry-run` 确认无孤儿依赖;删除有历史数据的工具目录(如 kilo.db)时在交付里显式声明,不能默默带走
|
||||
|
||||
@@ -80,3 +80,4 @@
|
||||
- 2026-03-14:新增 `tests/m1_2_service_manager.rs`,补齐 M1.2 ServiceManager 集成测试基建,覆盖依赖启动顺序、Shutdown 停机、ConfigReloaded/PlayerStatus/WifiResult/StateChanged/PluginReady 广播,以及禁用插件路由跳过
|
||||
- 2026-07-02:M1.2 目标机验收(Linux ARM64)。经验:① 跑全量测试前先 `df -h`——ARM 设备 28G 盘 98% 满导致 ld 链接失败(No space left on device),清 target/debug/incremental + 过期 deps 即可,不必 cargo clean 全量重编;② cargo test 默认 fail-fast,验收要加 `--no-fail-fast` 才能拿到全部 target 的统计;③ "从未实跑过的测试"是最大风险源——test_empty_playlist_does_not_panic 的前提(空 playlist 可加载)与 config.rs 自 init 起的校验矛盾,代码评审没发现,一跑就露馅;④ 同步版本用 git bundle + fetch + merge --ff-only 最安全,先确认祖先关系和设备脏文件不在 diff 内
|
||||
- 2026-07-03:M1.2 第二轮(返工后)验收全绿 147/147 零 warning。经验:scp 未提交文件到设备时必须两端 sha256 对账,并在交付中显式标注设备与 git HEAD 的不一致状态,提醒 commit 后重新同步
|
||||
- 2026-07-03:M1.2 设备同步收尾(2a6e14b)。流程定型:先 `git checkout -- <scp目录>` 丢弃临时 scp 版本 → bundle ff 同步(预检祖先关系 + 设备脏文件不在 diff 内)→ 同步后补 cargo check(纯 check 不必停服务)。新规矩:git commit 由老板亲自管,团队一律不 commit
|
||||
|
||||
Reference in New Issue
Block a user