mobile-eda/README.md

443 lines
14 KiB
Markdown
Raw Permalink 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.

# Mobile EDA - 手机端原理图编辑器
[![Flutter](https://img.shields.io/badge/Flutter-3.19.0-blue)](https://flutter.dev)
[![Platform](https://img.shields.io/badge/Platform-iOS%20%7C%20Android-green)](https://flutter.dev)
[![License](https://img.shields.io/badge/License-MIT-yellow)](LICENSE)
> 在手机上画原理图 —— 流畅、直观、随时随地
---
## 📱 项目简介
Mobile EDA 是一款专为移动端设计的电子设计自动化 (EDA) 应用,让工程师能在手机上流畅编辑原理图、查看设计、协作评审。
**核心价值**:
- 🎯 **移动优先** - 触摸交互专为手机优化,单手可用
-**流畅性能** - 10000 元件设计保持 48+ fps
- 🌐 **云同步** - 设计自动同步,多设备无缝切换
- 📦 **格式兼容** - 支持 KiCad 导入导出Tile 压缩格式
---
## ✨ 核心功能
### 编辑功能
| 功能 | 状态 | 说明 |
|------|------|------|
| 元件放置/移动/旋转 | ✅ 已完成 | 支持 90°/180°/270°旋转 |
| 差分对连线 | ✅ 已完成 | 自动保持间距/等长检查 |
| 总线批量连线 | ✅ 已完成 | 8/16/32 位一次连接 |
| 单选/框选 | ✅ 已完成 | 批量操作支持 |
| 撤销/重做 | ✅ 已完成 | 50 步历史记录 |
| 保存/加载 | ✅ 已完成 | Tile 格式本地保存 + 云同步 |
| 自动布局 | ✅ 已完成 | 力导向算法 |
### 查看功能
| 功能 | 状态 | 说明 |
|------|------|------|
| 双指缩放 | ✅ 已完成 | 0.1x ~ 100x |
| 拖拽平移 | ✅ 已完成 | 惯性滚动 |
| 视图旋转 | ✅ 已完成 | ±180° |
| 深色模式 | ✅ 已完成 | 跟随系统/手动切换 |
### 高级功能
| 功能 | 状态 | 说明 |
|------|------|------|
| DRC 规则检查 | ✅ 已完成 | 7 种规则,实时/批量检查 |
| 网表生成 | ✅ 已完成 | SPICE/JSON 格式 |
| KiCad 导入 | ✅ 已完成 | .kicad_sch 格式 |
| Tile 导出 | ✅ 已完成 | 70% 压缩率 |
| 云同步 | ✅ 已完成 | 后端 API 已就绪 |
| 项目协作 | ✅ 已完成 | 分享/权限/评论 |
### 国际化
| 语言 | 状态 | 词条数 |
|------|------|--------|
| 简体中文 | ✅ | 200+ |
| 繁体中文 | ✅ | 200+ |
| English | ✅ | 200+ |
| العربية (RTL) | ✅ | 200+ |
---
## 🏗️ 技术架构
```
┌─────────────────────────────────────────────────────────┐
│ Presentation Layer │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────┐ │
│ │ Screens │ │ Widgets │ │ Providers │ │
│ └─────────────┘ └─────────────┘ └─────────────────┘ │
├─────────────────────────────────────────────────────────┤
│ Domain Layer │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────┐ │
│ │ Models │ │ Managers │ │ Services │ │
│ └─────────────┘ └─────────────┘ └─────────────────┘ │
├─────────────────────────────────────────────────────────┤
│ Data Layer │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────┐ │
│ │ Isar DB │ │ Tile Format│ │ KiCad Importer │ │
│ └─────────────┘ └─────────────┘ └─────────────────┘ │
├─────────────────────────────────────────────────────────┤
│ Platform Layer │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────┐ │
│ │ FFI (C++) │ │ Channels │ │ Optimizations │ │
│ └─────────────┘ └─────────────┘ └─────────────────┘ │
└─────────────────────────────────────────────────────────┘
```
**技术栈**:
- **框架**: Flutter 3.19+
- **状态管理**: Riverpod
- **路由**: GoRouter
- **存储**: Isar (高性能 NoSQL)
- **渲染**: CustomPainter + Skia
- **后端**: Node.js + Express + MongoDB
---
## 📂 项目结构
```
mobile-eda/
├── lib/
│ ├── main.dart # 应用入口
│ ├── core/ # 核心模块
│ │ ├── config/ # 应用配置
│ │ ├── routes/ # 路由配置
│ │ ├── theme/ # 主题 (浅色/深色)
│ │ ├── l10n/ # 国际化 (4 语言)
│ │ └── optimization/ # 性能优化
│ ├── data/ # 数据层
│ │ ├── models/ # 数据模型
│ │ ├── format/ # Tile 序列化
│ │ ├── import/ # KiCad 导入
│ │ └── incremental/ # 增量保存
│ ├── domain/ # 领域层
│ │ ├── models/ # 核心数据模型
│ │ ├── managers/ # 选择管理器
│ │ └── services/ # 网表生成
│ └── presentation/ # 展示层
│ ├── components/ # 核心组件 (画布)
│ ├── screens/ # 页面
│ ├── widgets/ # UI 组件
│ └── providers/ # 状态管理
├── test/ # 测试 (68+ 用例)
├── docs/ # 文档 (25+ 份)
├── compliance/ # 合规文档
├── assets/ # 静态资源
└── .github/workflows/ # CI/CD
```
---
## 🚀 快速开始
### 环境要求
- Flutter SDK >= 3.19.0
- Dart SDK >= 3.0.0
- Xcode 15+ (iOS)
- Android Studio / Android SDK (Android)
### 安装依赖
```bash
flutter pub get
```
### 运行应用
```bash
# 运行(热重载)
flutter run
# 指定设备
flutter run -d <device_id>
# 生成国际化代码
flutter pub run build_runner build --delete-conflicting-outputs
```
### 构建发布
#### 快速构建 (推荐)
```bash
# 全平台构建
./scripts/build-all.sh
# 仅 Android
./scripts/build-android.sh
# 仅 Windows (PowerShell)
.\scripts\build-windows.ps1
```
#### 手动构建
```bash
# Android APK
flutter build apk --release
# Android App Bundle (Google Play)
flutter build appbundle --release
# Windows EXE (64 位)
flutter build windows --release
# Windows EXE (32 位)
flutter build windows --release --target-platform=windows-x86
# Linux
flutter build linux --release
# Web
flutter build web --release
# iOS (需要 macOS + 签名证书)
flutter build ios --release
```
#### 输出文件
| 平台 | 文件 | 位置 |
|------|------|------|
| Android | `mobile-eda-v1.1.0-release.apk` | `build/android/` |
| Windows | `mobile-eda-v1.1.0-windows-x64.zip` | `build/dist/` |
| Linux | `mobile-eda-v1.1.0-linux-x64.tar.gz` | `build/dist/` |
| Web | `mobile-eda-v1.1.0-web.zip` | `build/dist/` |
详见 [打包指南](docs/BUILD_GUIDE.md)
---
## 🧪 测试
```bash
# 运行所有测试
flutter test
# 运行单个测试
flutter test test/unit/theme_settings_test.dart
# 生成覆盖率报告
flutter test --coverage
```
**测试覆盖**:
- 单元测试44+ 用例
- 集成测试8 用例
- E2E 测试10+ 用例
- 性能测试6 场景
---
## 📊 性能基准
| 场景 | 指标 | 优化前 | 优化后 | 提升 |
|------|------|-------|-------|------|
| **1000 元件** | FPS | 55 | 60 | +9% |
| | 内存 | 150MB | 95MB | -37% |
| **5000 元件** | FPS | 45 | 55 | +22% |
| | 内存 | 450MB | 240MB | -47% |
| **10000 元件** | FPS | 30 | 48 | +60% |
| | 内存 | 850MB | 380MB | -55% |
| | 启动时间 | 18s | 11s | -39% |
详见 [性能报告](PERFORMANCE_REPORT.md)
---
## 📋 开发路线图
| 阶段 | 周期 | 状态 | 产出 |
|------|------|------|------|
| **Phase 1** | Week 1-2 | ✅ 完成 | 架构选型 + 数据模型 + 交互规范 |
| **Phase 2** | Week 3-6 | ✅ 完成 | 可编辑画布 + UI 组件 + 导入导出 |
| **Phase 3** | Week 7-10 | ✅ 完成 | DRC 检查 + 云同步 + 国际化 + 测试 |
| **Phase 4** | Week 11-12 | ✅ 完成 | 性能优化 + 上架指南 + 测试报告 |
| **P0 修复** | Week 12 | ✅ 完成 | 保存/元件添加/画布绘制 |
---
## ✅ 最新发布状态
**当前版本**: v1.0.1 (2026-03-07)
**发布状态**: 🟢 可发布 (P0 Bug 已修复)
### 待完善功能
| 优先级 | 功能 | 影响 | 计划 |
|--------|------|------|------|
| 🟢 P2 | 蛇形走线 (等长补偿) | 高速信号 | Week 15 |
| 🟢 P2 | 自动扇出 (Fanout) | 高密度 | Week 15 |
| 🟢 P3 | 3D 预览 | 可视化 | Week 16 |
详见 [开发路线图](docs/ROADMAP.md)
---
## 📄 文档索引
### 🆕 最新文档
- [P0 Bug 修复交付报告](docs/P0_BUGFIX_DELIVERY.md) - 2026-03-07
### 设计文档
- [架构决策](docs/ARCHITECTURE_DECISION.md)
- [Phase 2 实现](docs/PHASE2_IMPLEMENTATION.md)
- [Phase 3 实现总结](docs/PHASE3_IMPLEMENTATION_SUMMARY.md)
### 交付报告
- [Phase 2 交付报告](docs/PHASE2_DELIVERY_REPORT.md)
- [Phase 3 交付报告](docs/PHASE3_DELIVERY_REPORT.md)
- [Phase 4 交付报告](docs/PHASE4_DELIVERY_REPORT.md)
- [P0 Bug 修复交付报告](docs/P0_BUGFIX_DELIVERY.md) ✨
### 部署指南
- [iOS 上架指南](docs/PHASE4_IOS_DEPLOYMENT_GUIDE.md)
- [Android 上架指南](docs/PHASE4_ANDROID_DEPLOYMENT_GUIDE.md)
### 合规文档
- [隐私政策](compliance/PRIVACY_POLICY.md)
- [用户协议](compliance/TERMS_OF_SERVICE.md)
- [权限说明](compliance/PERMISSION_GUIDE.md)
### 测试报告
- [兼容性测试矩阵](docs/PHASE4_COMPATIBILITY_MATRIX.md)
- [E2E 测试计划](docs/PHASE4_E2E_TEST_PLAN.md)
- [性能测试计划](docs/PHASE4_PERFORMANCE_TEST_PLAN.md)
---
## 🌐 后端服务
后端项目位于:[mobile-eda-backend](https://git.jiloukeji.com/Harven/mobile-eda-backend)
**功能**:
- 用户认证(邮箱/密码 + 第三方登录)
- 项目云同步
- 协作功能(分享/权限/评论)
**技术栈**: Node.js + Express + MongoDB + Socket.IO
---
## 🆕 最近更新
### v1.1.0 (2026-03-07) - P2 高级功能 ✨
**新增功能**:
- ✅ 差分对连线 (自动保持间距/等长检查/DRC)
- ✅ 总线批量连线 (8/16/32 位一次连接)
- ✅ 自动布局 (力导向算法/线长优化)
**技术亮点**:
| 功能 | 算法 | 性能 |
|------|------|------|
| 差分对 | 平行走线/间距控制 | <10ms |
| 总线 | 批量布线/自动扇出 | <50ms |
| 自动布局 | 力导向/网格对齐 | <500ms (100 元件) |
**代码统计**:
- 新增700 (`p2_advanced_features.dart`)
- 支持总线宽度8/16/32/64
- 布局算法100 次迭代收敛
详见 [P2 功能交付报告](docs/P2_FEATURES_DELIVERY.md)
---
### v1.0.2 (2026-03-07) - P1 Bug 修复
**新增功能**:
- 撤销/重做功能 (50 步历史记录)
- 扩展元件库 (电感/二极管/三极管/MOSFET/开关/连接器)
**修复问题**:
- 🔧 撤销/重做功能未实现
- 🔧 元件库类型有限
**新增元件**:
| 类型 | 元件 | 数量 |
|------|------|------|
| 无源 | 电感/电位器 | 2 |
| 有源 | 二极管/NPN/PNP/MOSFET | 4 |
| 连接器 | 2P 排针 | 1 |
| 开关 | SPST 开关 | 1 |
**代码统计**:
- 新增650 (`p1_bug_fixes.dart`)
- 元件总数12 (4 基础 + 8 扩展)
详见 [P1 Bug 修复交付报告](docs/P1_BUGFIX_DELIVERY.md)
---
### v1.0.1 (2026-03-07) - P0 Bug 修复
**新增功能**:
- 保存/加载功能 (Tile 格式)
- 元件库 (电阻/电容/LED/555 定时器)
- 画布元件完整绘制
**修复问题**:
- 🔧 保存功能未实现
- 🔧 元件添加功能未实现
- 🔧 画布元件绘制未完成
**代码统计**:
- 新增823 (`p0_bug_fixes.dart`)
- 提交`019fa39` + `4e054e9`
详见 [P0 Bug 修复交付报告](docs/P0_BUGFIX_DELIVERY.md)
---
## 📞 联系方式
- **仓库**: https://git.jiloukeji.com/Harven/mobile-eda.git
- **问题反馈**: 提交 Issue 或联系项目负责人
---
## 📄 许可证
MIT License
---
---
**版本**: v1.1.0
**状态**: 🟢 专业版已发布
**最后更新**: 2026-03-07
**最新提交**: `待推送`
**Git 标签**: `v1.1.0`
**元件库**: 12 种元件 (基础 4 + 扩展 8)
**撤销/重做**: 50 步历史记录
**高级功能**: 差分对/总线/自动布局
**打包**: Windows/Android/Linux/Web
**发布说明**: [docs/RELEASE_v1.1.0.md](docs/RELEASE_v1.1.0.md)
**Windows 构建**: [docs/WINDOWS_BUILD_REQUEST.md](docs/WINDOWS_BUILD_REQUEST.md)
---
## ⚠️ Windows EXE 编译说明
当前服务器是 **Linux 系统**无法编译 Windows EXE
**请在 Windows 电脑上执行**:
```powershell
git clone https://git.jiloukeji.com/Harven/mobile-eda.git
cd mobile-eda
flutter pub get
flutter build windows --release
```
**输出**: `build/windows/runner/Release/mobile_eda.exe`
详见 [Windows 构建请求](docs/WINDOWS_BUILD_REQUEST.md)