PEC-AI(Power Electronics Converter - AI)是一个面向电力电子工程师的智能设计辅助平台,为全国"AI+能源"大学生科技创新竞赛参赛作品。
通过自然语言对话交互,用户无需掌握复杂的参数配置流程,即可快速完成 DC-DC 变换器的设计,并获取包含完整物料清单(BOM)、设计报告和元器件选型说明的专业方案。
| 特性 | 描述 |
|---|---|
| 🤖 AI 对话引导 | 通过多轮智能对话收集设计需求,自动解析拓扑意图、电压等级、功率需求、优化偏好 |
| ⚡ 多拓扑支持 | 支持 Boost(升压)、Buck(降压)、Buck-Boost(升降压)等主流拓扑结构 |
| 🎯 多目标优化 | 支持效率优先、成本优先、体积优先或均衡设计的帕累托优化策略 |
| 📊 专业报告生成 | 一键生成 BOM 清单、设计报告、半导体/电感/电容选型报告(PDF/CSV 格式) |
| 💬 方案问答 | 设计完成后进入问答模式,解答控制实现、元器件替换、PCB 布局等专业问题 |
| 🎨 双模式界面 | 普通模式(AI 引导)与专业模式(完整参数控制)自由切换 |
| 🔐 用户鉴权 | 支持手机号 + 密码 / 短信验证码登录,JWT Token 认证 |
PEC-AI-Panel/
├── App.tsx # 主应用组件,管理对话流程与界面状态
├── index.tsx # React 应用入口
├── index.html # HTML 模板(含 TailwindCSS 配置)
├── vite.config.ts # Vite 构建配置
├── tsconfig.json # TypeScript 配置
├── package.json # 前端依赖管理
├── AGENTS.md # 项目协作指南
│
├── components/ # UI 组件
│ ├── DownloadPanel.tsx # 方案下载面板(生成进度、文件下载)
│ ├── ProfessionalPanel.tsx # 专业模式参数配置面板
│ ├── PanelComponents.tsx # 通用面板组件(输入框、饼图等)
│ └── ThinkingBlock.tsx # AI 思考过程展示组件
│
├── hooks/ # 自定义 React Hooks
│ ├── useChat.ts # 对话状态管理(消息发送、流式响应)
│ ├── useChatHistory.ts # 对话历史持久化
│ └── useDesignContext.ts # 设计上下文提取与管理
│
├── services/ # 业务逻辑服务
│ ├── api.ts # AI API 调用(流式/非流式)、输入建议生成
│ ├── designExtractor.ts # 从对话中提取设计参数
│ └── reportGenerator.ts # PDF/CSV 报告生成
│
├── image/ # 静态图片资源(拓扑电路图等)
│
└── backend/ # FastAPI 鉴权后端
├── main.py # 应用入口与 CORS 配置
├── db.py # SQLAlchemy 数据库连接
├── deps.py # 依赖注入
├── schemas.py # Pydantic 数据模型
├── requirements.txt # Python 依赖
├── app.db # SQLite 数据库(自动生成)
├── api/
│ └── auth.py # 鉴权路由(注册/登录/短信)
├── core/
│ ├── config.py # 配置管理
│ ├── security.py # JWT 与密码哈希
│ └── sms.py # 短信验证码逻辑
└── models/
├── user.py # 用户模型
└── sms.py # 验证码模型
- 前端: Node.js ≥ 18, npm ≥ 9
- 后端: Python ≥ 3.10
# 1. 安装依赖
npm install
# 2. 启动开发服务器
npm run dev
# 访问 http://localhost:5173
# 3. 构建生产版本
npm run build
# 产物位于 dist/ 目录# 1. 安装 Python 依赖
pip install -r backend/requirements.txt
# 2. 启动后端服务
python -m uvicorn backend.main:app --host 127.0.0.1 --port 8000
# 访问 API 文档: http://127.0.0.1:8000/docs| 技术 | 版本 | 用途 |
|---|---|---|
| React | 18.x | UI 框架 |
| TypeScript | 5.x | 类型安全 |
| Vite | 5.x | 构建工具 |
| TailwindCSS | 3.x | 样式系统 |
| Lucide React | - | 图标库 |
| jsPDF | 2.5.x | PDF 生成(CDN 加载) |
| 技术 | 版本 | 用途 |
|---|---|---|
| FastAPI | 0.111.x | Web 框架 |
| SQLAlchemy | 2.0.x | ORM |
| Pydantic | 2.7.x | 数据验证 |
| python-jose | 3.3.x | JWT 处理 |
| passlib | 1.7.x | 密码哈希(bcrypt) |
| SQLite | - | 默认数据库 |
项目通过 ModelScope 调用大语言模型:
// services/api.ts
const API_URL = "https://api-inference.modelscope.cn/v1/chat/completions";
const MODEL = "deepseek-ai/DeepSeek-V3.2-Exp";支持的功能:
- 流式响应: 实时展示 AI 回复,支持思考过程(reasoning_content)可视化
- 双模式提示词: 设计引导模式(DESIGN_GUIDE_PROMPT)与问答模式(QA_MODE_PROMPT)
- 智能建议: 根据 AI 提问自动生成用户输入建议
通过自然语言对话收集设计参数:
对话流程:
┌─────────────────────────────────────────────────┐
│ 第一阶段 - 基础信息收集 │
│ 1. 拓扑类型 → Boost / Buck / Buck-Boost │
│ 2. 输入电压 → 如 48V 或 36V-60V 范围 │
│ 3. 输出电压 → 如 100V │
│ 4. 输出功率 → 如 500W │
├─────────────────────────────────────────────────┤
│ 第二阶段 - 设计偏好确认 │
│ → 效率优先 / 成本优先 / 体积优先 / 均衡设计 │
├─────────────────────────────────────────────────┤
│ 第三阶段 - 参数确认 │
│ → AI 总结所有参数并等待用户确认 │
├─────────────────────────────────────────────────┤
│ 第四阶段 - 方案生成 │
│ → 用户确认后触发多目标优化 │
└─────────────────────────────────────────────────┘
专业用户可直接配置:
- 拓扑选择: Buck / Boost / Buck-Boost
- 调制方案: CCM / DCM / BCM
- 半导体技术: Si / GaN / SiC
- 磁芯材料: Ferrite / Powder Core / Amorphous
- 扫描范围: 输入电压范围、输出功率范围、采样点数
- 优化权重: 效率 / 成本 / 体积权重配比
- 全局变量: 开关频率、电感系数、环境温度等
参数确认后触发 6 步优化流程:
- 半导体器件迭代优化
- 电感参数迭代优化
- 电容参数迭代优化
- 系统组合优化
- 帕累托前沿筛选
- 报告生成与打包
| 文件 | 格式 | 内容 |
|---|---|---|
| 物料清单 (BOM) | CSV | 元器件型号、参数、数量、单价、总价 |
| 完整设计报告 | 系统规格、损耗分析、热分析、KPI 指标 | |
| 半导体选型报告 | MOSFET/二极管选型、热设计、损耗计算 | |
| 磁性元件设计报告 | 电感磁芯、匝数、绕组、损耗分析 | |
| 电容选型报告 | 输入/输出电容选型、纹波计算 |
设计完成后自动切换至问答模式,可回答:
- 控制实现: PWM 策略、PI/PID 参数、补偿网络、MCU 代码
- 元器件替换: 替代型号推荐、性能影响分析、成本对比
- 设计原理: 拓扑选择依据、损耗计算原理、热设计考量
- 优化建议: 效率提升、成本优化、EMC 设计
- 实际应用: PCB 布局、测试方法、调试技巧、故障排查
POST /auth/sms/send
Content-Type: application/json
{
"phone": "13800138000",
"purpose": "login" # login / register / reset
}
# 开发模式响应直接包含验证码POST /auth/register
Content-Type: application/json
{
"phone": "13800138000",
"password": "your_password", # ≥6 位
"sms_code": "123456"
}# 密码登录
POST /auth/login
{
"phone": "13800138000",
"password": "your_password"
}
# 短信验证码登录(不提供 password)
POST /auth/login
{
"phone": "13800138000",
"sms_code": "123456"
}GET /auth/me
Authorization: Bearer <access_token>在项目根目录创建 .env.local(可选):
# 自定义 AI API Key(默认使用内置 Key)
VITE_API_KEY=your-modelscope-api-key在 backend 目录创建 .env:
SECRET_KEY=your-secret-key-change-in-production
DB_URL=sqlite:///./app.db// index.html
tailwind.config = {
theme: {
extend: {
colors: {
primary: "#5B5FC7", // 主色调(紫色)
panel: "#EEF2FF", // 面板背景
input: "#F3F6F8", // 输入框背景
},
},
},
};界面层 (App.tsx, components/)
↓ 调用
状态层 (hooks/)
↓ 调用
服务层 (services/)
↓ 调用
外部 API (ModelScope / Backend)
- KISS/DRY/SOLID: 单一职责,复用 hooks/services,避免重复逻辑
- UI 一致性: 保持紫色系
#5B5FC7,圆角风格,移动端适配 - 安全: 密码仅存哈希,验证码 6 位数字,敏感配置用环境变量
- 类型安全: 充分利用 TypeScript 接口定义
python backend/check_users.pypython backend/inspect_passwords.py| 问题 | 解决方案 |
|---|---|
| 端口占用 | 确认无残留 |