fs-lawrisk/docs/PERMIT_BROWSER_IMPLEMENTATI...

7.9 KiB
Raw Blame History

许可事项管理筛选器实现报告

概述

应需求改进,原有的许可事项管理页面使用传统的"区域选择-许可事项"方式已改为现代化的筛选器浏览形式,支持多维度筛选(地区、关联部门、主题等),提供更高效的浏览体验。

实现内容

1. 后端API开发

新增API接口

1.1 高级筛选接口

  • 路径: POST/GET /fs-ai-asistant/api/workflow/lawrisk/admin/permits/advanced-filter
  • 功能: 支持多维度筛选许可事项
  • 参数:
    • region: 行政区域筛选
    • theme: 主题筛选
    • department: 关联部门筛选
    • search_text: 许可名称关键词搜索
    • limit: 返回数量限制默认100
    • offset: 分页偏移默认0
  • 特性:
    • 支持GET和POST两种请求方式
    • 返回结构化数据,包含分页信息
    • 自动计算总数和页数

1.2 筛选选项接口

  • 路径: GET /fs-ai-asistant/api/workflow/lawrisk/admin/permits/filter-options
  • 功能: 获取所有可用的筛选选项
  • 返回数据:
    {
      "regions": [...],      // 所有行政区域
      "themes": [...],       // 所有主题
      "departments": [...]   // 所有服务部门
    }
    

新增数据函数

filter_permits_advanced()

  • 位置: lawrisk/services/licensing_repo.py
  • 功能: 多维度筛选许可事项的数据库查询函数
  • 特性:
    • 支持区域、主题、部门、关键词四种筛选维度
    • 包含风险数量统计
    • 支持主题去重和聚合
    • 提供总数统计用于分页
    • 使用窗口函数优化性能

2. 前端页面开发

许可事项浏览页面

  • 文件: static/permit_browser.html
  • 功能特性:
  1. 多维度筛选器

    • 行政区域下拉选择
    • 主题下拉选择
    • 关联部门下拉选择
    • 许可名称关键词搜索输入框
  2. 筛选结果展示

    • 表格形式展示许可事项
    • 显示许可名称、所属区域、主题标签、风险数量
    • 支持主题标签展示(一个许可可能有多个主题)
    • 每行提供"查看"操作按钮
  3. 分页功能

    • 每页50条记录
    • 显示总数量和页码信息
    • 上一页/下一页按钮
    • 自动禁用边界按钮
  4. 用户体验优化

    • 加载状态提示
    • 错误信息展示
    • 空状态友好提示
    • 回车键快速搜索
    • 响应式设计

3. 数据库查询优化

查询语句特点

SELECT DISTINCT
    p.id AS permit_id,
    p.name AS permit_name,
    rtp.region_id,
    r.name AS region_name,
    rtp.theme_id,
    t.name AS theme_name,
    COUNT(rpr.risk_id) OVER (PARTITION BY rtp.permit_id, rtp.region_id) AS risk_count,
    COUNT(DISTINCT rtp.theme_id) OVER (PARTITION BY rtp.permit_id, rtp.region_id) AS theme_count
FROM region_theme_permits rtp
JOIN permits p ON p.id = rtp.permit_id
JOIN regions r ON r.id = rtp.region_id
LEFT JOIN themes t ON t.id = rtp.theme_id
LEFT JOIN region_permit_risks rpr ON ...
LEFT JOIN permit_sources ps ON ...
WHERE 1=1
  AND (条件筛选)
ORDER BY LOWER(p.name), LOWER(r.name), LOWER(COALESCE(t.name, ''))
LIMIT %s OFFSET %s

性能优化措施

  1. DISTINCT去重: 避免同一许可在不同主题下重复出现
  2. 窗口函数: 高效计算风险数量和主题数量,无需子查询
  3. 索引优化: 充分利用现有索引region_id, permit_id, theme_id
  4. 分页查询: 避免一次返回大量数据
  5. 统一排序: 确保分页结果稳定一致

4. 数据结构设计

筛选结果数据结构

