💳 专业的卡片资产管理工具 - 支持卡片、余额、租赁、导出和备份恢复
CardOps 是一款 Apple 风格的桌面端卡片运营管理台,基于 Flask + PyWebView 构建,提供直观的界面和完整的数据管理功能。
- 🎨 Apple 风格 UI - 简洁美观的界面,统一的设计语言
- 📊 卡片管理 - 完整的 CRUD 操作,支持搜索和筛选
- 💰 余额跟踪 - 实时监控余额状态,支持调整记录
- 📋 租赁管理 - 管理卡片租赁记录,支持收款跟踪
- 📈 数据分析 - 仪表盘、风险预警、客户汇总
- 📤 数据导出 - 支持 Excel 格式导出
- 💾 备份恢复 - 自动/手动数据库备份与恢复
- 🖥️ 桌面应用 - 单文件 EXE,零依赖部署
直接运行 EXE 文件,无需安装:
- 从 Releases 下载
CardOps.exe - 双击运行
- 数据自动保存到
%LOCALAPPDATA%\CardOps\
使用安装脚本安装到系统目录:
- 下载
install_CardOps_v1.1.0.bat - 双击运行安装脚本
- 按提示完成安装
- 从桌面快捷方式或开始菜单启动
安装位置:%LOCALAPPDATA%\Programs\CardOps\
# 1. 克隆仓库
git clone https://github.com/yourusername/cardops.git
cd cardops
# 2. 创建虚拟环境
python -m venv .venv
.venv\Scripts\activate
# 3. 安装依赖
pip install -r requirements.txt
# 4. 启动应用
python app.py访问 http://127.0.0.1:5000 或使用桌面模式:
python desktop.py首次启动时,CardOps 将:
- 自动创建数据库(
%LOCALAPPDATA%\CardOps\instance\cardops.db) - 生成示例数据
- 打开桌面窗口(1440x900)
- 查看: 浏览所有卡片,支持搜索和筛选
- 新增: 点击「新增卡片」填写信息
- 编辑: 点击操作列的编辑按钮
- 删除: 点击删除按钮,在确认弹窗中确认
- 查看余额列表和状态
- 手动调整余额
- 查看余额历史记录
- 在卡片详情页查看租赁记录
- 新增/编辑/删除租赁
- 跟踪收款情况
- 进入「数据导出」页面
- 选择导出类型(卡片/租赁/余额/交易)
- 下载 Excel 文件
- 创建备份: 进入「数据维护」,点击「立即备份」
- 下载备份: 在备份列表中点击下载
- 恢复备份: 点击恢复按钮并确认
- 删除备份: 点击删除按钮并确认
⚠️ 恢复操作会自动创建当前数据库的备份,防止数据丢失。
- 后端: Flask 3.0, SQLAlchemy 2.0
- 前端: Bootstrap 5, DataTables, Chart.js
- 桌面: PyWebView 6.1
- 打包: PyInstaller 6.19
- Python: 3.11+
cardops/
├── src/ # 源代码
│ ├── __init__.py # Flask 应用工厂
│ ├── config.py # 配置文件
│ ├── extensions.py # 扩展初始化
│ ├── path_helper.py # 路径解析工具
│ ├── seed.py # 示例数据
│ ├── models/ # 数据模型
│ ├── routes/ # 路由控制器
│ ├── services/ # 业务逻辑
│ ├── templates/ # Jinja2 模板
│ └── static/ # 静态资源
├── assets/ # 资源文件
│ ├── CardOps.ico # 应用图标
│ ├── CardOps_icon.png # Logo 图片
│ └── scripts/ # 构建脚本
├── docs/ # 文档
│ └── CardOps_v1.1-P1_UserGuide.pdf # 用户指南
├── release/ # 发布文件
│ ├── CardOps.exe # 便携版 EXE
│ └── install_*.bat # 安装脚本
├── test/ # 测试脚本
├── app.py # Flask 入口
├── desktop.py # 桌面模式入口
├── build_exe.bat # 打包脚本
├── CardOps.spec # PyInstaller 配置
├── requirements.txt # Python 依赖
└── README.md # 本文件
# 运行备份恢复测试
python test/test_backup_restore.py
# 运行冻结模式测试
python test/test_frozen_flask.py
# 验证安装包
python test/validate_package.py# 使用批处理脚本打包
build_exe.bat
# 或手动运行
python -m PyInstaller --clean CardOps.spec生成的 EXE 位于 dist/CardOps.exe
python assets/scripts/generate_user_guide_pdf.py生成的 PDF 位于 release/CardOps_v1.1-P1_UserGuide.pdf
欢迎提交 Pull Request 和 Issue!
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 提交 Pull Request
- 遵循 PEP 8 规范
- 使用 4 空格缩进
- 添加适当的注释和文档字符串
本项目采用 MIT 许可证 - 详见 LICENSE 文件
- Flask - Web 框架
- PyWebView - 桌面窗口
- Bootstrap - UI 组件库
- DataTables - 表格插件
-
📧 Email: 723498873@qq.com
-
🐛 Issues: GitHub Issues
-
💬 Discussions: GitHub Discussions
Made with ❤️ by CardOps Team


