refactor(docs): reorganize documentation directory structure

- Create user/ - User guides and configuration documentation
- Create features/ - Feature specifications and business flows
- Create debugging/ - Debug guides and quick references
- Create testing/ - Test infrastructure, reports, and plans
- Create internal/ - Internal plans, analyses, and templates
- Move cleaner/*.md to cleaner/ directory
- Move LOGGING_*.md to developer/guides/

Add docs/README.md as documentation index with category navigation
and quick lookup guide.

The reorganized structure makes it easier for users and developers
to quickly locate relevant documentation.
This commit is contained in:
Misaka_Company
2026-04-14 12:15:09 +08:00
parent 0c6bb85e67
commit 681f3ba517
32 changed files with 137 additions and 0 deletions

View File

@@ -0,0 +1,300 @@
# ERPAuto 配置文件位置说明
## 概述
ERPAuto 根据运行环境自动选择配置文件的存储位置:
- **开发环境**:项目根目录(方便编辑和版本控制)
- **生产环境**用户数据目录AppData安全且升级时保留
---
## 配置文件位置
### 1. 开发环境
**适用场景**:
- 开发和调试
- 配置需要版本控制
- 团队协作
**配置文件位置**:
```
<项目根目录>\config.yaml
```
**示例**:
```
D:\Projects\ERPAuto\
├── src\
├── package.json
├── config.yaml # 开发配置
├── config.yaml.backup # 自动备份
└── config.template.yaml # 配置模板
```
**检测方式**:
```typescript
process.env.NODE_ENV === 'development' || !app.isPackaged
```
---
### 2. 生产环境(安装版和便携版)
**适用场景**:
- 正式发布的应用
- 配置需要在应用升级时保留
- 多用户环境,每个用户独立配置
**配置文件位置**:
```
Windows: C:\Users\<用户名>\AppData\Roaming\erpauto\config.yaml
macOS: ~/Library/Application Support/erpauto/config.yaml
Linux: ~/.config/erpauto/config.yaml
```
**示例**:
```
C:\Users\zhangsan\AppData\Roaming\erpauto\
├── config.yaml # 用户配置
└── config.yaml.backup # 自动备份
```
**检测方式**:
```typescript
app.isPackaged === true
```
---
## 为什么生产环境使用用户数据目录?
| 方案 | 配置位置 | 优点 | 缺点 |
| ------------------ | --------------- | --------------------------------------------------------------------------- | ------------------------------------------------------------------------------------ |
| **用户数据目录** ✓ | AppData\Roaming | • 应用升级时配置保留<br>• 符合 Windows 规范<br>• 多用户隔离<br>• 配置不暴露 | • 路径较深,不易访问 |
| **应用同目录** ✗ | .exe 同目录 | • 易于访问和编辑 | • 应用升级时配置可能丢失<br>• 需要写权限<br>• 配置暴露在应用目录<br>• 多用户共享配置 |
**我们的选择**:生产环境统一使用用户数据目录,确保:
1. ✅ 应用升级时用户配置不会丢失
2. ✅ 符合 Windows 应用规范
3. ✅ 配置不暴露在应用目录,更安全
4. ✅ 多用户环境下,每个用户有独立配置
---
## 构建配置
### electron-builder.yml
```yaml
win:
target:
- nsis # 安装版
- portable # 便携版
portable:
artifactName: ${name}-${version}-portable.${ext}
# 便携版也使用用户数据目录 (AppData)
# 不是 exe 同目录,确保配置在升级时保留
nsis:
artifactName: ${name}-${version}-setup.${ext}
```
### 构建命令
```bash
# 构建 Windows 安装版和便携版
npm run build:win
```
### 输出文件
```
dist/
├── erpauto-1.0.0-setup.exe # 安装版
└── erpauto-1.0.0-portable.exe # 便携版
```
---
## 配置文件结构
```yaml
# ================================
# ERPAuto 配置文件
# ================================
# 数据库配置
database:
activeType: mysql # 切换字段mysql 或 sqlserver
mysql:
host: 192.168.31.83
port: 3306
database: BLD_DB
username: remote_user
password: ''
charset: utf8mb4
sqlserver:
server: localhost
port: 1433
database: BLD_DB
username: sa
password: ''
driver: 'ODBC Driver 18 for SQL Server'
trustServerCertificate: true
# 路径配置
paths:
dataDir: 'D:/python/playwrite/data/'
defaultOutput: '离散备料计划维护_合并.xlsx'
validationOutput: '物料状态校验结果.xlsx'
# 数据提取配置
extraction:
batchSize: 100
verbose: true
autoConvert: true
mergeBatches: true
enableDbPersistence: true
# 校验配置
validation:
dataSource: database_full
batchSize: 2000
matchMode: substring
enableCrud: false
defaultManager: ''
# 订单号解析配置
orderResolution:
tableName: 'productionContractData_26 年压力表合同数据'
productionIdField: '总排号'
orderNumberField: '生产订单号'
```
---
## 配置文件管理
### 查看当前配置路径
运行调试工具:
```bash
npx tsx src\main\tools\config-path-debug.ts
```
### 快速访问配置Windows
```bash
# 打开配置所在目录
%APPDATA%\erpauto
```
### 备份配置
```bash
# 备份整个配置目录
xcopy %APPDATA%\erpauto D:\Backup\erpauto-config /E /I
```
### 迁移配置
从旧版本迁移:
```bash
# 使用迁移脚本
npx tsx scripts\migrate-env-to-yaml.ts
```
---
## 常见问题
### Q: 便携版应用的配置为什么不放在 exe 同目录?
**A**:
- 放在 exe 同目录会导致应用升级时配置丢失
- 便携版每次运行会解压到临时目录,无法持久保存配置
- 使用用户数据目录AppData确保配置持久化
### Q: 如何快速访问配置文件?
**A**:
- Windows: 按 `Win + R`,输入 `%APPDATA%\erpauto`,回车
- 或在文件管理器地址栏输入 `%APPDATA%\erpauto`
### Q: 多台电脑如何同步配置?
**A**:
1. 导出配置:`xcopy %APPDATA%\erpauto\config.yaml \\server\share\`
2. 导入配置:`xcopy \\server\share\config.yaml %APPDATA%\erpauto\`
或使用同步工具OneDrive、坚果云等同步配置目录。
### Q: 配置文件损坏了怎么办?
**A**:
1. 删除 `config.yaml`
2. 应用会自动创建新的默认配置
3.`config.yaml.backup` 恢复(如果存在)
### Q: 开发环境下如何切换配置?
**A**:
- 直接编辑项目根目录的 `config.yaml`
- 建议保留 `config.template.yaml` 作为模板
-`config.yaml` 加入 `.gitignore`,避免提交敏感信息
---
## 技术实现
### ConfigManager 路径选择逻辑
```typescript
// 检测是否为开发环境
const isDev = process.env.NODE_ENV === 'development' || !app.isPackaged
if (isDev) {
// 开发环境:项目根目录
this.configPath = path.resolve(__dirname, '../../config.yaml')
} else {
// 生产环境(安装版和便携版):用户数据目录
this.configPath = path.join(app.getPath('userData'), 'config.yaml')
}
```
---
## 版本历史
| 版本 | 配置策略 | 说明 |
| ---- | ------------------------------- | -------------------- |
| 1.0+ | 开发:项目目录<br>生产AppData | 确保配置在升级时保留 |
---
## 参考资料
- [Electron app.getPath() 文档](https://www.electronjs.org/docs/api/app#appgetpathname)
- [electron-builder 配置](https://www.electron.build/configuration.html)
- [Windows 应用数据存储规范](https://docs.microsoft.com/en-us/windows/win32/shell/knownfolderid)

View File

@@ -0,0 +1,171 @@
# BIPUsers 表 ERP 参数迁移指南
## 概述
本次迁移将 ERP 配置参数(`ERP_URL`, `ERP_USERNAME`, `ERP_PASSWORD`)从 `.env` 文件迁移到 `dbo_BIPUsers` 数据库表中,实现每个用户独立的 ERP 配置。
## 迁移步骤
### 步骤 1连接到 MySQL 数据库
使用你喜欢的 MySQL 客户端工具连接:
**方式 A: MySQL 命令行**
```bash
mysql -h 192.168.31.83 -P 3306 -u remote_user -p'3.1415926Beeke' BLD_DB
```
**方式 B: MySQL Workbench / Navicat / DBeaver**
- Host: `192.168.31.83`
- Port: `3306`
- Username: `remote_user`
- Password: `3.1415926Beeke`
- Database: `BLD_DB`
### 步骤 2执行迁移 SQL
运行以下 SQL 脚本添加新字段:
```sql
-- ============================================
-- BIPUsers 表迁移:添加 ERP 参数字段
-- ============================================
USE BLD_DB;
-- 1. 添加 ERP_URL 字段
ALTER TABLE dbo_BIPUsers ADD COLUMN IF NOT EXISTS ERP_URL VARCHAR(500) NULL COMMENT 'ERP 系统 URL';
-- 2. 添加 ERP_Username 字段
ALTER TABLE dbo_BIPUsers ADD COLUMN IF NOT EXISTS ERP_Username VARCHAR(255) NULL COMMENT 'ERP 用户名';
-- 3. 添加 ERP_Password 字段
ALTER TABLE dbo_BIPUsers ADD COLUMN IF NOT EXISTS ERP_Password VARCHAR(255) NULL COMMENT 'ERP 密码';
-- 4. 验证字段已添加
DESCRIBE dbo_BIPUsers;
```
**注意:** 如果你的 MySQL 版本不支持 `ADD COLUMN IF NOT EXISTS`,请使用:
```sql
USE BLD_DB;
ALTER TABLE dbo_BIPUsers ADD COLUMN ERP_URL VARCHAR(500) NULL COMMENT 'ERP 系统 URL';
ALTER TABLE dbo_BIPUsers ADD COLUMN ERP_Username VARCHAR(255) NULL COMMENT 'ERP 用户名';
ALTER TABLE dbo_BIPUsers ADD COLUMN ERP_Password VARCHAR(255) NULL COMMENT 'ERP 密码';
```
### 步骤 3初始化 ERP 配置
将所有现有用户的 ERP 配置设置为当前 `.env` 中的值:
```sql
-- 更新所有用户的 ERP 配置
UPDATE dbo_BIPUsers
SET
ERP_URL = 'https://68.11.34.30:8082/',
ERP_Username = '在这里填写你的 ERP 用户名',
ERP_Password = '在这里填写你的 ERP 密码'
WHERE ERP_URL IS NULL OR ERP_URL = '';
```
**请将上面的占位符替换为实际的 ERP 凭证!**
### 步骤 4验证迁移结果
```sql
-- 检查所有用户的 ERP 配置
SELECT
UserName,
UserType,
ERP_URL,
ERP_Username,
CreateTime
FROM dbo_BIPUsers
ORDER BY UserName;
```
## 迁移后配置
### 更新 .env 文件(可选)
迁移完成后,`.env` 文件中的 ERP 配置将不再使用,但为了向后兼容可以保留:
```bash
# ERP 配置(已废弃,仅用于向后兼容)
# ERP_URL=https://68.11.34.30:8082/
# ERP_USERNAME=your_username
# ERP_PASSWORD=your_password
```
### 在应用中配置用户 ERP 参数
迁移完成后,每个用户可以通过应用界面配置自己的 ERP 参数:
1. 登录应用
2. 进入设置页面
3. 配置个人 ERP 连接信息
4. 测试连接
5. 保存
## 故障排除
### 问题 1字段已存在错误
```
Error: Duplicate column name 'ERP_URL'
```
**解决方案:** 字段已经存在,跳过添加步骤,直接执行步骤 3 初始化数据。
### 问题 2连接被拒绝
```
Error: Access denied for user 'remote_user'@'%'
```
**解决方案:** 检查数据库用户权限,确保 `remote_user``ALTER``UPDATE` 权限。
### 问题 3连接超时
```
Error: connect ETIMEDOUT
```
**解决方案:**
- 检查网络连接
- 确认 MySQL 服务器正在运行
- 检查防火墙设置
## 回滚方案
如果需要回滚,可以删除新增的字段:
```sql
-- ⚠️ 警告:这将永久删除 ERP 配置数据
ALTER TABLE dbo_BIPUsers DROP COLUMN ERP_URL;
ALTER TABLE dbo_BIPUsers DROP COLUMN ERP_Username;
ALTER TABLE dbo_BIPUsers DROP COLUMN ERP_Password;
```
## 完成确认
迁移完成后,请确认以下事项:
- [ ] 三个新字段已成功添加到 `dbo_BIPUsers`
- [ ] 所有现有用户的 ERP 配置已初始化
- [ ] 应用程序可以正常启动
- [ ] 数据提取和物料清理功能正常工作
---
**迁移脚本文件:**
- `src/main/services/user/migration/add-erp-params-to-bipusers-mysql.sql` - 完整 SQL 脚本
- `src/main/services/user/migration/run-migration.ts` - TypeScript 自动迁移脚本(需要网络访问)
**创建时间:** 2026-03-05

262
docs/user/USER_GUIDE.md Normal file
View File

@@ -0,0 +1,262 @@
# ERPAuto 用户指南
## 目录
1. [简介](#简介)
2. [安装指南](#安装指南)
3. [配置说明](#配置说明)
4. [使用指南](#使用指南)
5. [数据库设置](#数据库设置)
6. [常见问题](#常见问题)
---
## 简介
ERPAuto 是一个专为 ERP 系统设计的自动化工具,主要功能包括:
- **数据提取**:自动从 ERP 系统批量下载物料计划数据为 Excel 文件
- **物料清理**:自动删除指定订单的物料代码
- **数据库存储**:支持将提取的数据存储到 MySQL 或 SQL Server 数据库
---
## 安装指南
### 系统要求
- **操作系统**Windows 10/11, macOS 10.15+, Linux
- **内存**:至少 4GB RAM
- **Node.js**:版本 18 或更高
### 安装步骤
1. **下载应用**
- 从发布页面下载对应系统的安装包
- Windows: `ERPAuto-Setup-x.x.x.exe`
- macOS: `ERPAuto-x.x.x.dmg`
- Linux: `ERPAuto-x.x.x.AppImage`
2. **安装**
- Windows: 运行安装程序,按照提示完成安装
- macOS: 将应用拖拽到 Applications 文件夹
- Linux: 赋予执行权限后运行
3. **首次运行**
- 启动应用
- 首次运行需要先配置 ERP 连接信息
---
## 配置说明
### ERP 连接配置
应用需要配置 ERP 系统的连接信息。在主界面点击「设置」->「ERP 配置」:
| 配置项 | 说明 | 示例 |
| ------- | -------------- | ----------------------------- |
| ERP URL | ERP 系统地址 | `https://192.168.1.100:8082/` |
| 用户名 | ERP 登录用户名 | `admin` |
| 密码 | ERP 登录密码 | `******` |
### 数据库配置(可选)
如需将提取的数据存储到数据库,需要配置数据库连接:
**MySQL 配置:**
| 配置项 | 默认值 | 说明 |
| -------- | ----------- | ---------------- |
| 主机 | `localhost` | MySQL 服务器地址 |
| 端口 | `3306` | MySQL 端口 |
| 用户名 | `root` | 数据库用户名 |
| 密码 | - | 数据库密码 |
| 数据库名 | `erpauto` | 数据库名称 |
**SQL Server 配置:**
| 配置项 | 默认值 | 说明 |
| -------- | ----------- | ------------------ |
| 服务器 | `localhost` | SQL Server 地址 |
| 端口 | `1433` | SQL Server 端口 |
| 用户名 | `sa` | 登录用户名 |
| 密码 | - | 登录密码 |
| 数据库 | `erpauto` | 数据库名称 |
| 加密 | `false` | 是否启用 SSL 加密 |
| 信任证书 | `true` | 是否信任服务器证书 |
---
## 使用指南
### 数据提取功能
**使用场景:** 从 ERP 系统批量下载多个订单的物料计划数据。
**操作步骤:**
1. 进入「数据提取」页面
2. 在左侧输入框中输入订单号,每行一个:
```
SC70202602120085
SC70202602120120
SC70202602120137
```
3. 设置批量大小(建议 100-500
4. 点击「开始提取」
5. 等待提取完成,查看结果统计
**提取结果说明:**
- **下载文件数**:成功下载的 Excel 文件数量
- **记录数**:提取的总记录数
- **错误数**:失败的订单数量
### 物料清理功能
**使用场景:** 删除指定订单中的特定物料代码。
**操作步骤:**
1. 进入「物料清理」页面
2. 输入订单号(每行一个)
3. 输入要删除的物料代码(每行一个)
4. **重要**:首次使用建议勾选「干运行模式」
5. 点击「开始清理」
6. 查看清理结果
**干运行模式:**
- 勾选后,系统仅预览将要删除的数据,不实际执行删除
- 建议先用干运行模式确认数据正确
- 确认无误后,取消勾选执行实际删除
**清理结果说明:**
- **处理订单数**:成功处理的订单数量
- **删除物料数**:实际删除的物料数量
- **跳过物料数**:未找到或跳过的物料数量
- **订单详情**:每个订单的详细处理结果
---
## 数据库设置
### MySQL 数据库初始化
```sql
CREATE DATABASE IF NOT EXISTS erpauto CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE erpauto;
-- 创建物料数据表
CREATE TABLE IF NOT EXISTS material_data (
id INT AUTO_INCREMENT PRIMARY KEY,
order_number VARCHAR(50) NOT NULL,
material_code VARCHAR(100) NOT NULL,
material_name VARCHAR(255),
quantity DECIMAL(10, 2),
unit VARCHAR(20),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
INDEX idx_order (order_number),
INDEX idx_material (material_code)
);
```
### SQL Server 数据库初始化
```sql
CREATE DATABASE erpauto;
GO
USE erpauto;
GO
-- 创建物料数据表
CREATE TABLE material_data (
id INT IDENTITY(1,1) PRIMARY KEY,
order_number NVARCHAR(50) NOT NULL,
material_code NVARCHAR(100) NOT NULL,
material_name NVARCHAR(255),
quantity DECIMAL(10, 2),
unit NVARCHAR(20),
created_at DATETIME DEFAULT GETDATE()
);
GO
CREATE INDEX idx_order ON material_data(order_number);
CREATE INDEX idx_material ON material_data(material_code);
GO
```
---
## 常见问题
### 1. 无法登录 ERP 系统
**问题描述:** 点击登录后提示认证失败
**解决方法:**
1. 确认用户名和密码正确
2. 检查 ERP 系统是否可访问
3. 确认账号有足够权限
### 2. 提取时卡在加载中
**问题描述:** 点击提取后一直显示加载中
**解决方法:**
1. 检查网络连接
2. 减少批量大小
3. 确认 ERP 系统运行正常
4. 刷新页面后重试
### 3. 物料清理无数据
**问题描述:** 清理时显示没有可删除的数据
**解决方法:**
1. 确认订单号正确
2. 确认物料代码在该订单中存在
3. 先用干运行模式查看是否有匹配数据
### 4. 数据库连接失败
**问题描述:** 无法连接到数据库
**解决方法:**
1. 确认数据库服务已启动
2. 检查数据库配置信息
3. 确认防火墙允许数据库端口
4. 测试数据库连接:
```bash
# MySQL
mysql -h localhost -u root -p
# SQL Server
sqlcmd -S localhost -U sa
```
### 5. 应用闪退
**问题描述:** 应用启动后立即关闭
**解决方法:**
1. 查看日志文件获取错误信息
2. 重新安装应用
3. 确认系统满足最低要求
4. 尝试以管理员身份运行
---
## 技术支持
如有其他问题,请联系技术支持团队或提交 Issue。