feat: 多用户权限体系、AI 助手、SKU 目录与合同清洗(开源准备)

本地长期开发成果的整体入库快照,包含后端鉴权/权限、AI 接入、合同解析、
SKU 目录等模块,以及前端相应页面与样式改版。

后端
- 新增鉴权与会话:scrypt 密码哈希、HttpOnly cookie(happy_sid)、登录失败锁定
- 新增「角色 → 权限组 → 权限点」三级权限模型与审计日志
- 新增 AI 提供商接入与预设(兼容 OpenAI 协议,内置 DeepSeek / 通义千问等)
- 新增合同解析、合同文件保留策略、客户归属与访问控制
- 新增 SKU 目录、组织品牌、新客开发、系统日志等路由

前端
- 新增登录页与用户 / 权限组 / 系统日志管理页
- 新增客户详情、客户公海、询盘详情、报价编辑器、合同清洗中心
- 新增 AI 配置、组织品牌、包装参数、SKU 选择器等组件
- 新增英文大写金额、未保存改动拦截、抽屉与骨架屏
- 新增 stage1 样式层;产品、供应商、订单等页面改版
- EmbeddedSku 页面并入现有产品体系后删除

开源准备
- 新增 AGPL-3.0 LICENSE
- README:移除未启用的 SQLCipher 加密声明(改为如实的「已知限制」)、
  补充环境变量说明、许可证由「私有项目」改为 AGPL-3.0
- 移除历史遗留的空文件 _index_backup.txt
- 文档中的项目路径更新为 happy-export
This commit is contained in:
Drsakura
2026-09-17 14:53:02 +08:00
parent 436519e0a6
commit 13d67c804f
77 changed files with 18407 additions and 955 deletions
+28 -7
View File
@@ -21,7 +21,6 @@
### 后端
- Node.js + Express
- SQLite + better-sqlite3-multiple-ciphers
- 加密存储(SQLCipher)
### 前端
- React 18
@@ -70,7 +69,7 @@ npm run dev
## 项目结构
```
trade-management-system/
happy-export/
├── backend/ # 后端
│ ├── db/ # 数据库
│ │ ├── schema.sql # 数据库结构
@@ -96,12 +95,30 @@ trade-management-system/
└── README.md
```
## 数据库
## 数据库与配置
使用 SQLite + SQLCipher 加密存储:
- 数据库文件: `backend/data/trade.db`
- 自动初始化表结构
SQLite 单文件存储:
- 数据库文件:`backend/data/trade.db`
- 首次启动时自动建表
- 支持备份和迁移
- 数据目录与上传文件已在 `.gitignore` 中排除,不会入库
> **已知限制:数据库当前未加密。** 驱动选用的是 `better-sqlite3-multiple-ciphers`
> (本身具备 SQLCipher 能力),但代码尚未设置加密密钥,`trade.db` 以明文存放。
> 部署到共享主机或不可信环境前,请自行启用磁盘加密。
后端可识别的环境变量(全部有代码默认值,不设置也能跑):
| 变量 | 默认值 | 说明 |
| --- | --- | --- |
| `DATA_DIR` | `backend/data` | 数据库与汇率缓存所在目录 |
| `PORT` | `4300` | 后端监听端口 |
| `CONTRACT_RETENTION_DAYS` | `7` | 合同导入原文件的保留天数 |
| `HAPPY_UPDATE_REPO` | `Drsakura/happy-export` | 在线更新检查所用的 GitHub 仓库 |
> 注意:后端**没有引入 dotenv**,不会自动读取 `.env` 文件。
> 请通过系统环境变量、启动脚本或容器编排来设置上述变量。
## 开发计划
@@ -137,7 +154,11 @@ trade-management-system/
## 许可证
私有项目
本项目采用 [GNU Affero 通用公共许可证 v3.0](LICENSE)(AGPL-3.0)。
你可以自由使用、修改和分发,但需要遵守 AGPL-3.0 的核心义务:
**如果你修改后的版本通过网络对外提供服务,必须向使用者公开你的完整源代码**,
并以同样的许可证授权。完整的条款见 [LICENSE](LICENSE)。
## 作者