mirror of
https://github.com/fastapiadmin/FastapiAdmin.git
synced 2026-09-22 13:05:18 +00:00
- Upgraded asyncmy from version 0.2.9 to 0.2.11 to leverage enhancements and bug fixes. - Updated pandas from version 2.2.2 to 2.2.3 for better data processing capabilities. - Added a new configuration option LOGIN_RESOLVE_IP_LOCATION to control IP location resolution during login. - Enhanced login service to handle IP location resolution based on the new configuration. - Improved validation logic in menu request handling to ensure proper redirection address for specific menu types. - Adjusted CRUD template generation to dynamically use primary key column names for better flexibility. - Updated Vue components to ensure proper handling of dynamic primary key references in menu items and forms.
134 lines
8.7 KiB
Markdown
134 lines
8.7 KiB
Markdown
# 缺陷与需求梳理 / 解决顺序排期
|
||
|
||
> 来源:产品与用户反馈整理(持续更新)
|
||
> 说明:**BUG** 为缺陷或错误行为;**需求** 为功能增强或非缺陷类诉求。排期优先:**安全 → 阻断使用类缺陷 → 性能 → 大型能力**。
|
||
|
||
---
|
||
|
||
## 一、BUG(缺陷 / 错误行为)
|
||
|
||
|
||
| 编号 | 简述 | 说明 | 状态 |
|
||
| ------ | ---------------------------------------- | ----------------------------- | -- |
|
||
| **1** | 角色授权:动子权限后丢父菜单,入口消失;分配后左侧能显示,点进页面后左侧导航没了 | 保存时补全祖先菜单 id;授权树节点用 `value ?? id` 建父链(`PermissonDrawer`) | **已验证解决** |
|
||
| **2** | 多级菜单 1-2-3 / 1-4,选 4 时 2、1 也被选中 | (1)左侧布局根:`menuParentBasePath` 替代 `resolveFullPath(route.path)`;(2)**子级递归**:子 `MenuItem` 的 `base-path` 须为**当前父节点**的完整路径 `resolvePath(item.path)`,不能用 `resolvePath(child.path)`(会跳过中间段,index 与 `route.path` 错位) | **待验证** |
|
||
| **7** | 混合布局下点「AI 智能助手」会跳到应用管理 | 顶栏当前模块与路由前缀误匹配(如 `/app` 与 `/application`);已用最长前缀匹配修复 | **已验证解决** |
|
||
| **8** | 历史对话内容不全(仅首条)、带附件对话异常 | AI 对话/附件链路 BUG | — |
|
||
| **14** | 建普通用户分配权限:未全选二级时一级消失,二级变一级 | 与 **#1** 同类;随 **#1** 一并修复与验证 | **已验证解决** |
|
||
| **15** | 先查库再分页,应改为数据库分页 | 性能 + 大数据量正确性风险 | — |
|
||
| **21** | 代码生成不识别表主键,强制 `id` | 代码生成 BUG | — |
|
||
| **24** | 登录慢,因查 IP 等,希望优化 | 性能类缺陷(体验上等同 BUG) | — |
|
||
| **27** | 新增用户密码明文传输 | **安全漏洞**,需 HTTPS + 传输层防护或密码策略 | — |
|
||
| **28** | PG 下 date 类型新增报错 | 反馈已解决,保留作回归验证 | — |
|
||
|
||
|
||
---
|
||
|
||
## 二、需求(功能 / 增强 / 非缺陷)
|
||
|
||
|
||
| 编号 | 简述 |
|
||
| ------- | ------------------------------------ |
|
||
| **3** | 企业微信、飞书等移动端快捷登录 |
|
||
| **4** | 同步企业微信、蓝凌等 OA 组织架构(部门、人员) |
|
||
| **5** | 按岗位授权(非角色),与 OA/企微组织同步 |
|
||
| **6** | 菜单很多时载入/修改很慢 |
|
||
| **9** | 数据权限按菜单/模块细分(如公告全量、用户本部门及以下) |
|
||
| **10** | 前端中英文大量未翻译 |
|
||
| **11** | 上传封装 OSS、S3、FTP/FTPS 等 |
|
||
| **12** | 适配 Python 3.13;升级 asyncmy、pandas 等版本 |
|
||
| **13** | 多租户 |
|
||
| **16** | AI:知识库 + Skills 管理 |
|
||
| **17** | 钉钉登录与消息推送 |
|
||
| **18** | 工作流编排 + 应用上传,类似 Dify |
|
||
| **19** | BPM 在线表单、树表、主子表 |
|
||
| **20** | 菜单升级:导出个人菜单、清空、升级系统菜单再导入 |
|
||
| **22** | WebSocket + 类 MQTT,通知/工作项与前端处理接口 |
|
||
| **23** | 简单博客 Demo(前端免鉴权读数据 + 规范示例) |
|
||
| **25** | 免登录能力加总开关 |
|
||
| **26a** | 有 `order` 字段时统一按 `order` 排序 |
|
||
| **26b** | 布局:分系统式,点目录弹出子系统菜单 |
|
||
|
||
|
||
> 原反馈中有两条均标为「26」,此处拆为 **26a(排序)**、**26b(布局)**。
|
||
|
||
---
|
||
|
||
## 三、合并与依赖说明
|
||
|
||
- **#1 + #14**:同一类「权限勾选 ↔ 菜单树」问题;**已验证解决**(前端树 `value`/父链与保存补祖先),后续大改菜单数据结构时可做回归。
|
||
- **#7**:与布局/路由强相关;**已验证解决**(混合顶栏最长前缀匹配),可与 **#2** 同属前端「菜单与路由」专项做回归。
|
||
- **#15**:涉及多处列表接口,适合单独「分页改造」批次,避免和业务大改混在一起。
|
||
- **#9、#5、#4**:组织/岗位/数据权限有产品依赖,宜在方案定稿后再开发。
|
||
|
||
---
|
||
|
||
## 四、建议解决顺序(排期)
|
||
|
||
### 第一阶段(优先:安全 + 阻断使用 + 明确 BUG)
|
||
|
||
1. **#27 密码明文传输** — 安全最高优先级(HTTPS、前端摘要/后端策略、接口审计)。
|
||
2. ~~**#1 + #14 权限与菜单树**~~ — **已验证解决**(回显、保存补祖先、`menuTreeNodeId`)。
|
||
3. ~~**#7 混合布局 + AI 助手跳转错误**~~ — **已验证解决**(`MixTopMenu` 最长前缀匹配顶栏路径)。
|
||
4. **#21 代码生成主键** — 影响生成代码正确性,改动面相对可控。
|
||
5. **#28 PG date** — 已解决则做回归用例即可。
|
||
|
||
### 第二阶段(体验与性能)
|
||
|
||
1. **#24 登录慢(IP 等)** — 异步、缓存、可配置关闭等。
|
||
2. **#15 数据库分页** — 按模块/接口分批改,优先高频列表。
|
||
3. **#6 菜单多卡顿** — 前端虚拟列表/懒加载 + 接口按需加载 + 后端必要索引。
|
||
4. **#2 菜单多选高亮(左侧导航)** — 未闭环;与 **#7** 顶栏分开排查。
|
||
5. **#8 AI 历史与附件** — 独立排 AI 子迭代。
|
||
|
||
### 第三阶段(规范与国际化)
|
||
|
||
1. **#26a 统一 order 排序** — 约定 + 扫描替换高风险点。
|
||
2. **#10 中英文** — 可持续迭代,可先列文案清单再分批补全。
|
||
|
||
### 第四阶段(架构与集成类,需立项/分期)
|
||
|
||
1. **#11 存储抽象(OSS/S3/FTP…)**
|
||
2. **#12 Python 3.13 + 依赖升级** — 全量测试后再上生产。
|
||
3. **#22 WebSocket 通知机制**
|
||
4. **#25 免登录开关**
|
||
5. **#3、#4、#17** 企微/飞书/钉钉/OA 同步(常分多期:登录 → 组织 → 消息)
|
||
|
||
### 第五阶段(大功能,单独路线图)
|
||
|
||
1. **#13 多租户**
|
||
2. **#9 菜单级数据权限**(与 #5、#4 联动)
|
||
3. **#16 AI 知识库/Skills**
|
||
4. **#18 工作流 + 应用编排**
|
||
5. **#19 BPM 表单**
|
||
6. **#20 菜单导入导出升级**
|
||
7. **#23 博客 Demo**
|
||
8. **#26b 分系统布局模式**
|
||
|
||
---
|
||
|
||
## 五、执行建议
|
||
|
||
- 建议建立 **Issue / 里程碑**:P0(约 1~2 周)→ P1 → P2…,每条拆 **验收标准**。
|
||
- **#2**(及 **#1/#14/#7** 菜单相关回归)建议同一人或同一小组连续跟进,避免菜单逻辑反复。
|
||
- **#15** 建议先列出 **接口清单**(哪些仍是内存分页),按访问量排序改造。
|
||
|
||
---
|
||
|
||
## 变更记录
|
||
|
||
|
||
| 日期 | 说明 |
|
||
| ---------- | ------------- |
|
||
| 2026-03-29 | 初版:缺陷与需求梳理及排期 |
|
||
| 2026-03-29 | **#21** 代码生成:`pk_column_name` 贯通 Vue/TS/Schema/Service/CRUD 模板;**#1/#14** 角色权限保存补全祖先菜单;**#7** 混合顶栏最长前缀匹配;**#24** 登录 IP 归属地可配置关闭(`LOGIN_RESOLVE_IP_LOCATION`) |
|
||
| 2026-03-29 | **#2** 曾尝试改 `MenuItem` 子项 `base-path`,与现有「父级 basePath 已含本段」的拼接规则冲突,导致同级全高亮;已回退为 `resolvePath(child.path)`,原「兄弟误高亮」问题仍待用 `isActiveChild` 路径边界等方式单独修 |
|
||
| 2026-03-29 | **#1/#14** 角色菜单授权:`formatTree` 后节点仅有 `value` 无 `id`,`expandMenuIdsWithAncestors` 误用 `n.id` 导致父链未补齐;改为 `menuTreeNodeId`(`value ?? id`)并修正「父子联动」检测逻辑 |
|
||
| 2026-03-29 | **#7** 混合布局下「AI 智能助手」误跳应用管理:**已验证解决**,BUG 表与排期已标注 |
|
||
| 2026-03-29 | **#1 / #14** 角色授权(回显、保存、菜单树):**已验证解决**,BUG 表与排期已标注 |
|
||
| 2026-03-29 | 混合布局顶栏:点击目录重定向后菜单项 `:focus` 残留似悬浮背景 — `MixTopMenu` 在选中与 `router.push` 后 `blur`;**已验证解决** |
|
||
| 2026-03-29 | **#2** 左侧导航:`BasicMenu`/`MenuItem` 路径拼接实验(含 `normalizedLayoutBase` 等)引发回归,**已回退**至仓库原有 `resolveFullPath` + `resolvePath(child.path)` 实现 |
|
||
| 2026-03-29 | **#2** 再修:确认根因为「根项 basePath 重复拼段」;仅传布局基准 `normalizedLayoutBase`(空→`/`)+ 子级 `:base-path="resolvePath(item.path)"`,`resolvePath` 规范化并与 `activeMenuPath` 对齐 |
|
||
|
||
|