包含多个会话的累积代码变更: - backend: AI 聊天服务、触发器调度、认证增强、WebSocket、调度器最小间隔 - admin-web: ETL 状态页、任务管理、调度配置、登录优化 - miniprogram: 看板页面、聊天集成、UI 组件、导航更新 - etl: DWS 新任务(finance_area_daily/board_cache)、连接器增强 - tenant-admin: 项目初始化 - db: 19 个迁移脚本(etl_feiqiu 11 + zqyy_app 8) - packages/shared: 枚举和工具函数更新 - tools: 数据库工具、报表生成、健康检查 - docs: PRD/架构/部署/合约文档更新 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
44 lines
1.8 KiB
Markdown
44 lines
1.8 KiB
Markdown
# P6→NS1/RNS1 缺失项 #12:任务列表页的搜索功能
|
||
|
||
## 简要结论
|
||
- 状态:❌ 未解决
|
||
- 风险等级:🟠 中
|
||
- 前端无搜索组件,后端 TASK-1 API 不支持搜索参数,前端 services 层无搜索相关调用。
|
||
|
||
## 详细审查
|
||
|
||
### 审查范围
|
||
- `apps/miniprogram/miniprogram/pages/task-list/task-list.wxml`
|
||
- `apps/miniprogram/miniprogram/pages/task-list/task-list.ts`
|
||
- `apps/backend/app/routers/xcx_tasks.py`
|
||
- `apps/backend/app/schemas/xcx_tasks.py`
|
||
- `apps/miniprogram/miniprogram/services/`(grep 搜索)
|
||
|
||
### 发现
|
||
1. task-list.wxml 中无 `<t-search>` 或任何搜索输入组件
|
||
2. task-list.ts 中无搜索相关的 data 字段(如 `searchKeyword`)或方法(如 `onSearch`)
|
||
3. 后端 `GET /api/xcx/tasks` 仅支持 `status`、`page`、`page_size` 三个查询参数,无 `keyword`/`search`/`query` 参数
|
||
4. services 目录下 grep `search|keyword|query` 结果为空
|
||
5. TaskListResponse schema 中无搜索相关字段
|
||
|
||
### 证据
|
||
后端路由签名:
|
||
```python
|
||
@router.get("", response_model=TaskListResponse)
|
||
async def get_tasks(
|
||
status: str = Query("pending", pattern="^(pending|completed|abandoned)$"),
|
||
page: int = Query(1, ge=1),
|
||
page_size: int = Query(20, ge=1, le=100),
|
||
user: CurrentUser = Depends(require_approved()),
|
||
):
|
||
```
|
||
无 `keyword` 或 `search` 参数。
|
||
|
||
task-list.wxml 中 banner 区域和任务列表区域之间无搜索栏。
|
||
|
||
### 建议
|
||
1. 前端:在 banner 下方、任务列表上方添加 `<t-search>` 组件,支持按客户名/手机号搜索
|
||
2. 后端:`GET /api/xcx/tasks` 添加可选参数 `keyword: str = Query(None)`,在 SQL 中对 `member_name` 和 `member_phone` 做 `ILIKE` 模糊匹配
|
||
3. 前端搜索应做防抖(300ms),避免频繁请求
|
||
4. 搜索结果为空时显示专用空状态("未找到匹配的客户")
|