feat: 累积功能变更 — 聊天集成、租户管理、小程序更新、ETL 增强、迁移脚本
包含多个会话的累积代码变更: - 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>
This commit is contained in:
62
docs/prd/Neo_Specs/review-audit/P6-NS1-18.md
Normal file
62
docs/prd/Neo_Specs/review-audit/P6-NS1-18.md
Normal file
@@ -0,0 +1,62 @@
|
||||
# P6→NS1/RNS1 缺失项 #18:无障碍适配
|
||||
|
||||
## 简要结论
|
||||
- 状态:❌ 未解决
|
||||
- 风险等级:🟡 低
|
||||
- 项目自有页面(task-list、task-detail 及自定义组件)中无任何 `aria-label`、`aria-role` 等无障碍属性。仅 TDesign 组件库内部自带了部分无障碍支持。
|
||||
|
||||
## 详细审查
|
||||
|
||||
### 审查范围
|
||||
- `apps/miniprogram/miniprogram/pages/task-list/task-list.wxml`
|
||||
- `apps/miniprogram/miniprogram/pages/task-detail/task-detail.wxml`
|
||||
- `apps/miniprogram/miniprogram/components/clue-card/clue-card.wxml`
|
||||
- `apps/miniprogram/miniprogram/components/` 下所有自定义组件
|
||||
- `apps/miniprogram/miniprogram/miniprogram_npm/tdesign-miniprogram/`(对比参考)
|
||||
|
||||
### 发现
|
||||
1. 全局 grep `aria-label|aria-role|aria-hidden|role=` 在项目自有 wxml 文件中结果为零
|
||||
2. 仅 TDesign 组件库(`miniprogram_npm/tdesign-miniprogram/`)内部使用了无障碍属性:
|
||||
- `swiper-nav.wxml`:`aria-role="button" aria-label="上一张/下一张"`
|
||||
- `tabs.wxml`:`aria-role="tablist"`
|
||||
- `upload.wxml`:`aria-role="presentation"` + 动态 `aria-label`
|
||||
3. task-list.wxml 中的交互元素缺少无障碍标注:
|
||||
- 任务卡片无 `aria-role="button"` 或 `aria-label`
|
||||
- 重试按钮无 `aria-role="button"`
|
||||
- 上下文菜单项无 `aria-label`
|
||||
4. task-detail.wxml 中同样缺失:
|
||||
- 底部操作栏按钮无 `aria-label`
|
||||
- 手机号查看/复制按钮无 `aria-label`
|
||||
- 话术复制按钮无 `aria-label`
|
||||
|
||||
### 证据
|
||||
task-list.wxml 中任务卡片(无无障碍属性):
|
||||
```xml
|
||||
<view class="task-card ..."
|
||||
hover-class="task-card--hover" hover-stay-time="100"
|
||||
data-id="{{item.id}}" data-tasktype="{{item.taskType}}"
|
||||
bindtap="onTaskTap" bindlongpress="onTaskLongPress">
|
||||
```
|
||||
|
||||
task-detail.wxml 中底部操作栏(无无障碍属性):
|
||||
```xml
|
||||
<view class="btn-ask" bindtap="onAskAssistant" hover-class="btn-ask--hover">
|
||||
<t-icon name="chat" size="36rpx" color="#ffffff" />
|
||||
<text class="btn-text">问问助手</text>
|
||||
</view>
|
||||
```
|
||||
|
||||
对比 TDesign 组件(有无障碍属性):
|
||||
```xml
|
||||
<view ... aria-role="button" aria-label="上一张"/>
|
||||
```
|
||||
|
||||
### 建议
|
||||
1. 为所有可交互元素添加 `aria-role` 和 `aria-label`:
|
||||
- 任务卡片:`aria-role="button" aria-label="{{item.customerName}} {{item.taskTypeLabel}}"`
|
||||
- 操作按钮:`aria-role="button" aria-label="问问助手"` / `aria-label="添加备注"`
|
||||
- 上下文菜单项:`aria-role="menuitem" aria-label="置顶"`
|
||||
2. 为非交互的装饰性元素添加 `aria-hidden="true"`(如 banner 背景图、调试面板)
|
||||
3. 确保焦点顺序合理:banner → 任务列表 → 底部操作栏
|
||||
4. 建议创建一个无障碍适配 checklist,在后续页面开发中统一执行
|
||||
5. 优先级较低,可作为 P13 前端打磨的后续迭代
|
||||
Reference in New Issue
Block a user