refactor: 更新团队成员状态和设备清理经验,优化文档内容

This commit is contained in:
2026-07-03 15:17:59 +08:00
parent 2a6e14b976
commit 417dabb127
5 changed files with 163 additions and 4 deletions

View File

@@ -64,3 +64,11 @@
- 审计陷阱:构造点可能藏在 #[cfg(test)] 内(如 ble/gatt.rs:772、dynamic_plugin.rs:348必须回看 mod tests 边界再下判定
- BLE 命令的真实生产者是 core/dispatch.rs::parse_commandgatt.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 或手动设时破局。

View File

@@ -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.4GFlutter/Android 环境 7.6G + target/debug 3.5G + nvm 1.1G + apt 392M + journal 1.4G96%→44%
- 追加开发工具清除deb 装的编辑器code/cursor`dpkg -l` 确认来源后走 `apt-get purge`,配套删 sources.list.d 源文件和 keyringCursor 的 keyring 叫 anysphere.gpg按 .sources 里 Signed-By 找别按名字猜purge 后跑 `autoremove --dry-run` 确认无孤儿依赖;删除有历史数据的工具目录(如 kilo.db时在交付里显式声明不能默默带走

View File

@@ -80,3 +80,4 @@
- 2026-03-14新增 `tests/m1_2_service_manager.rs`,补齐 M1.2 ServiceManager 集成测试基建覆盖依赖启动顺序、Shutdown 停机、ConfigReloaded/PlayerStatus/WifiResult/StateChanged/PluginReady 广播,以及禁用插件路由跳过
- 2026-07-02M1.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-03M1.2 第二轮(返工后)验收全绿 147/147 零 warning。经验scp 未提交文件到设备时必须两端 sha256 对账,并在交付中显式标注设备与 git HEAD 的不一致状态,提醒 commit 后重新同步
- 2026-07-03M1.2 设备同步收尾2a6e14b。流程定型`git checkout -- <scp目录>` 丢弃临时 scp 版本 → bundle ff 同步(预检祖先关系 + 设备脏文件不在 diff 内)→ 同步后补 cargo check纯 check 不必停服务。新规矩git commit 由老板亲自管,团队一律不 commit