# project49 **Repository Path**: 229xu/project49 ## Basic Information - **Project Name**: project49 - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-18 - **Last Updated**: 2026-04-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Project49 - PDF数据收集与收货单匹配系统 [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Python 3.8+](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/downloads/) [![PyQt6](https://img.shields.io/badge/UI-PyQt6-green.svg)](https://www.riverbankcomputing.com/software/pyqt/) 一个基于PyQt6的智能PDF数据收集和收货单自动匹配工具。 **🌟 特色功能**:网络捕获PDF | 智能匹配引擎 | 个性化界面 | 智能学习系统 ## 🚀 快速开始 ### 启动应用 **Windows用户**(推荐): ```bash # 双击运行 start.bat # 或使用PowerShell .\start.ps1 # 带守护进程启动(自动重启) start_with_guardian.bat ``` **首次使用**: 1. 运行 `start.bat` 启动应用 2. 配置代理设置(Ctrl+Shift+S) 3. 开始捕获PDF或导入Excel送货单 --- ## 📁 项目结构 ``` project49/ ├── config/ # ⭐ 用户配置文件(升级时请备份) │ ├── layout_settings.json # 界面布局设置 │ ├── window_settings.json # 窗口大小和位置 │ ├── learning_config.json # 匹配学习数据 │ └── ... ├── data/ # 业务数据 │ ├── backups/ # 配置备份 │ ├── grades_config.json # 牌号映射配置 │ └── customer_name_config.json # 客户名称映射 ├── docs/ # 文档 │ ├── architecture/ # 架构设计文档 │ ├── features/ # 功能说明 │ ├── guides/ # 使用指南 │ └── reports/ # 实施报告和调试输出 ├── src/ # 源代码 │ └── project/ │ ├── api/ # UI层 │ ├── application/ # 应用逻辑层 │ ├── domain/ # 领域模型层 │ └── infrastructure/# 基础设施层 ├── tests/ # 测试脚本 ├── tools/ # 工具和诊断脚本 ├── captured_pdfs/ # 网络捕获的PDF文件 ├── logs/ # 运行日志 ├── start.bat # Windows启动脚本 ├── start.ps1 # PowerShell启动脚本 ├── requirements.txt # Python依赖 └── pyproject.toml # 项目配置 ``` --- ## ✨ 核心功能 ### 1️⃣ 网络捕获PDF - 通过mitmproxy代理自动捕获浏览器中的PDF文件 - 智能识别标签PDF和收货单PDF - 自动解析并显示数据 ### 2️⃣ Excel送货单导入 - 支持拖拽导入Excel文件 - 自动解析送货单数据 - 智能识别合并单元格 ### 3️⃣ 自动匹配引擎 - 基于订单号、客户名称等字段自动匹配 - 消耗式匹配算法,避免重复匹配 - 智能学习用户修正行为 ### 4️⃣ 个性化界面 - **窗口大小记忆**:自动保存和恢复窗口位置、大小 - **表格列宽自定义**:拖动调整列宽,下次启动自动恢复 - **分割器位置记忆**:左右面板比例自动保存 ### 5️⃣ 智能学习 - 记录用户的匹配修正行为 - 自动优化匹配权重 - 提供功能推荐 --- ## 🔧 配置文件说明 所有用户配置文件都存储在 `config/` 目录(与源码分离): | 文件 | 说明 | 是否必需 | |------|------|----------| | `layout_settings.json` | 表格列宽和分割器位置 | 自动生成 | | `window_settings.json` | 主窗口大小和位置 | 自动生成 | | `learning_config.json` | 匹配学习数据 | 自动生成 | | `behavior_patterns.json` | 用户行为模式 | 自动生成 | | `grades_config.json` | 牌号映射配置(在data/目录) | 手动编辑 | | `customer_name_config.json` | 客户名称映射(在data/目录) | 手动编辑 | **升级提示**:升级程序前,请备份整个 `config/` 和 `data/` 目录! --- ## 📖 文档索引 ### 快速入门 - [QUICKSTART.md](QUICKSTART.md) - 快速开始指南 - [docs/标签PDF快速开始.md](docs/标签PDF快速开始.md) - 标签PDF功能介绍 ### 使用指南 - [docs/guides/](docs/guides/) - 各种功能的使用指南 - [docs/事件总线使用指南.md](docs/事件总线使用指南.md) - 系统事件机制 ### 架构设计 - [docs/architecture/](docs/architecture/) - 系统架构文档 - [PROJECT_STRUCTURE.md](PROJECT_STRUCTURE.md) - 项目结构说明 ### 问题排查 - [docs/troubleshooting.md](docs/troubleshooting.md) - 常见问题解答 - [docs/reports/](docs/reports/) - 实施报告和问题分析 --- ## 🛠️ 开发相关 ### 安装依赖 ```bash pip install -r requirements.txt ``` ### 运行测试 ```bash cd tests pytest ``` ### 打包应用 ```bash # 使用PyInstaller打包 pyinstaller project.spec # 创建安装包(需要Inno Setup) iscc installer.iss ``` ### 工具脚本 `tools/` 目录包含各种诊断和分析工具: - `diagnose_*.py` - 问题诊断脚本 - `analyze_*.py` - 数据分析脚本 - `memory_*.py` - 内存监控工具 - `check_*.py` - 状态检查工具 --- ## 🎯 技术栈 - **UI框架**: PyQt6 - **PDF解析**: PyMuPDF (fitz) - **Excel处理**: openpyxl, pandas - **网络代理**: mitmproxy - **架构模式**: 分层架构 + 事件驱动 - **Python版本**: 3.8+ --- ## 📝 最近更新 ### 2026-04-17 - ✅ 添加窗口大小和位置记忆功能 - ✅ 添加表格列宽自定义和自动保存 - ✅ 工程结构整理和优化 - ✅ 修复客户批次号显示问题 详细更新日志请查看:[docs/工程整理报告_2026-04-17.md](docs/工程整理报告_2026-04-17.md) --- ## 🤝 贡献 欢迎提交Issue和Pull Request! - 🐛 [报告Bug](https://gitee.com/your-username/project49/issues) - 💡 [提出建议](https://gitee.com/your-username/project49/issues) - 📖 [改进文档](CONTRIBUTING.md) - 🔧 [提交代码](CONTRIBUTING.md) 详情请查看 [贡献指南](CONTRIBUTING.md)。 --- ## 📄 许可证 本项目采用 MIT 许可证 - 详情请查看 [LICENSE](LICENSE) 文件。 --- ## ⚠️ 免责声明 本项目仅供学习和研究使用。使用者应遵守当地法律法规,不得用于非法用途。 作者不对因使用本软件造成的任何损失负责。 --- **祝您使用愉快!** 🎉