Files
FastapiAdmin/docs/BUG_AND_ROADMAP.md
T
zhangtao 7081850d46 feat(dependencies): update asyncmy and pandas versions for improved performance and compatibility
- 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.
2026-03-29 20:33:33 +08:00

134 lines
8.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 缺陷与需求梳理 / 解决顺序排期
> 来源:产品与用户反馈整理(持续更新)
> 说明:**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` 对齐 |