46 lines
1.5 KiB
Markdown
46 lines
1.5 KiB
Markdown
# 03 - Search:任务标题关键词检索
|
|
|
|
## 目标
|
|
|
|
- 在主界面顶部增加搜索框
|
|
- 支持按任务标题进行模糊匹配(实时过滤)
|
|
|
|
## 范围
|
|
|
|
- 前端 UI:输入框、清空按钮、键盘交互(Esc 清空、Enter 可选)
|
|
- 过滤逻辑:对“树状任务”给出明确策略
|
|
- 性能:任务量增大时仍保持可用(至少避免 O(n^2) 的明显退化)
|
|
|
|
## 依赖
|
|
|
|
- 不依赖 Linux/Avalonia 或云同步,可独立并行完成
|
|
|
|
## 过滤策略(需在实现时确定,并写入实现说明)
|
|
|
|
树状任务(父子任务)常见两种策略,任选其一并保持一致:
|
|
|
|
1. **命中即显示(含上下文)**
|
|
- 任意节点标题命中则显示该节点
|
|
- 若子任务命中,可同时显示其祖先链(便于理解层级)
|
|
2. **扁平化命中**
|
|
- 只显示命中的任务(可能丢失层级语义)
|
|
|
|
建议优先采用“命中即显示(含上下文)”,用户可更快定位。
|
|
|
|
## 实施步骤(建议)
|
|
|
|
1. 确定搜索框放置位置(主界面顶部)
|
|
2. 增加 `searchQuery` 状态与派生 `filteredTasks`
|
|
3. 将过滤逻辑接入现有列表渲染
|
|
4. 补充交互细节
|
|
- 输入时实时过滤
|
|
- 清空按钮
|
|
- Esc 清空、保持输入焦点(可选)
|
|
|
|
## 验收标准
|
|
|
|
- 输入关键字后,任务列表实时过滤,仅展示命中结果(符合上述策略)
|
|
- 清空后恢复原列表
|
|
- 对中英文与大小写的处理行为明确(至少:英文大小写不敏感;中文按包含匹配)
|
|
|