Repository navigation
前后端分离重构 #1362
DoctorReid
started this conversation in
Ideas
前后端分离重构
#1362
Replies: 3 comments 9 replies
FastAPI 接口总览与设计原则目标:在不改变现有业务逻辑的前提下,为应用增加一个稳定的 HTTP/WS(后续可选 gRPC)边界,便于替换 GUI、集成到 MCP 或任意前端。
模块覆盖:
文档:
运行方式(Windows PowerShell)开发环境建议在仓库根目录执行,并将内容根 Set-Location C:\Users\Anonymous\IdeaProjects\ZenlessZoneZero-OneDragon
$env:PYTHONPATH = (Resolve-Path .\src).Path
python -m pip install -U uvicorn[standard]
python -m uvicorn zzz_od.api.main:app --reload --host 127.0.0.1 --port 8000说明:
|
0 replies
0 replies
|
@A-nony-mous @Qian23333 可以看得出AI写了很多的废话,两份md有用的内容可能不到20%,而且还跟pr里具体代码不符 |
9 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
ZenlessZoneZero-OneDragon C/S架构重构设计文档
1. 项目概述
1.1 背景
当前项目使用PySide6作为GUI前端,业务逻辑与UI紧密耦合。为了提高系统的可扩展性、可维护性,并支持多种客户端形态,需要重构为Client/Server架构。
1.2 目标
1.3 关键需求
2. 架构设计
2.1 整体架构
2.2 技术栈
后端 (Python)
前端 (Web)
桌面客户端 (Electron/Tauri/WPF/Avalonia)
3. 详细设计
3.1 后端服务设计
3.1.1 API结构
3.1.2 WebSocket日志推送实现
3.1.3 任务队列与并发控制
3.2 前端设计
3.2.1 项目结构
3.2.2 WebSocket连接管理
3.3 Electron透明浮层实现
3.3.1 主进程配置
3.3.2 浮层渲染进程
4. 核心功能实现
4.1 状态持久化
4.2 并发控制实现
5. 用户故事 (User Stories)
5.1 核心用户故事
2. 支持移动端响应式
3. 功能完整性与桌面版一致
2. 支持日志级别过滤
3. 支持日志搜索和导出
2. 透明度可调节
3. 可拖动位置
2. 状态自动恢复
3. WebSocket自动重连
2. 自动检测任务冲突
3. 提供优先级设置
2. 提供SDK和示例代码
3. 支持Postman导入
2. 性能指标采集
3. 错误报警机制
5.2 扩展用户故事
2. 配置版本管理
3. 配置共享功能
2. 支持循环任务
3. 支持条件触发
2. 支持统计分析
3. 支持导出报表
6. 功能需求 (Feature Requirements)
6.1 后端功能需求
- JWT Token支持
- 权限控制
- 统一的错误处理
- 请求验证
- 状态更新推送
- 心跳保活
- 优先级调度
- 任务取消
- 任务并发限制
- 资源锁机制
- 日志持久化
- 日志检索
- 配置验证
- 配置版本化
- 错误追踪
- 告警通知
6.2 前端功能需求
- 任务创建/编辑
- 任务状态监控
- 日志过滤搜索
- 日志导出
- 配置导入导出
- 配置预设
- 状态恢复
- 数据同步
- 自适应布局
- 触摸优化
- 自定义主题
- 主题持久化
- 语言切换
- 自动检测
6.3 Electron功能需求
- 浮层定位
- 透明度调节
- 托盘菜单
- 消息通知
- 快捷键自定义
- 快捷键冲突检测
- 增量更新
- 回滚机制
- 目录选择
- 文件监控
- 启动优化
- 渲染优化
7. 系统流程图
7.1 任务执行流程
graph TD A[用户提交任务] --> B{认证检查} B -->|失败| C[返回401] B -->|成功| D{并发检查} D -->|超限| E[加入队列] D -->|通过| F[创建任务] E --> G[等待调度] G --> F F --> H[返回任务ID] H --> I[执行任务] I --> J{执行状态} J -->|进行中| K[推送日志] K --> J J -->|成功| L[更新状态] J -->|失败| M[记录错误] L --> N[推送结果] M --> N N --> O[清理资源]7.2 WebSocket通信流程
sequenceDiagram participant C as Client participant S as Server participant T as Task participant L as Logger C->>S: 建立WebSocket连接 S->>C: 连接确认 C->>S: 订阅任务channel S->>C: 订阅成功 C->>S: 启动任务(HTTP) S->>T: 创建任务 T->>S: 返回任务ID S->>C: 返回任务ID T->>L: 输出日志 L->>S: 日志事件 S->>C: 推送日志(WS) T->>S: 状态更新 S->>C: 推送状态(WS) Note over C,S: 网络断开 C->>C: 检测断开 C->>S: 重新连接 S->>C: 连接确认 C->>S: 恢复订阅 S->>C: 推送缓存的消息7.3 透明浮层交互流程
graph LR A[主窗口] --> B[检测游戏窗口] B --> C{游戏运行?} C -->|是| D[创建浮层窗口] C -->|否| E[隐藏浮层] D --> F[获取游戏窗口位置] F --> G[计算浮层位置] G --> H[显示浮层] H --> I[接收任务状态] I --> J[更新浮层内容] J --> K{鼠标悬停?} K -->|是| L[启用交互] K -->|否| M[禁用交互] L --> N[处理用户操作] M --> I8. 数据模型设计
8.1 核心数据模型
9. 开发计划
9.1 里程碑规划
阶段1:基础架构 (第1-2周)
目标:完成后端基础框架和前端项目搭建
任务清单:
交付物:
阶段2:核心功能 (第3-4周)
目标:完成所有业务API和前端主要页面
任务清单:
交付物:
阶段3:Electron集成 (第5周)
目标:实现桌面客户端和透明浮层
任务清单:
交付物:
阶段4:优化完善 (第6周)
目标:性能优化和文档完善
任务清单:
交付物:
9.2 风险评估
10. 技术决策记录
10.1 为什么选择FastAPI?
决策:使用FastAPI作为后端框架
原因:
替代方案:
10.2 为什么需要Electron?
决策:使用Electron实现桌面客户端
原因:
替代方案:
10.3 状态管理方案选择
决策:前端使用Pinia(Vue)或Redux Toolkit(React)
原因:
11. 测试策略
11.1 测试类型
11.2 测试用例示例
12. 部署方案
12.1 开发环境
12.2 生产部署
13. 现有实现总结
基于代码分析,项目当前已经完成的部分:
13.1 后端已实现
基础框架
核心功能
API路由(部分实现)
13.2 待实现功能
后端待完成
前端待开发
Electron待实现
14. 下一步行动计划
立即执行(本周)
完善后端日志系统
实现任务队列
前端项目初始化
短期计划(2周内)
中期计划(1个月内)
15. 结论
本次C/S架构重构将大幅提升系统的可扩展性和用户体验。通过分离前后端,不仅可以支持多种客户端形态,还能更好地进行团队协作开发。虽然需要投入一定的开发资源,但长期来看将带来显著的收益。
关键成功因素:
通过遵循本设计文档,项目能够顺利完成从单体应用到C/S架构的转型。
All reactions