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
+22 -6
View File
@@ -6,15 +6,15 @@ export default defineConfig({
server: {
port: 5300,
proxy: {
// SKU 能力代理(过渡期):前端统一以 /api/sku/* 访问,避免跨域与端口耦合。
// 后端正式合并(P1)完成后可直接删除本段。
// 产品目录(SKU)与产品图现在都由 happy 后端(4300)提供 —— 独立 SKU 服务已并入,
// 3300 不再存在。前缀与路径保持原样(/api/sku/groups → 4300/api/sku/groups),
// 前端代码零改动。写操作要记「上传者 / 调价人」,必须走 4300 才有人可记。
'/api/sku': {
target: 'http://127.0.0.1:3300',
changeOrigin: true,
rewrite: (p) => p.replace(/^\/api\/sku/, '/api')
target: 'http://127.0.0.1:4300',
changeOrigin: true
},
'/product-images': {
target: 'http://127.0.0.1:3300',
target: 'http://127.0.0.1:4300',
changeOrigin: true
},
'/api': {
@@ -22,5 +22,21 @@ export default defineConfig({
changeOrigin: true
}
}
},
build: {
rollupOptions: {
output: {
/* 把「很少变」的第三方库拆成独立 chunk:
* 1) 首屏只需再下载业务代码,React 这些体积大头可以长期缓存,发版不用重新下载;
* 2) 配合页面懒加载,首屏体积能降一大截。
* 只分两组,不按库细分 —— 拆太碎会变成一堆小请求,反而更慢。 */
manualChunks: {
'vendor-react': ['react', 'react-dom', 'react-router-dom'],
'vendor-axios': ['axios']
}
}
},
/* 业务代码已按页面拆分,单块都不大;阈值放宽,免得控制台刷一堆体积警告 */
chunkSizeWarningLimit: 700
}
})