feat: LICA 部门独立实例 — 组织隔离与端口/标识改造
派生自 IRIS 实例的 feature/ai-audit-update @ 192c8ee,在同一台机器上独立运行。 隔离机制(开关集中在 app/core/config.py 的 ORG_DEPARTMENT / MATERIAL_CATEGORY_PREFIX): - 登录:sys_user 查询增加 department 条件,非本部门账号一律 401 - 人员列表:服务端钉死部门、忽略客户端传参;删除「异常退回全表」的降级分支 - 物料:groups 与 items 都增加 category LIKE 'LICA/%' 前缀过滤 - 人员操作统计:把硬编码的 department='IRIS' 改为配置项 物料为什么用前缀而不是 LIKE '%LICA%': MOM 里存在 171 条 IRIS/成品/LICA/...(无人机/野外便携/高塔监测等), 模糊匹配会把这些 IRIS 物料漏给 LICA。实测前缀匹配命中 795 条 / 5 个分组。 部署隔离: - 端口 8030/8031/8032,容器名 lica_*,卷 lica_pgdata(与 IRIS 完全独立) - 服务名改为 lica_backend,避免在 projects_default 网络上与 IRIS 的 backend 重名 —— 否则将来任何一方写 http://backend:8000 会随机打到另一个部门 - SECRET_KEY 重新生成:实测两边 token 互不通用(双向 401) 客户端标识(不改会导致两个部门的客户端互相覆盖): - Tauri identifier 改 com.lica.production(否则桌面端互相覆盖安装,且共用 WebView 数据目录会让 track_admin_token 串号) - uni-app appid 改 __UNI__D2F4A19(否则同机 APK 互相覆盖、wgt 热更新串号) - uni-app 地址端口 8011 → 8031(收敛在 utils/config.js 单一来源) - sync-watch.sh 的 DST 指向 LICA 专属 HBuilderX 目录(否则会把源码灌进 IRIS 工程) 排除项:未复制 deploy.sh / deploy_full.sh / docker-compose.prod.yml —— 它们写死了 IRIS 的生产服务器,误跑会覆盖线上系统。
This commit is contained in:
@ -1,9 +1,9 @@
|
||||
{
|
||||
"name" : "Track",
|
||||
"appid" : "__UNI__B572616",
|
||||
"description" : "Track - 生产流转管理",
|
||||
"versionName" : "T1.0.8",
|
||||
"versionCode" : 108,
|
||||
"name" : "Track-LICA",
|
||||
"appid" : "__UNI__D2F4A19",
|
||||
"description" : "LICA - 生产流转管理",
|
||||
"versionName" : "T1.0.0",
|
||||
"versionCode" : 100,
|
||||
"transformPx" : false,
|
||||
"vueVersion" : "3",
|
||||
"app-plus" : {
|
||||
|
||||
@ -455,7 +455,10 @@ export default {
|
||||
openEditProduct() { this.editForm = { order_no: this.product.order_no || "", external_serial: this.product.external_serial || "" }; this.editProductVisible = true; },
|
||||
async doEditProduct() { this.editSaving = true; try { this.product = await patch(`/products/${this.product.id}`, { order_no: this.editForm.order_no.trim(), external_serial: this.editForm.external_serial.trim() }); uni.showToast({ title: "已保存", icon: "success" }); this.editProductVisible = false; } catch {} finally { this.editSaving = false; } },
|
||||
|
||||
async loadUsers() { try { const res = await get("/users/", { limit: 200, dept: "IRIS" }); this.users = (res || []).filter(u => u.department === "IRIS"); this.userOptions = this.users.map(u => ({ id: u.username || u.id, name: u.full_name || u.username })); setUserNameMap(this.users); this.dictVersion += 1; } catch (e) { console.error('[loadUsers] 获取用户列表失败:', e); } },
|
||||
// 部门隔离由后端按 ORG_DEPARTMENT 钉死,客户端不再传 dept、也不再二次过滤。
|
||||
// 原先写死的 department === "IRIS" 会把服务端返回的 LICA 人员全部滤成空数组,
|
||||
// 表现为「指派负责人」下拉框没有任何可选人员、无法建任务。
|
||||
async loadUsers() { try { const res = await get("/users/", { limit: 200 }); this.users = res || []; this.userOptions = this.users.map(u => ({ id: u.username || u.id, name: u.full_name || u.username })); setUserNameMap(this.users); this.dictVersion += 1; } catch (e) { console.error('[loadUsers] 获取用户列表失败:', e); } },
|
||||
loadCurrentUser() { try { let user = uni.getStorageSync("user"); if (typeof user === "string" && user) { try { user = JSON.parse(user); } catch (e) { user = null; } } if (user && typeof user === "object") { this.currentUser = user; this.currentUserId = String(user.id || ""); this.currentUsername = user.username || ""; this.currentUserRole = user.role || ""; } } catch {} },
|
||||
|
||||
onTaskNameChange(e) { const idx = e.detail.value; this.firstForm.taskNameIdx = idx; this.firstForm.task_name = this.availableTaskOptions[idx]; },
|
||||
|
||||
@ -4,19 +4,20 @@
|
||||
* 此前 request.js 与 App.vue 各自硬编码了一份生产域名,改域名要改两处,
|
||||
* 漏一处就会出现「接口通了但 OTA 检查更新接不上」这类极难排查的偏差,
|
||||
* 故统一收口到本文件。新增环境地址一律加在这里,不要在业务代码里写死。
|
||||
*
|
||||
* ⚠️ 本文件属于 **LICA 部门实例**,后端端口 8031。
|
||||
* IRIS 实例用的是 8011 —— 两套系统是两个独立后端、独立数据库。
|
||||
* 改这里之前先确认端口,填错会让 LICA 的 App 连到 IRIS 的后端,
|
||||
* 表现为「能登录、能扫码,但看到的全是别的部门的单」。
|
||||
*/
|
||||
|
||||
// 生产环境 API 地址
|
||||
//
|
||||
// ⚠️ HTTPS 说明(2026-09 实测):生产域名 track_back.iris-rs.cn 的 443 端口
|
||||
// 是通的、也确实配有证书,但证书【已过期】—— 现在切 https 会让 App 的
|
||||
// 全部请求直接失败。待运维完成证书续期后,只需把下面 PROD_URL 与
|
||||
// LOCAL_URL 的协议头改成 https:// 即可,业务代码无需任何改动。
|
||||
// 续期前请勿改动,保持 http:// 以保证可用性。
|
||||
export const PROD_URL = "http://track_back.iris-rs.cn/api/v1";
|
||||
// LICA 暂无独立域名,车间局域网内直连后端机器。
|
||||
// 待有专属域名/HTTPS 证书后,把下面地址整体替换即可,业务代码无需改动。
|
||||
export const PROD_URL = "http://192.168.9.80:8031/api/v1";
|
||||
|
||||
// 本地开发地址 — 真机调试时指向开发机局域网 IP
|
||||
export const LOCAL_URL = "http://192.168.9.80:8011/api/v1";
|
||||
export const LOCAL_URL = "http://192.168.9.80:8031/api/v1";
|
||||
|
||||
// 生产基础地址:供只认「生产环境」的场景直接引用
|
||||
export const BASE_URL = PROD_URL;
|
||||
|
||||
@ -2,7 +2,12 @@
|
||||
# ============================================================
|
||||
# track-uniapp 源码 → HBuilderX 项目 同步
|
||||
#
|
||||
# 方向:单向 WSL track-uniapp/src/ → G:\Track\track-app\track
|
||||
# 方向:单向 WSL track-lica/track-uniapp/src/ → G:\Track\track-lica-app\track
|
||||
#
|
||||
# ⚠️ LICA 与 IRIS 是两套独立的 App 工程,DST 必须指向各自在 Windows 侧的
|
||||
# HBuilderX 目录。若两边共用同一个 DST,本脚本会持续把 LICA 的源码灌进
|
||||
# IRIS 的工程(而且带 --delete,会删掉对方的文件),因为带监听循环,
|
||||
# 改一次就会反复覆盖。
|
||||
#
|
||||
# ⚠️ 为什么是「src/ → 项目根」且单向(2026-09-15 修正):
|
||||
# HBuilderX 是以 G:\Track\track-app\track 为项目根打开的(经典布局,
|
||||
@ -24,8 +29,8 @@
|
||||
# 停止: Ctrl+C
|
||||
# ============================================================
|
||||
|
||||
SRC="/home/yueli/track/track-uniapp/src"
|
||||
DST="/mnt/g/Track/track-app/track"
|
||||
SRC="/home/yueli/track-lica/track-uniapp/src"
|
||||
DST="/mnt/g/Track/track-lica-app/track"
|
||||
|
||||
# ── 只在 Windows 侧存在、绝对不能被覆盖或删除的项 ──
|
||||
EXCLUDES=(
|
||||
|
||||
Reference in New Issue
Block a user