poi-plugin-gimmick-tracker 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,47 +1,43 @@
1
1
  # poi-plugin-gimmick-tracker
2
2
 
3
- 面向 poi 11.1.0 的舰队 Collection 活动图机关条件追踪 MVP。插件平时只在后台记录当前出击事实;只有检测到机关变化信号时才聚焦内嵌页签,展示待确认卡片。插件不使用独立窗口,不联网,也不依赖 `poi-plugin-battle-detail` 的战斗分组。
3
+ 面向 poi 11.1.0 的舰队 Collection「解密·削甲进度」插件:自动对账活动海域的解谜(解密)与削甲条件进度。
4
4
 
5
- ## 能做什么
6
-
7
- - 直接监听 `window` 的 `game.response`,记录 `/api_req_map/start`、`next`、`air_raid` 路线。
8
- - 直接覆盖 sortie / combined battle 的 `battle`、`airbattle`、`ld_airbattle`、`night_to_day`、`sp_midnight`、`midnight` 等响应,并由 `battleresult` 补充胜利 Rank。
9
- - 观测节点到达、节点胜利、`api_kouku.api_stage1.api_disp_seiku` 节点制空,以及 `api_destruction_battle` 基地防空制空;路线明确标出 `ld_airbattle` 舰队空袭和基地防空,并保存时间戳与 API 路径引用。
10
- - 从 FCD `fcd.map["<area>-<map>"].route[api_no][1]` 解析 `D`、`A2` 等节点标签;数据缺失时显示 `#<api_no>`,不会令监听器崩溃。
11
- - 支持粘贴 `D点S胜2次`、`C2点到达2次`、`A2点空优1次`、`守家空优2次`,可用中英文逗号、分号、空格混排。
12
- - 按海域显示事实观测数与人工确认状态。`A胜` 接受 A/S/SS,`S胜` 接受 S/SS;制空条件按“达到或优于”匹配,例如空确也满足空优。
13
- - 待确认卡片左侧显示本次完整路线和触发时间,右侧下拉选择本次完成条件;按海域的清单会保留该图上一次触发出击的路线。
14
-
15
- ## 触发与确认语义
5
+ 0.2.0 起为重写版本:不再需要每次出击后人工确认,打开页签即见「还差哪几项」。
16
6
 
17
- 主信号是 `/kcsapi/api_port/port` 的 `body.api_event_object.api_m_flag2 === 1`。辅助信号包括任意 `*/battleresult` 的 `body.api_m2 === 1`,以及 `start` / `next` / `air_raid` 中对象或数组形态 `api_destruction_battle` 元素的 `api_m2 === 1`。
18
-
19
- 同一 sortie 只生成一张 review;辅助信号可先创建 pending,回港事件再封存完整快照。确认攻略 condition 只设置 `confirmed` / `confirmedAt`,不会把事实观测数再加一次。只有该海域没有攻略 condition 时,确认观测候选才生成自由完成记录。
7
+ ## 能做什么
20
8
 
21
- 如果插件在出击中途才加载,可能只收到带 `m_flag2` 的回港响应。此时仍会生成 pending 并聚焦,但路线为空且明确标记“未捕获到完整出击”,不会静默漏记。
9
+ - 后台记录活动图出击事实:节点到达、胜绩、节点制空、舰队空袭、基地防空(只记录活动海域,日常图不采集)。
10
+ - 自动把观测对进你导入的条件清单,计数达标即打勾并发通知;没有确认卡,不需要逐次下拉选择。
11
+ - 条件进度只属于明确的「轮次」窗口,不混入历史数据——不再出现「守家空优 34/3」式的终身累计计数。
12
+ - 阶段自动旋转:`mapinfo` 的 `api_gauge_num` 上升时自动归档上一阶段解谜账本并开新一轮;解密生效信号(`m_flag2`/`m2`)自动封存解谜清单;海域通关自动归档削甲账本。
13
+ - 削甲账本默认整图一份(削甲清单通常横跨多个血条阶段),开打前点一次「开始削甲计数」即可,通关或手动「削甲完成」归档。
14
+ - 每条证据带时间戳:清单行显示「计数 x/N · 最后达成时间」,信号系统失灵时一眼可核对。
22
15
 
23
- ## 本地数据与生命周期
16
+ ## 导入条件
24
17
 
25
- 状态按宿主 store 中的 `info.basic.api_member_id` 分开保存:
18
+ 支持中英文逗号/分号/顿号/换行混排:
26
19
 
27
20
  ```text
28
- <window.APPDATA_PATH>/gimmick-tracker/<memberId>/state-v1.json
21
+ 守家空优3次,Y2点S胜1次,L2点A胜1次
22
+ C2点到达1次
23
+ G点(P1boss)S胜1次 ← 括号注记会保留展示
24
+ P3点A2次 ← 可省略「胜」字
25
+ P2点空优1次
26
+ 解谜:C2点到达1次 ← 行内或独立分组行,区分解谜/削甲两本账
29
27
  ```
30
28
 
31
- JSON 含 `schemaVersion`,写入采用同目录临时文件加 rename。memberId 未知或非法时不会创建目录,JSON 内也不重复保存 memberId。插件只保存地图、节点、Rank、制空、时间戳和用户确认状态,不保存 API token、舰队、装备或其他账号内容,不发起网络请求。
29
+ 导入时逐行报告识别结果,无法识别的行会明确指出,不会静默丢弃。条件可删除,重复导入按签名更新次数。
32
30
 
33
- 监听器在模块级 controller 中管理:`pluginDidLoad` 幂等注册一次,`pluginWillUnload` 对称移除;热重载不会在同一模块实例内重复监听。
31
+ ## 数据与隐私
34
32
 
35
- 自动聚焦优先使用 poi 11.1.0 `views/env` 暴露的 `ipc.access('MainWindow').ipcFocusPlugin(id)`,随后才尝试 deprecated `window.ipc`。IPC 不可用时按单栏/双栏布局 dispatch 新 shape `@@TabSwitch`;再失败只调用 `window.success`。所有路径都被隔离,宿主异常不会中断事件处理。
33
+ - 状态按成员分文件保存在 `<poi AppData>/gimmick-tracker/<memberId>/state-v2.json`,临时文件加 rename 原子写。
34
+ - 0.1.x 旧版数据(`state-v1.json`)首次启动自动迁移:活动图观测转为只读「旧数据」归档轮,旧条件清单封存展示、不参与新计数。
35
+ - 只保存地图、节点、胜绩、制空、时间戳与条件清单,不保存舰队装备等账号内容,不发起网络请求。
36
36
 
37
- ## 开发与验收
37
+ ## 开发
38
38
 
39
39
  ```powershell
40
40
  npm install
41
41
  npm test
42
- npm run typecheck
43
42
  npm run build
44
- npm pack --dry-run
45
43
  ```
46
-
47
- React 18、ReactDOM 和 Blueprint 5 都是 peer dependency,并在 CJS 构建中 external;安装进 poi 后复用宿主实例,不打包第二份 React。