{
  "permits": [
    {
      "id": "permit-uuid",
      "name": "许可名称",
      "region": {
        "id": "region-uuid",
        "name": "区域名称"
      },
      "themes": [
        {
          "id": "theme-uuid",
          "name": "主题名称"
        }
      ],
      "risk_count": 5,
      "theme_count": 3
    }
  ],
  "pagination": {
    "total": 150,
    "limit": 50,
    "offset": 0,
    "count": 50
  }
}

技术特性

安全性

  • 所有API都需要管理员权限验证
  • 参数化查询防止SQL注入
  • 输入数据验证和清理

性能

  • 数据库查询优化,使用窗口函数
  • 分页查询减少数据传输
  • 前端缓存筛选选项
  • 支持大数据集分页浏览

可维护性

  • 统一API响应格式
  • 清晰的错误处理和日志记录
  • 模块化代码结构
  • 完整的文档注释

使用指南

访问地址

许可事项浏览页面: http://localhost:8000/static/permit_browser.html

使用流程

  1. 打开页面

    • 访问许可事项浏览页面
    • 页面自动加载所有筛选选项
  2. 选择筛选条件

    • 从下拉列表选择行政区域(或保持"全部区域"
    • 从下拉列表选择主题(或保持"全部主题"
    • 从下拉列表选择关联部门(或保持"全部部门"
    • 在搜索框输入许可名称关键词(可选)
  3. 执行筛选

    • 点击"应用筛选"按钮
    • 或在搜索框按回车键
  4. 浏览结果

    • 查看许可事项列表
    • 查看每个许可的详细信息(区域、主题、风险数)
    • 点击"查看"按钮查看详情(功能待完善)
  5. 翻页浏览

    • 使用"上一页"/"下一页"按钮翻页
    • 查看页码信息了解当前位置
  6. 重置筛选

    • 点击"重置筛选"清除所有条件

筛选维度说明

1. 行政区域

  • 说明: 许可事项所属的行政区域
  • 选项: 市级、禅城区、南海区、顺德区、三水区、高明区
  • 筛选逻辑: 精确匹配指定区域的许可事项

2. 主题

  • 说明: 许可事项关联的法律主题
  • 选项: 所有已配置的主题列表
  • 筛选逻辑: 精确匹配指定主题的许可事项

3. 关联部门

  • 说明: 上传或绑定许可的部门单位
  • 选项: 所有服务部门(市级单位、区级单位)
  • 筛选逻辑: 匹配上传部门或绑定部门的许可事项

4. 搜索关键词

  • 说明: 在许可名称中进行模糊搜索
  • 输入: 任意关键词(支持中文)
  • 筛选逻辑: 许可名称包含关键词即可匹配

与原有系统的对比

特性 原有方式 新方式
筛选维度 单一(区域) 多维度(区域、主题、部门、关键词)
浏览方式 区域选择 → 事项列表 筛选器 → 事项列表
主题支持 不明确 明确显示主题标签
风险统计 显示风险数量
分页支持 支持分页浏览
搜索功能 支持关键词搜索
部门关联 支持部门筛选
响应式设计 一般 完全响应式

测试建议

功能测试

  1. 筛选功能测试

    • 单个维度筛选测试
    • 多个维度组合筛选测试
    • 关键词搜索测试
    • 无结果场景测试
  2. 分页功能测试

    • 正常分页浏览
    • 边界页面访问(第一页、最后一页)
    • 总数统计准确性
  3. 用户体验测试

    • 页面加载速度
    • 筛选响应时间
    • 错误处理验证

性能测试

  1. 大量数据筛选响应时间
  2. 复杂条件组合查询性能
  3. 并发访问压力测试

未来改进方向

  1. 高级筛选功能

    • 支持多选筛选(一个字段可选多个值)
    • 支持日期范围筛选
    • 支持自定义排序
  2. 数据展示优化

    • 添加许可详情弹窗
    • 支持列表视图和卡片视图切换
    • 添加数据导出功能
  3. 性能优化

    • 添加查询结果缓存
    • 实现虚拟滚动(大数据量)
    • 添加数据预加载

总结

本次改进成功将许可事项管理从传统的"区域选择-事项列表"模式升级为现代化的多维度筛选浏览模式,大大提升了用户体验和查询效率。新系统支持更丰富的筛选维度、更直观的展示形式,并具有良好的扩展性和维护性。


实施日期: 2025-11-19 版本: v1.0 状态: 已完成