Commit bffb196
refactor(core)!: 转码逻辑三套平行实现合一(治本)
新建 epycon/conversion.py 作为转换语义的唯一权威实现:
- convert_study():merge/normal 两条路径(自修复后的 __main__ 移植)
- entries_to_marks():标注定位唯一实现(fid 归属、有符号亚秒偏移、
round 采样点映射、范围校验)
- __main__.py 瘦身为 config 处理 + 调用(510 -> 133 行)
- app_gui.execute_epycon_conversion 删除自带 merge/normal 块改为调用
(GUI 特有的进度回调、entries 清洗、汇总 CSV、智能输出目录保留)
随平行实现消亡的 GUI 转码 bug:
- e.msg 字段名错误:单文件模式标注嵌入必然 AttributeError(被吞为
"转换失败"),GUI 单文件标注从未成功写出
- merge 标注按墙钟时间差映射到无间隙采样轴:录制有间隙时第二个
文件起全部错位,且只有下界校验
- int() 截断亚秒偏移;get_raw_log_start_seconds 固定按 x64 <Q 读
时间戳(WMx32 全错);(size-32)//(ch*2) 错误时长公式残留
- 删除 _process_datalog_file:第四套实现,零调用方、调用不存在的
LogParser API(headers/stream_data/start_timestamp),bb74e5e
引入即死亡
附带修复:
- save_prefs 漏合并请求数据,保存偏好一直是空操作
- _tosel 用 timedelta.seconds(按天回绕+丢亚秒)改纯减法+round
- CLI 统一 need_entries 语义:pin_entries=True 而 convert=False 时
此前不读 entries,嵌入静默失效(GUI 语义本来是对的)
- conversion 统一写入 credentials 与 extra_attributes(GUI 的
PatientName/PatientID 保留)
测试:新增 tests/test_conversion.py(10 个)——标注定位单元测试 +
GUI/CLI 等价性测试(两端 Marks 必须逐采样点一致 [1074]/[50]),
防止实现再次分叉。全套 157 个通过。
台账:#17 入"已解决";新增两个需真实数据验证的调查项
(#15 fid 十六进制 vs 文件名进制、#16 双极导联极性)。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>1 parent 3b26894 commit bffb196
6 files changed
Lines changed: 623 additions & 768 deletions
File tree
- docs
- epycon
- core
- tests
Large diffs are not rendered by default.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
12 | 28 | | |
13 | 29 | | |
14 | 30 | | |
| |||
27 | 43 | | |
28 | 44 | | |
29 | 45 | | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
30 | 61 | | |
31 | 62 | | |
32 | 63 | | |
| |||
0 commit comments