Files
ability_ability_runtime/test
openharmony_ci 7e5819401d !20174 merge refactor/insight-intent-reset-v2 into master
refactor(insight_intent): 用 ResetNamespaceFunctions 替代 Unregister+BatchRegister 两步走

Created-by: RuiChen_01
Commit-by: RuiChen_01
Merged-by: openharmony_ci
Description: **IssueNo**: 

**Description**: 基于 PR #20104 提供的 `CliToolMGRClient::ResetNamespaceFunctions` 接口,重构 `UpdateInsightIntentEvent` 路径上的 function 写入逻辑。

原本两步走:先 `UnregisterInsightIntentFunctions` 清空,再 `BatchRegisterInsightIntentFunctions` 增量写入。两步之间存在顺序依赖 —— Unregister 必须同步完成才能保证 BatchRegister 之前清空完毕,避免异步 race 把新 function 清掉。

新接口 `ResetNamespaceFunctions` 服务端原子完成 "clear namespace + write new",单次 IPC 调用。新增同步包装 `CliTool::ResetInsightIntentFunctions`,`UpdateInsightIntentEvent` 改为单次 Reset 调用:

- 循环里 module 失败 → 只删 DB(服务端清空由最终 Reset 原子完成)
- 移除"空集合 early return"(Reset 即使传空 list 也会触发服务端清空)
- 移除 bundleVersionMap(不再需要 map)
- 减少 IPC 次数(2 次 → 1 次)

同步配套改动:
- `DeleteInsightIntent` / `DeleteInsightIntentEvent` 整体下沉 ffrt,避免跨 SA IPC 阻塞 bundle 事件回调线程
- `function_call_convert_test` 新增(覆盖 ConvertFromConfigIntent / ConvertFromExtractIntentInfo / ResetInsightIntentFunctions 路径)
- 三处测试 BUILD.gn 修正:`nlohmann_json:nlohmann_json` → `json:nlohmann_json_static`,补充 `cli_tool_client` dep(解决 `icli_tool_manager.h` not found)

**依赖关系**:本 PR 基于 PR #20104(提供 ResetNamespaceFunctions 接口)+ PR #20086(删除流程异步化,已包含在第 1 个 commit)。若 #20104 评审过程中接口签名调整,本 PR 需要相应 rebase。

**稳定性自检:**
| 自检项                                                       | 自检结果  |
| ------------------------------------------------------------ | -------- |
| 涉及跨进程调用的相关操作需要抛至主线程或加锁防止并发              | N(UpdateInsightIntentEvent 已包 ffrt) |
| 成员变量进行赋值或创建需要排查并发                               | N |
| 谨慎在lambda表达式中使用引用捕获                                | N(无 lambda 改动) |
| 谨慎在未经拷贝的情况下使用外部传入的string、C字符串               | N |
| map\vector\list\set等stl模板类使用时需要排查并发                | N |
| 谨慎考虑加锁范围                                               | N(锁在服务端 CliFunctionDataManager 内) |
| 在IPC通信中谨慎使用同步通信方式                                 | Y(用 ResetNamespaceFunctions 单次同步 IPC 替代原 2 次) |
| 禁止传递this指针至其他模块或线程(特别是eventhandler任务)        | N |
| 禁止将外部传入的裸指针在内部直接构造智能指针                      | N |
| 禁止多个独立创建的智能指针管理同一地址                           | N |
| 禁止在析构函数中抛异步任务                                      | N |
| 禁止js对象在非js线程(例如在IPC线程)创建、使用或销毁             | N |
| 禁止在对外接口中未经判空直接使用外部传入的指针                    | N |
| 禁止接口返回局部变量引用                                        | N |
| 禁止在信号函数中加锁                                            | N |
| 禁止在关键流程(SA启动、应用启动等主流程)执行耗时的操作           | Y(IPC 次数减半) |
| 禁止将同一个cpp编译在不同的so中                                 | N |

**安全编码自检**:N(无新增对外接口,无新增数据解析)

**TDD Result**: 新增 `function_call_convert_test`,覆盖 ConvertFromConfigIntent / ConvertFromExtractIntentInfo / ResetInsightIntentFunctions 入参校验路径

**XTS Result**: 不涉及

### 是否已执行L0用例
- [ ] 已验证
- [x] 不涉及。refactor 改动,原 insight_intent 单测覆盖路径不变

### AI检视评分(使用本地代码检视skills扫描): 待补充

See merge request: openharmony/ability_ability_runtime!20174
2026-08-12 20:06:18 +08:00
..
2026-08-10 13:11:04 +00:00
2026-08-05 16:27:52 +08:00
2026-07-28 21:58:30 +08:00
2024-01-04 01:46:44 +00:00
2024-05-30 15:15:11 +08:00