提交
This commit is contained in:
1 parent
5623d0125c
commit
679285dcc6
19 files changed
+2286
-2070
No files matched your search
@@ -60,6 +60,7 @@ secrets/
|
|||||||
生产环境信息/*_nginx/
|
生产环境信息/*_nginx/
|
||||||
生产环境信息/微信生产.env.snippet
|
生产环境信息/微信生产.env.snippet
|
||||||
生产环境信息/微信配置-测试号备份.txt
|
生产环境信息/微信配置-测试号备份.txt
|
||||||
|
生产环境信息/zkxw-v110-backend.env*
|
||||||
|
|
||||||
# 日志与临时文件
|
# 日志与临时文件
|
||||||
*.log
|
*.log
|
||||||
|
|||||||
+10
-10
@@ -60,20 +60,20 @@ DATABASE_URL=mysql+pymysql://root:password@localhost:3306/zkxw
|
|||||||
# WXPAY_SANDBOX=false
|
# WXPAY_SANDBOX=false
|
||||||
|
|
||||||
# 微信服务号(OA 审批/抄送模板消息;access_token 用服务号凭证,miniprogram.appid 仍用 WXPAY_MINI_APPID)
|
# 微信服务号(OA 审批/抄送模板消息;access_token 用服务号凭证,miniprogram.appid 仍用 WXPAY_MINI_APPID)
|
||||||
# 总开关:模板未就绪时保持 false;配置好三套模板 ID 后再改为 true
|
# 总开关:配好三套模板 ID 后改为 true
|
||||||
# WX_MP_NOTIFY_ENABLED=false
|
# WX_MP_NOTIFY_ENABLED=true
|
||||||
# WX_MP_APPID=wx_service_account_appid
|
# WX_MP_APPID=wx_service_account_appid
|
||||||
# WX_MP_SECRET=wx_service_account_secret
|
# WX_MP_SECRET=wx_service_account_secret
|
||||||
# WX_MP_TEMPLATE_APPROVAL=20rTii7gNFx5N998H4AlZe4AsQSV_62otPKti7pG7FI
|
# WX_MP_TEMPLATE_APPROVAL=ZKKnm3PrH97iKt4SDrONiw0TvpDyRbQXdmbF6wz-eak
|
||||||
# WX_MP_TEMPLATE_CC=_BEaLeh2uDffEagwDJVEEmtzIYNglkd8hyJxCT5XIgw
|
# WX_MP_TEMPLATE_CC=rHu7intrAqOqSlxmjqq7FfyC1GKbRi3XaP1-ZEcnvqs
|
||||||
# WX_MP_TEMPLATE_APPLICANT_PROGRESS=_BEaLeh2uDffEagwDJVEEikOv8gnWu7aFA8cl0nX7S4
|
# WX_MP_TEMPLATE_APPLICANT_PROGRESS=rHu7intrAqOqSlxmjqq7Fb6ylcB3u3quKSBYUcR6NU4
|
||||||
# 审批「OA系统流程审批通知」:申请事项/申请人/当前环节/申请日期/流程名称
|
# 审批:申请事项/操作人/操作时间/当前环节/申请类型
|
||||||
# WX_MP_TPL_FIELD_TITLE=thing12
|
# WX_MP_TPL_FIELD_TITLE=thing12
|
||||||
# WX_MP_TPL_FIELD_APPLICANT=thing21
|
# WX_MP_TPL_FIELD_APPLICANT=thing18
|
||||||
# WX_MP_TPL_FIELD_NODE=thing7
|
# WX_MP_TPL_FIELD_NODE=thing7
|
||||||
# WX_MP_TPL_FIELD_TIME=time3
|
# WX_MP_TPL_FIELD_TIME=time17
|
||||||
# WX_MP_TPL_FIELD_PROCESS=thing48
|
# WX_MP_TPL_FIELD_PROCESS=thing8
|
||||||
# 抄送「OA抄送通知」:业务名称/申请人/申请时间/流程名称
|
# 抄送:业务名称/申请人/申请时间/流程名称
|
||||||
# WX_MP_TPL_CC_FIELD_TITLE=thing5
|
# WX_MP_TPL_CC_FIELD_TITLE=thing5
|
||||||
# WX_MP_TPL_CC_FIELD_APPLICANT=thing2
|
# WX_MP_TPL_CC_FIELD_APPLICANT=thing2
|
||||||
# WX_MP_TPL_CC_FIELD_TIME=time3
|
# WX_MP_TPL_CC_FIELD_TIME=time3
|
||||||
|
|||||||
@@ -108,12 +108,13 @@ class Settings(BaseSettings):
|
|||||||
WX_MP_TEMPLATE_APPROVAL: str = ""
|
WX_MP_TEMPLATE_APPROVAL: str = ""
|
||||||
WX_MP_TEMPLATE_CC: str = ""
|
WX_MP_TEMPLATE_CC: str = ""
|
||||||
WX_MP_TEMPLATE_APPLICANT_PROGRESS: str = ""
|
WX_MP_TEMPLATE_APPLICANT_PROGRESS: str = ""
|
||||||
# 审批模板「OA系统流程审批通知」:申请事项/申请人/当前环节/申请日期/流程名称
|
# 审批模板:申请事项/操作人(申请人)/当前环节/操作时间/申请类型(流程名)
|
||||||
|
# 生产字段:thing12 / thing18 / thing7 / time17 / thing8
|
||||||
WX_MP_TPL_FIELD_TITLE: str = "thing12"
|
WX_MP_TPL_FIELD_TITLE: str = "thing12"
|
||||||
WX_MP_TPL_FIELD_APPLICANT: str = "thing21"
|
WX_MP_TPL_FIELD_APPLICANT: str = "thing18"
|
||||||
WX_MP_TPL_FIELD_NODE: str = "thing7"
|
WX_MP_TPL_FIELD_NODE: str = "thing7"
|
||||||
WX_MP_TPL_FIELD_TIME: str = "time3"
|
WX_MP_TPL_FIELD_TIME: str = "time17"
|
||||||
WX_MP_TPL_FIELD_PROCESS: str = "thing48"
|
WX_MP_TPL_FIELD_PROCESS: str = "thing8"
|
||||||
# 抄送模板「OA抄送通知」:业务名称/申请人/申请时间/流程名称(无当前环节)
|
# 抄送模板「OA抄送通知」:业务名称/申请人/申请时间/流程名称(无当前环节)
|
||||||
WX_MP_TPL_CC_FIELD_TITLE: str = "thing5"
|
WX_MP_TPL_CC_FIELD_TITLE: str = "thing5"
|
||||||
WX_MP_TPL_CC_FIELD_APPLICANT: str = "thing2"
|
WX_MP_TPL_CC_FIELD_APPLICANT: str = "thing2"
|
||||||
|
|||||||
@@ -432,7 +432,7 @@
|
|||||||
"label": "Config",
|
"label": "Config",
|
||||||
"file_type": "code",
|
"file_type": "code",
|
||||||
"source_file": "core/config.py",
|
"source_file": "core/config.py",
|
||||||
"source_location": "L177"
|
"source_location": "L178"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "core_wechat_pay_py",
|
"id": "core_wechat_pay_py",
|
||||||
@@ -40070,7 +40070,7 @@
|
|||||||
"relation": "contains",
|
"relation": "contains",
|
||||||
"confidence": "EXTRACTED",
|
"confidence": "EXTRACTED",
|
||||||
"source_file": "core/config.py",
|
"source_file": "core/config.py",
|
||||||
"source_location": "L177",
|
"source_location": "L178",
|
||||||
"weight": 1.0
|
"weight": 1.0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
# Graph Report - app (2026-09-14)
|
# Graph Report - app (2026-09-16)
|
||||||
|
|
||||||
## Corpus Check
|
## Corpus Check
|
||||||
- Large corpus: 264 files · ~317,132 words. Semantic extraction will be expensive (many Claude tokens). Consider running on a subfolder, or use --no-semantic to run AST-only.
|
- Large corpus: 264 files · ~317,142 words. Semantic extraction will be expensive (many Claude tokens). Consider running on a subfolder, or use --no-semantic to run AST-only.
|
||||||
|
|
||||||
## Summary
|
## Summary
|
||||||
- 5468 nodes · 30082 edges · 40 communities detected
|
- 5468 nodes · 30082 edges · 40 communities detected
|
||||||
|
|||||||
@@ -556,7 +556,7 @@
|
|||||||
"label": "Config",
|
"label": "Config",
|
||||||
"file_type": "code",
|
"file_type": "code",
|
||||||
"source_file": "core/config.py",
|
"source_file": "core/config.py",
|
||||||
"source_location": "L177",
|
"source_location": "L178",
|
||||||
"id": "core_config_config",
|
"id": "core_config_config",
|
||||||
"community": 27,
|
"community": 27,
|
||||||
"norm_label": "config"
|
"norm_label": "config"
|
||||||
@@ -51129,7 +51129,7 @@
|
|||||||
"relation": "contains",
|
"relation": "contains",
|
||||||
"confidence": "EXTRACTED",
|
"confidence": "EXTRACTED",
|
||||||
"source_file": "core/config.py",
|
"source_file": "core/config.py",
|
||||||
"source_location": "L177",
|
"source_location": "L178",
|
||||||
"weight": 1.0,
|
"weight": 1.0,
|
||||||
"_src": "core_config_py",
|
"_src": "core_config_py",
|
||||||
"_tgt": "core_config_config",
|
"_tgt": "core_config_config",
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
"/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py": 1786415793.4635684,
|
"/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py": 1786415793.4635684,
|
||||||
"/Users/wuzilong/work/00code/zkxw/backend/app/core/api_crypto.py": 1778578258.039314,
|
"/Users/wuzilong/work/00code/zkxw/backend/app/core/api_crypto.py": 1778578258.039314,
|
||||||
"/Users/wuzilong/work/00code/zkxw/backend/app/core/login_crypto.py": 1782186069.0708613,
|
"/Users/wuzilong/work/00code/zkxw/backend/app/core/login_crypto.py": 1782186069.0708613,
|
||||||
"/Users/wuzilong/work/00code/zkxw/backend/app/core/config.py": 1789108015.3185847,
|
"/Users/wuzilong/work/00code/zkxw/backend/app/core/config.py": 1789545254.772123,
|
||||||
"/Users/wuzilong/work/00code/zkxw/backend/app/core/wechat_pay.py": 1778578258.0461762,
|
"/Users/wuzilong/work/00code/zkxw/backend/app/core/wechat_pay.py": 1778578258.0461762,
|
||||||
"/Users/wuzilong/work/00code/zkxw/backend/app/core/api_request_log_middleware.py": 1779882001.753267,
|
"/Users/wuzilong/work/00code/zkxw/backend/app/core/api_request_log_middleware.py": 1779882001.753267,
|
||||||
"/Users/wuzilong/work/00code/zkxw/backend/app/core/avatar_url.py": 1780540753.5481932,
|
"/Users/wuzilong/work/00code/zkxw/backend/app/core/avatar_url.py": 1780540753.5481932,
|
||||||
|
|||||||
+32
-10
@@ -73,17 +73,39 @@ API_ENCRYPT_FAIL_OPEN=false
|
|||||||
# 全量 API 请求日志(需 sys_api_request_log 表,否则可关闭)
|
# 全量 API 请求日志(需 sys_api_request_log 表,否则可关闭)
|
||||||
API_REQUEST_LOG_ENABLED=false
|
API_REQUEST_LOG_ENABLED=false
|
||||||
|
|
||||||
# ---------- 微信服务号 OA 模板消息(模板未就绪时保持 false)----------
|
# ---------- 微信服务号 OA 模板消息 ----------
|
||||||
WX_MP_NOTIFY_ENABLED=false
|
# AppID / 模板 ID / 字段可写在本示例;Secret 勿提交 git(留空)
|
||||||
# WX_MP_APPID=wxe576b24f873f47cb
|
# 发版打包:scripts/package-docker-deploy.sh 会从本机 deploy/docker/.env 注入
|
||||||
# WX_MP_SECRET=
|
# WX_MP_SECRET / WXPAY_SECRET / LOGIN_RSA 等到交付包 .env(有值才覆盖)
|
||||||
# WX_MP_TEMPLATE_APPROVAL=
|
WX_MP_NOTIFY_ENABLED=true
|
||||||
# WX_MP_TEMPLATE_CC=
|
WX_MP_APPID=wxe576b24f873f47cb
|
||||||
# WX_MP_TEMPLATE_APPLICANT_PROGRESS=
|
# 必填:微信公众平台 → 服务号 → 开发 → 基本配置 → AppSecret(仅写在本机 .env)
|
||||||
|
WX_MP_SECRET=
|
||||||
|
WX_MP_TEMPLATE_APPROVAL=ZKKnm3PrH97iKt4SDrONiw0TvpDyRbQXdmbF6wz-eak
|
||||||
|
WX_MP_TEMPLATE_CC=rHu7intrAqOqSlxmjqq7FfyC1GKbRi3XaP1-ZEcnvqs
|
||||||
|
WX_MP_TEMPLATE_APPLICANT_PROGRESS=rHu7intrAqOqSlxmjqq7Fb6ylcB3u3quKSBYUcR6NU4
|
||||||
|
# 审批字段(生产)
|
||||||
|
WX_MP_TPL_FIELD_TITLE=thing12
|
||||||
|
WX_MP_TPL_FIELD_APPLICANT=thing18
|
||||||
|
WX_MP_TPL_FIELD_NODE=thing7
|
||||||
|
WX_MP_TPL_FIELD_TIME=time17
|
||||||
|
WX_MP_TPL_FIELD_PROCESS=thing8
|
||||||
|
# 抄送字段
|
||||||
|
WX_MP_TPL_CC_FIELD_TITLE=thing5
|
||||||
|
WX_MP_TPL_CC_FIELD_APPLICANT=thing2
|
||||||
|
WX_MP_TPL_CC_FIELD_TIME=time3
|
||||||
|
WX_MP_TPL_CC_FIELD_PROCESS=thing1
|
||||||
|
# 申请人进度字段
|
||||||
|
WX_MP_TPL_PROGRESS_FIELD_BUSINESS=thing5
|
||||||
|
WX_MP_TPL_PROGRESS_FIELD_PROCESS=thing1
|
||||||
|
WX_MP_TPL_PROGRESS_FIELD_APPROVER=thing6
|
||||||
|
WX_MP_TPL_PROGRESS_FIELD_RESULT=const4
|
||||||
|
WX_MP_TPL_PROGRESS_FIELD_TIME=time11
|
||||||
|
|
||||||
# ---------- 微信支付 / 小程序凭证(登录、模板消息跳转;Secret 勿提交真实值)----------
|
# ---------- 微信支付 / 小程序凭证(登录、模板消息跳转)----------
|
||||||
# WXPAY_MCHID=
|
# WXPAY_MCHID=
|
||||||
# WXPAY_MINI_APPID=wx2b139581f4c855e4
|
WXPAY_MINI_APPID=wx2b139581f4c855e4
|
||||||
# WXPAY_SECRET=
|
# 必填:小程序 AppSecret(仅写在本机 .env,打包时注入交付包)
|
||||||
|
WXPAY_SECRET=
|
||||||
# WXPAY_API_KEY=
|
# WXPAY_API_KEY=
|
||||||
# WXPAY_NOTIFY_URL=https://your-domain.com/api/payment/notify
|
# WXPAY_NOTIFY_URL=https://your-domain.com/api/payment/notify
|
||||||
@@ -182,15 +182,15 @@ cd /opt/zkxw
|
|||||||
tar -xzf zkxw-docker-deploy-v1.1.0.tar.gz
|
tar -xzf zkxw-docker-deploy-v1.1.0.tar.gz
|
||||||
docker load -i zkxw-docker-deploy-v1.1.0/images/zkxw-app-images.tar
|
docker load -i zkxw-docker-deploy-v1.1.0/images/zkxw-app-images.tar
|
||||||
|
|
||||||
# 2) 改现网 .env(保留原密码;追加/修改下列项)
|
# 2) 改现网 .env
|
||||||
cd /opt/zkxw/zkxw-docker-deploy-v1.0.0/deploy/docker
|
cd /opt/zkxw/zkxw-docker-deploy-v1.0.0/deploy/docker
|
||||||
|
# 只改镜像 tag(示例):
|
||||||
# ZKXW_BACKEND_IMAGE=zkxw-backend:v1.1.0
|
# ZKXW_BACKEND_IMAGE=zkxw-backend:v1.1.0
|
||||||
# ZKXW_WEB_IMAGE=zkxw-web:v1.1.0
|
# ZKXW_WEB_IMAGE=zkxw-web:v1.1.0
|
||||||
# WXPAY_MINI_APPID=...
|
#
|
||||||
# WXPAY_SECRET=...
|
# 微信/小程序:新交付包 .env.example 打包时会从发版机注入;
|
||||||
# WX_MP_APPID=...
|
# - 推荐:保留现网 MYSQL/SECRET/MINIO 密码,把包内 WX_MP_* / WXPAY_* 段合并进来
|
||||||
# WX_MP_SECRET=...
|
# - 切勿用「仅含 change-me 库口令」的全新 .env 整文件覆盖现网,否则连不上原数据库
|
||||||
# WX_MP_NOTIFY_ENABLED=false
|
|
||||||
|
|
||||||
# 3) 只滚动应用(数据卷不动)
|
# 3) 只滚动应用(数据卷不动)
|
||||||
docker compose up -d backend web
|
docker compose up -d backend web
|
||||||
|
|||||||
@@ -14,6 +14,7 @@
|
|||||||
* showToast?: (msg: string) => void,
|
* showToast?: (msg: string) => void,
|
||||||
* fallbackMessage?: string,
|
* fallbackMessage?: string,
|
||||||
* fallbackMiniPath?: string,
|
* fallbackMiniPath?: string,
|
||||||
|
* preferReLaunch?: boolean,
|
||||||
* schedule?: (fn: () => void, ms?: number) => void,
|
* schedule?: (fn: () => void, ms?: number) => void,
|
||||||
* silentFailMs?: number,
|
* silentFailMs?: number,
|
||||||
* toastDelayMs?: number,
|
* toastDelayMs?: number,
|
||||||
@@ -55,6 +56,7 @@ export function closeToHost(payload, deps = {}) {
|
|||||||
const fallbackMiniPath =
|
const fallbackMiniPath =
|
||||||
String(deps.fallbackMiniPath || '/pages/index/index').trim() ||
|
String(deps.fallbackMiniPath || '/pages/index/index').trim() ||
|
||||||
'/pages/index/index'
|
'/pages/index/index'
|
||||||
|
const preferReLaunch = !!deps.preferReLaunch
|
||||||
const schedule =
|
const schedule =
|
||||||
deps.schedule ||
|
deps.schedule ||
|
||||||
((fn, ms) => {
|
((fn, ms) => {
|
||||||
@@ -74,6 +76,7 @@ export function closeToHost(payload, deps = {}) {
|
|||||||
action: data && data.action,
|
action: data && data.action,
|
||||||
message: data && data.message,
|
message: data && data.message,
|
||||||
fallbackMiniPath,
|
fallbackMiniPath,
|
||||||
|
preferReLaunch,
|
||||||
toastDelayMs,
|
toastDelayMs,
|
||||||
silentFailMs,
|
silentFailMs,
|
||||||
env
|
env
|
||||||
@@ -88,7 +91,8 @@ export function closeToHost(payload, deps = {}) {
|
|||||||
hasPostMessage: typeof mp.postMessage === 'function',
|
hasPostMessage: typeof mp.postMessage === 'function',
|
||||||
hasReLaunch: typeof mp.reLaunch === 'function',
|
hasReLaunch: typeof mp.reLaunch === 'function',
|
||||||
hasRedirectTo: typeof mp.redirectTo === 'function',
|
hasRedirectTo: typeof mp.redirectTo === 'function',
|
||||||
hasNavigateTo: typeof mp.navigateTo === 'function'
|
hasNavigateTo: typeof mp.navigateTo === 'function',
|
||||||
|
preferReLaunch
|
||||||
})
|
})
|
||||||
if (data && data.message) toast(String(data.message))
|
if (data && data.message) toast(String(data.message))
|
||||||
try {
|
try {
|
||||||
@@ -164,6 +168,12 @@ export function closeToHost(payload, deps = {}) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const doBack = () => {
|
const doBack = () => {
|
||||||
|
// 服务号模板直达时栈深常为 1,navigateBack 无效;审批完成应直接 reLaunch 回列表
|
||||||
|
if (preferReLaunch) {
|
||||||
|
log('doBack preferReLaunch → failFallback')
|
||||||
|
failFallback('prefer-relaunch')
|
||||||
|
return
|
||||||
|
}
|
||||||
log('doBack call navigateBack')
|
log('doBack call navigateBack')
|
||||||
try {
|
try {
|
||||||
mp.navigateBack({
|
mp.navigateBack({
|
||||||
|
|||||||
@@ -72,6 +72,40 @@ import { closeToHost } from './close-to-host.js'
|
|||||||
assert.deepEqual(calls[3], ['reLaunch', '/pages/oa/pending/index'])
|
assert.deepEqual(calls[3], ['reLaunch', '/pages/oa/pending/index'])
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// preferReLaunch:跳过 navigateBack,直接 reLaunch(服务号模板入口栈深=1)
|
||||||
|
{
|
||||||
|
const calls = []
|
||||||
|
const result = closeToHost(
|
||||||
|
{ action: 'oa-detail-done', message: '已同意' },
|
||||||
|
{
|
||||||
|
wx: {
|
||||||
|
miniProgram: {
|
||||||
|
postMessage: () => calls.push('post'),
|
||||||
|
navigateBack: () => calls.push('back'),
|
||||||
|
reLaunch: (opts) => {
|
||||||
|
calls.push(['reLaunch', opts && opts.url])
|
||||||
|
if (opts && typeof opts.success === 'function') opts.success()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
window: {
|
||||||
|
__wxjs_environment: 'miniprogram',
|
||||||
|
parent: {},
|
||||||
|
WeixinJSBridge: { invoke() {} }
|
||||||
|
},
|
||||||
|
showToast: (m) => calls.push(['toast', m]),
|
||||||
|
fallbackMiniPath: '/pages/oa/pending/index',
|
||||||
|
preferReLaunch: true,
|
||||||
|
schedule: (fn) => fn()
|
||||||
|
}
|
||||||
|
)
|
||||||
|
assert.equal(result, 'wx')
|
||||||
|
assert.equal(calls[0][0], 'toast')
|
||||||
|
assert.equal(calls[1], 'post')
|
||||||
|
assert.ok(!calls.includes('back'))
|
||||||
|
assert.deepEqual(calls[2], ['reLaunch', '/pages/oa/pending/index'])
|
||||||
|
}
|
||||||
|
|
||||||
// navigateBack 静默无回调 → 超时后 reLaunch(对齐 sqxp:reLaunch + redirectTo)
|
// navigateBack 静默无回调 → 超时后 reLaunch(对齐 sqxp:reLaunch + redirectTo)
|
||||||
{
|
{
|
||||||
const calls = []
|
const calls = []
|
||||||
|
|||||||
@@ -373,18 +373,58 @@ function resolveFallbackMiniPath() {
|
|||||||
function closeToMini(payload) {
|
function closeToMini(payload) {
|
||||||
const data = payload || { action: 'oa-detail-close' }
|
const data = payload || { action: 'oa-detail-close' }
|
||||||
const fallbackMiniPath = resolveFallbackMiniPath()
|
const fallbackMiniPath = resolveFallbackMiniPath()
|
||||||
|
const action = String(data.action || '')
|
||||||
|
// 审批完成/撤销:模板消息入口栈深常为 1,须 reLaunch;关闭按钮仍优先 navigateBack
|
||||||
|
const preferReLaunch =
|
||||||
|
action === 'oa-detail-done' || action === 'oa-detail-withdraw'
|
||||||
console.log('[oa-detail] closeToMini', {
|
console.log('[oa-detail] closeToMini', {
|
||||||
action: data.action,
|
action: data.action,
|
||||||
message: data.message,
|
message: data.message,
|
||||||
fallbackMiniPath,
|
fallbackMiniPath,
|
||||||
|
preferReLaunch,
|
||||||
returnPath: route.query.returnPath || ''
|
returnPath: route.query.returnPath || ''
|
||||||
})
|
})
|
||||||
const mode = closeToHost(data, {
|
const leaveMode = closeToHost(data, {
|
||||||
showToast: (msg) => showToast(msg),
|
showToast: (msg) => showToast(msg),
|
||||||
fallbackMessage: '已关闭(非小程序环境)',
|
fallbackMessage: '已关闭(非小程序环境)',
|
||||||
fallbackMiniPath
|
fallbackMiniPath,
|
||||||
|
preferReLaunch
|
||||||
})
|
})
|
||||||
console.log('[oa-detail] closeToHost →', mode)
|
console.log('[oa-detail] closeToHost →', leaveMode)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 操作成功后:静默刷新详情(关闭失败时仍能看到最新进度/隐藏同意按钮),再通知宿主离开。
|
||||||
|
* 服务号模板进小程序时尤为常见:webview 为栈底页,仅 toast「已同意」却停在旧界面。
|
||||||
|
*/
|
||||||
|
async function finishActionAndLeave(payload) {
|
||||||
|
const id = instanceId.value
|
||||||
|
if (id) {
|
||||||
|
try {
|
||||||
|
const d = await fetchOaInstanceDetail(id)
|
||||||
|
detail.value = d
|
||||||
|
try {
|
||||||
|
document.title = d?.title || d?.appName || '审批详情'
|
||||||
|
} catch (_) {
|
||||||
|
/* ignore */
|
||||||
|
}
|
||||||
|
const prepared = prepareMobileFormSchema(d?.formSchemaJson)
|
||||||
|
formRule.value = prepared.rule
|
||||||
|
formOption.value = {
|
||||||
|
...prepared.option,
|
||||||
|
form: {
|
||||||
|
...(prepared.option?.form || {}),
|
||||||
|
disabled: true
|
||||||
|
},
|
||||||
|
submitBtn: false,
|
||||||
|
resetBtn: false
|
||||||
|
}
|
||||||
|
formData.value = parseFormData(d)
|
||||||
|
} catch (_) {
|
||||||
|
/* ignore;离开逻辑仍继续 */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
closeToMini(payload)
|
||||||
}
|
}
|
||||||
|
|
||||||
function onClose() {
|
function onClose() {
|
||||||
@@ -436,7 +476,10 @@ async function withdraw() {
|
|||||||
acting.value = true
|
acting.value = true
|
||||||
try {
|
try {
|
||||||
await fetchWithdrawOaInstance(id)
|
await fetchWithdrawOaInstance(id)
|
||||||
closeToMini({ action: 'oa-detail-withdraw', message: '已撤销' })
|
await finishActionAndLeave({
|
||||||
|
action: 'oa-detail-withdraw',
|
||||||
|
message: '已撤销'
|
||||||
|
})
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
showToast(e?.message || '撤销失败')
|
showToast(e?.message || '撤销失败')
|
||||||
} finally {
|
} finally {
|
||||||
@@ -520,15 +563,15 @@ async function submitComment() {
|
|||||||
if (kind === 'approve') {
|
if (kind === 'approve') {
|
||||||
await fetchApproveOaTask(task.id, comment || undefined)
|
await fetchApproveOaTask(task.id, comment || undefined)
|
||||||
commentVisible.value = false
|
commentVisible.value = false
|
||||||
closeToMini({ action: 'oa-detail-done', message: '已同意' })
|
await finishActionAndLeave({ action: 'oa-detail-done', message: '已同意' })
|
||||||
} else if (kind === 'reject') {
|
} else if (kind === 'reject') {
|
||||||
await fetchRejectOaTask(task.id, comment || undefined)
|
await fetchRejectOaTask(task.id, comment || undefined)
|
||||||
commentVisible.value = false
|
commentVisible.value = false
|
||||||
closeToMini({ action: 'oa-detail-done', message: '已拒绝' })
|
await finishActionAndLeave({ action: 'oa-detail-done', message: '已拒绝' })
|
||||||
} else if (kind === 'return') {
|
} else if (kind === 'return') {
|
||||||
await fetchReturnOaTask(task.id, comment)
|
await fetchReturnOaTask(task.id, comment)
|
||||||
commentVisible.value = false
|
commentVisible.value = false
|
||||||
closeToMini({ action: 'oa-detail-done', message: '已打回' })
|
await finishActionAndLeave({ action: 'oa-detail-done', message: '已打回' })
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
showToast(e?.message || '操作失败')
|
showToast(e?.message || '操作失败')
|
||||||
@@ -562,7 +605,7 @@ async function submitAddSign() {
|
|||||||
comment: c || undefined
|
comment: c || undefined
|
||||||
})
|
})
|
||||||
addSignVisible.value = false
|
addSignVisible.value = false
|
||||||
closeToMini({ action: 'oa-detail-done', message: '已加签' })
|
await finishActionAndLeave({ action: 'oa-detail-done', message: '已加签' })
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
showToast(e?.message || '加签失败')
|
showToast(e?.message || '加签失败')
|
||||||
} finally {
|
} finally {
|
||||||
@@ -593,7 +636,7 @@ async function submitTransfer() {
|
|||||||
comment: c || undefined
|
comment: c || undefined
|
||||||
})
|
})
|
||||||
transferVisible.value = false
|
transferVisible.value = false
|
||||||
closeToMini({ action: 'oa-detail-done', message: '已转交' })
|
await finishActionAndLeave({ action: 'oa-detail-done', message: '已转交' })
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
showToast(e?.message || '转交失败')
|
showToast(e?.message || '转交失败')
|
||||||
} finally {
|
} finally {
|
||||||
|
|||||||
@@ -35,46 +35,140 @@ sed -e "s|^ZKXW_BACKEND_IMAGE=.*|ZKXW_BACKEND_IMAGE=${BACKEND_IMAGE}|" \
|
|||||||
-e "s|^ZKXW_WEB_IMAGE=.*|ZKXW_WEB_IMAGE=${WEB_IMAGE}|" \
|
-e "s|^ZKXW_WEB_IMAGE=.*|ZKXW_WEB_IMAGE=${WEB_IMAGE}|" \
|
||||||
"${ROOT}/deploy/docker/.env.example" > "${STAGING}/deploy/docker/.env.example"
|
"${ROOT}/deploy/docker/.env.example" > "${STAGING}/deploy/docker/.env.example"
|
||||||
|
|
||||||
# 若本地 deploy/docker/.env 已配置登录 RSA 私钥,注入到交付包 .env.example(避免多 worker 登录解密失败)
|
# 从本地 deploy/docker/.env 注入运行时密钥与微信配置到交付包 .env.example
|
||||||
|
# (不注入 MYSQL/SECRET_KEY/MINIO 密码,避免覆盖甲方现网库口令)
|
||||||
LOCAL_ENV="${ROOT}/deploy/docker/.env"
|
LOCAL_ENV="${ROOT}/deploy/docker/.env"
|
||||||
|
STAGING_ENV="${STAGING}/deploy/docker/.env.example"
|
||||||
if [[ -f "${LOCAL_ENV}" ]]; then
|
if [[ -f "${LOCAL_ENV}" ]]; then
|
||||||
STAGING_ENV="${STAGING}/deploy/docker/.env.example"
|
|
||||||
if python3 - "${LOCAL_ENV}" "${STAGING_ENV}" <<'PY'
|
if python3 - "${LOCAL_ENV}" "${STAGING_ENV}" <<'PY'
|
||||||
import sys
|
import sys
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
local_env, staging_env = map(Path, sys.argv[1:3])
|
local_env, staging_env = map(Path, sys.argv[1:3])
|
||||||
rsa_line = next(
|
|
||||||
(line for line in local_env.read_text().splitlines() if line.startswith("LOGIN_RSA_PRIVATE_KEY_PEM=")),
|
# 打包时注入:登录 RSA + 微信/小程序(业务通知依赖);不注入库口令
|
||||||
"",
|
INJECT_KEYS = (
|
||||||
|
"LOGIN_RSA_PRIVATE_KEY_PEM",
|
||||||
|
"WXPAY_MINI_APPID",
|
||||||
|
"WXPAY_SECRET",
|
||||||
|
"WX_MP_NOTIFY_ENABLED",
|
||||||
|
"WX_MP_APPID",
|
||||||
|
"WX_MP_SECRET",
|
||||||
|
"WX_MP_TEMPLATE_APPROVAL",
|
||||||
|
"WX_MP_TEMPLATE_CC",
|
||||||
|
"WX_MP_TEMPLATE_APPLICANT_PROGRESS",
|
||||||
|
"WX_MP_TPL_FIELD_TITLE",
|
||||||
|
"WX_MP_TPL_FIELD_APPLICANT",
|
||||||
|
"WX_MP_TPL_FIELD_NODE",
|
||||||
|
"WX_MP_TPL_FIELD_TIME",
|
||||||
|
"WX_MP_TPL_FIELD_PROCESS",
|
||||||
|
"WX_MP_TPL_CC_FIELD_TITLE",
|
||||||
|
"WX_MP_TPL_CC_FIELD_APPLICANT",
|
||||||
|
"WX_MP_TPL_CC_FIELD_TIME",
|
||||||
|
"WX_MP_TPL_CC_FIELD_PROCESS",
|
||||||
|
"WX_MP_TPL_PROGRESS_FIELD_BUSINESS",
|
||||||
|
"WX_MP_TPL_PROGRESS_FIELD_PROCESS",
|
||||||
|
"WX_MP_TPL_PROGRESS_FIELD_APPROVER",
|
||||||
|
"WX_MP_TPL_PROGRESS_FIELD_RESULT",
|
||||||
|
"WX_MP_TPL_PROGRESS_FIELD_TIME",
|
||||||
)
|
)
|
||||||
if not rsa_line:
|
|
||||||
sys.exit(2)
|
|
||||||
|
|
||||||
lines: list[str] = []
|
def parse_env(text: str) -> dict[str, str]:
|
||||||
|
out: dict[str, str] = {}
|
||||||
|
for line in text.splitlines():
|
||||||
|
s = line.strip()
|
||||||
|
if not s or s.startswith("#") or "=" not in line:
|
||||||
|
continue
|
||||||
|
# 保留行首 key=(允许值内含 =)
|
||||||
|
if line.lstrip().startswith("#"):
|
||||||
|
continue
|
||||||
|
key, _, val = line.partition("=")
|
||||||
|
key = key.strip()
|
||||||
|
if key:
|
||||||
|
out[key] = line # 整行,保留原样(含引号/换行转义)
|
||||||
|
return out
|
||||||
|
|
||||||
|
local_map = parse_env(local_env.read_text())
|
||||||
|
injected: list[str] = []
|
||||||
|
missing: list[str] = []
|
||||||
|
for k in INJECT_KEYS:
|
||||||
|
if k in local_map and local_map[k].partition("=")[2].strip():
|
||||||
|
injected.append(k)
|
||||||
|
else:
|
||||||
|
missing.append(k)
|
||||||
|
|
||||||
|
lines_out: list[str] = []
|
||||||
|
seen: set[str] = set()
|
||||||
for line in staging_env.read_text().splitlines():
|
for line in staging_env.read_text().splitlines():
|
||||||
if line.startswith("# LOGIN_RSA_PRIVATE_KEY_PEM=") or line.startswith("LOGIN_RSA_PRIVATE_KEY_PEM="):
|
raw = line.lstrip()
|
||||||
|
if raw.startswith("#"):
|
||||||
|
# 更新注释:标明微信/RSA 可能已由打包注入
|
||||||
|
if "登录 RSA" in line:
|
||||||
|
lines_out.append(
|
||||||
|
"# 登录 RSA(打包时若本地 deploy/docker/.env 有值则已注入)"
|
||||||
|
)
|
||||||
|
continue
|
||||||
|
if "微信服务号" in line or "微信支付 / 小程序" in line:
|
||||||
|
lines_out.append(line)
|
||||||
|
if "微信服务号" in line:
|
||||||
|
lines_out.append(
|
||||||
|
"# 下列 WX_MP_* / 模板字段:打包时从本地 deploy/docker/.env 注入(有则覆盖)"
|
||||||
|
)
|
||||||
|
continue
|
||||||
|
lines_out.append(line)
|
||||||
continue
|
continue
|
||||||
if line.startswith("# 登录 RSA"):
|
|
||||||
lines.append(
|
|
||||||
"# 登录 RSA(多 worker/多实例须配置同一私钥;打包时已从 deploy/docker/.env 注入)"
|
|
||||||
)
|
|
||||||
continue
|
|
||||||
if line.startswith("API_REQUEST_LOG_ENABLED="):
|
|
||||||
lines.append(rsa_line)
|
|
||||||
lines.append(line)
|
|
||||||
|
|
||||||
staging_env.write_text("\n".join(lines) + "\n")
|
key = line.partition("=")[0].strip() if "=" in line else ""
|
||||||
|
# 去掉注释形态的同名键,稍后写注入行
|
||||||
|
if key.startswith("#"):
|
||||||
|
maybe = key.lstrip("#").strip()
|
||||||
|
if maybe in INJECT_KEYS:
|
||||||
|
continue
|
||||||
|
lines_out.append(line)
|
||||||
|
continue
|
||||||
|
|
||||||
|
if key in INJECT_KEYS:
|
||||||
|
if key in local_map and local_map[key].partition("=")[2].strip():
|
||||||
|
lines_out.append(local_map[key])
|
||||||
|
seen.add(key)
|
||||||
|
else:
|
||||||
|
lines_out.append(line)
|
||||||
|
seen.add(key)
|
||||||
|
continue
|
||||||
|
|
||||||
|
lines_out.append(line)
|
||||||
|
|
||||||
|
# 本地有、example 里没有的键:追加到文件末尾
|
||||||
|
extra = [local_map[k] for k in INJECT_KEYS if k not in seen and k in local_map and local_map[k].partition("=")[2].strip()]
|
||||||
|
if extra:
|
||||||
|
lines_out.append("")
|
||||||
|
lines_out.append("# ---- 打包自 deploy/docker/.env 追加 ----")
|
||||||
|
lines_out.extend(extra)
|
||||||
|
|
||||||
|
staging_env.write_text("\n".join(lines_out) + "\n")
|
||||||
|
|
||||||
|
# 同时生成可直接 cp 的 .env(与 .env.example 相同;甲方改库密码即可)
|
||||||
|
staging_env.with_name(".env").write_text(staging_env.read_text())
|
||||||
|
|
||||||
|
print("injected:" + ",".join(injected) if injected else "injected:(none)")
|
||||||
|
if missing:
|
||||||
|
print("missing_or_empty:" + ",".join(missing))
|
||||||
|
sys.exit(0 if injected else 2)
|
||||||
PY
|
PY
|
||||||
then
|
then
|
||||||
echo " 已从 deploy/docker/.env 注入 LOGIN_RSA_PRIVATE_KEY_PEM"
|
echo " 已从 deploy/docker/.env 注入微信/小程序/RSA 等到交付包 .env.example 与 .env"
|
||||||
elif [[ $? -eq 2 ]]; then
|
elif [[ $? -eq 2 ]]; then
|
||||||
echo " 警告: deploy/docker/.env 未配置 LOGIN_RSA_PRIVATE_KEY_PEM,交付包内仍为占位;多 worker 下登录可能失败"
|
echo " 警告: deploy/docker/.env 中微信/RSA 等注入项为空,交付包仍用 .env.example 占位" >&2
|
||||||
|
cp "${STAGING}/deploy/docker/.env.example" "${STAGING}/deploy/docker/.env"
|
||||||
else
|
else
|
||||||
echo " 错误: 注入 LOGIN_RSA_PRIVATE_KEY_PEM 失败" >&2
|
echo " 错误: 注入交付包环境变量失败" >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
else
|
||||||
|
echo " 警告: 无 deploy/docker/.env,跳过注入;仅提供 .env.example"
|
||||||
|
cp "${STAGING}/deploy/docker/.env.example" "${STAGING}/deploy/docker/.env"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cp "${ROOT}/deploy/docker/README.md" "${STAGING}/deploy/docker/"
|
cp "${ROOT}/deploy/docker/README.md" "${STAGING}/deploy/docker/"
|
||||||
cp -R "${ROOT}/deploy/docker/mysql" "${STAGING}/deploy/docker/"
|
cp -R "${ROOT}/deploy/docker/mysql" "${STAGING}/deploy/docker/"
|
||||||
cp "${ROOT}/docs/sql/zkxw.sql" "${STAGING}/docs/sql/zkxw.sql"
|
cp "${ROOT}/docs/sql/zkxw.sql" "${STAGING}/docs/sql/zkxw.sql"
|
||||||
@@ -90,6 +184,7 @@ platform=${DOCKER_PLATFORM}
|
|||||||
backend_image=${BACKEND_IMAGE}
|
backend_image=${BACKEND_IMAGE}
|
||||||
web_image=${WEB_IMAGE}
|
web_image=${WEB_IMAGE}
|
||||||
web_includes=web-admin+mobile-oa-h5(/oa-h5/)
|
web_includes=web-admin+mobile-oa-h5(/oa-h5/)
|
||||||
|
env_note=微信/小程序/RSA 已从发版机 deploy/docker/.env 注入(若有);库口令仍须按甲方现网填写
|
||||||
built_at=$(date -Iseconds)
|
built_at=$(date -Iseconds)
|
||||||
git_commit=$(git -C "${ROOT}" rev-parse --short HEAD 2>/dev/null || echo unknown)
|
git_commit=$(git -C "${ROOT}" rev-parse --short HEAD 2>/dev/null || echo unknown)
|
||||||
deploy_dir=deploy/docker
|
deploy_dir=deploy/docker
|
||||||
@@ -106,7 +201,7 @@ echo "总包大小: $(du -h "${ARCHIVE}" | cut -f1)"
|
|||||||
echo ""
|
echo ""
|
||||||
echo "包内不含前后端源码,包含:"
|
echo "包内不含前后端源码,包含:"
|
||||||
echo " - images/zkxw-app-images.tar(zkxw-backend + zkxw-web,web 含 /oa-h5/)"
|
echo " - images/zkxw-app-images.tar(zkxw-backend + zkxw-web,web 含 /oa-h5/)"
|
||||||
echo " - deploy/docker/ (compose + .env.example + mysql init)"
|
echo " - deploy/docker/ (compose + .env.example + .env + mysql init)"
|
||||||
echo " - docs/sql/zkxw.sql"
|
echo " - docs/sql/zkxw.sql"
|
||||||
echo " - 部署指导手册.html(客户安装手册,浏览器打开)"
|
echo " - 部署指导手册.html(客户安装手册,浏览器打开)"
|
||||||
echo ""
|
echo ""
|
||||||
@@ -114,5 +209,7 @@ echo "甲方服务器执行:"
|
|||||||
echo " tar -xzf ${PKG_NAME}.tar.gz"
|
echo " tar -xzf ${PKG_NAME}.tar.gz"
|
||||||
echo " cd ${PKG_NAME}"
|
echo " cd ${PKG_NAME}"
|
||||||
echo " docker load -i images/zkxw-app-images.tar"
|
echo " docker load -i images/zkxw-app-images.tar"
|
||||||
echo " cd deploy/docker && cp .env.example .env && vim .env"
|
echo " cd deploy/docker"
|
||||||
|
echo " # 新装: cp .env.example .env 后改 MYSQL/SECRET/MINIO 密码"
|
||||||
|
echo " # 升级: 保留现网库密码;可用包内已注入的微信配置,或合并 .env.example 中 WX_*/WXPAY_* 段"
|
||||||
echo " docker compose up -d"
|
echo " docker compose up -d"
|
||||||
File diff suppressed because it is too large.
Load diff
@@ -18179,13 +18179,6 @@
|
|||||||
"source_file": "views/system/user/index.vue",
|
"source_file": "views/system/user/index.vue",
|
||||||
"source_location": "L474"
|
"source_location": "L474"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"id": "user_index_return",
|
|
||||||
"label": "return()",
|
|
||||||
"file_type": "code",
|
|
||||||
"source_file": "views/system/user/index.vue",
|
|
||||||
"source_location": "L504"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"id": "views_system_user_detail_vue",
|
"id": "views_system_user_detail_vue",
|
||||||
"label": "detail.vue",
|
"label": "detail.vue",
|
||||||
@@ -57769,15 +57762,6 @@
|
|||||||
"source_location": "L474",
|
"source_location": "L474",
|
||||||
"weight": 1.0
|
"weight": 1.0
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"source": "views_system_user_index_vue",
|
|
||||||
"target": "user_index_return",
|
|
||||||
"relation": "contains",
|
|
||||||
"confidence": "EXTRACTED",
|
|
||||||
"source_file": "views/system/user/index.vue",
|
|
||||||
"source_location": "L504",
|
|
||||||
"weight": 1.0
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"source": "views_system_user_modules_user_dialog_vue",
|
"source": "views_system_user_modules_user_dialog_vue",
|
||||||
"target": "users_wuzilong_work_00code_zkxw_web_admin_src_api_admin",
|
"target": "users_wuzilong_work_00code_zkxw_web_admin_src_api_admin",
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
# Graph Report - src (2026-09-14)
|
# Graph Report - src (2026-09-17)
|
||||||
|
|
||||||
## Corpus Check
|
## Corpus Check
|
||||||
- Large corpus: 1000 files · ~660,217 words. Semantic extraction will be expensive (many Claude tokens). Consider running on a subfolder, or use --no-semantic to run AST-only.
|
- Large corpus: 1000 files · ~660,260 words. Semantic extraction will be expensive (many Claude tokens). Consider running on a subfolder, or use --no-semantic to run AST-only.
|
||||||
|
|
||||||
## Summary
|
## Summary
|
||||||
- 3602 nodes · 5137 edges · 69 communities detected
|
- 3601 nodes · 5136 edges · 71 communities detected
|
||||||
- Extraction: 78% EXTRACTED · 22% INFERRED · 0% AMBIGUOUS · INFERRED: 1134 edges (avg confidence: 0.8)
|
- Extraction: 78% EXTRACTED · 22% INFERRED · 0% AMBIGUOUS · INFERRED: 1134 edges (avg confidence: 0.8)
|
||||||
- Token cost: 0 input · 0 output
|
- Token cost: 0 input · 0 output
|
||||||
|
|
||||||
@@ -51,33 +51,35 @@
|
|||||||
- [[_COMMUNITY_Community 39|Community 39]]
|
- [[_COMMUNITY_Community 39|Community 39]]
|
||||||
- [[_COMMUNITY_Community 40|Community 40]]
|
- [[_COMMUNITY_Community 40|Community 40]]
|
||||||
- [[_COMMUNITY_Community 41|Community 41]]
|
- [[_COMMUNITY_Community 41|Community 41]]
|
||||||
|
- [[_COMMUNITY_Community 42|Community 42]]
|
||||||
- [[_COMMUNITY_Community 43|Community 43]]
|
- [[_COMMUNITY_Community 43|Community 43]]
|
||||||
- [[_COMMUNITY_Community 44|Community 44]]
|
|
||||||
- [[_COMMUNITY_Community 45|Community 45]]
|
- [[_COMMUNITY_Community 45|Community 45]]
|
||||||
- [[_COMMUNITY_Community 46|Community 46]]
|
- [[_COMMUNITY_Community 46|Community 46]]
|
||||||
|
- [[_COMMUNITY_Community 47|Community 47]]
|
||||||
- [[_COMMUNITY_Community 48|Community 48]]
|
- [[_COMMUNITY_Community 48|Community 48]]
|
||||||
|
- [[_COMMUNITY_Community 49|Community 49]]
|
||||||
- [[_COMMUNITY_Community 51|Community 51]]
|
- [[_COMMUNITY_Community 51|Community 51]]
|
||||||
- [[_COMMUNITY_Community 52|Community 52]]
|
- [[_COMMUNITY_Community 52|Community 52]]
|
||||||
- [[_COMMUNITY_Community 54|Community 54]]
|
|
||||||
- [[_COMMUNITY_Community 55|Community 55]]
|
- [[_COMMUNITY_Community 55|Community 55]]
|
||||||
- [[_COMMUNITY_Community 56|Community 56]]
|
- [[_COMMUNITY_Community 56|Community 56]]
|
||||||
- [[_COMMUNITY_Community 57|Community 57]]
|
|
||||||
- [[_COMMUNITY_Community 58|Community 58]]
|
- [[_COMMUNITY_Community 58|Community 58]]
|
||||||
- [[_COMMUNITY_Community 59|Community 59]]
|
- [[_COMMUNITY_Community 59|Community 59]]
|
||||||
- [[_COMMUNITY_Community 60|Community 60]]
|
- [[_COMMUNITY_Community 60|Community 60]]
|
||||||
|
- [[_COMMUNITY_Community 61|Community 61]]
|
||||||
- [[_COMMUNITY_Community 62|Community 62]]
|
- [[_COMMUNITY_Community 62|Community 62]]
|
||||||
|
- [[_COMMUNITY_Community 63|Community 63]]
|
||||||
- [[_COMMUNITY_Community 65|Community 65]]
|
- [[_COMMUNITY_Community 65|Community 65]]
|
||||||
- [[_COMMUNITY_Community 67|Community 67]]
|
- [[_COMMUNITY_Community 68|Community 68]]
|
||||||
- [[_COMMUNITY_Community 72|Community 72]]
|
|
||||||
- [[_COMMUNITY_Community 74|Community 74]]
|
- [[_COMMUNITY_Community 74|Community 74]]
|
||||||
- [[_COMMUNITY_Community 75|Community 75]]
|
- [[_COMMUNITY_Community 76|Community 76]]
|
||||||
- [[_COMMUNITY_Community 77|Community 77]]
|
- [[_COMMUNITY_Community 77|Community 77]]
|
||||||
- [[_COMMUNITY_Community 78|Community 78]]
|
|
||||||
- [[_COMMUNITY_Community 79|Community 79]]
|
- [[_COMMUNITY_Community 79|Community 79]]
|
||||||
- [[_COMMUNITY_Community 83|Community 83]]
|
- [[_COMMUNITY_Community 80|Community 80]]
|
||||||
- [[_COMMUNITY_Community 96|Community 96]]
|
- [[_COMMUNITY_Community 81|Community 81]]
|
||||||
- [[_COMMUNITY_Community 99|Community 99]]
|
- [[_COMMUNITY_Community 85|Community 85]]
|
||||||
- [[_COMMUNITY_Community 100|Community 100]]
|
- [[_COMMUNITY_Community 98|Community 98]]
|
||||||
|
- [[_COMMUNITY_Community 101|Community 101]]
|
||||||
|
- [[_COMMUNITY_Community 102|Community 102]]
|
||||||
|
|
||||||
## God Nodes (most connected - your core abstractions)
|
## God Nodes (most connected - your core abstractions)
|
||||||
1. `get()` - 317 edges
|
1. `get()` - 317 edges
|
||||||
@@ -98,80 +100,80 @@
|
|||||||
utils/oa-receive-account-value.ts → views/operations/storage-facility/index.vue
|
utils/oa-receive-account-value.ts → views/operations/storage-facility/index.vue
|
||||||
- `dash()` --calls--> `formatDisplayOrDash()` [INFERRED]
|
- `dash()` --calls--> `formatDisplayOrDash()` [INFERRED]
|
||||||
components/business/infusion-schedule-outbound-chain-view/index.vue → utils/datetime-display.ts
|
components/business/infusion-schedule-outbound-chain-view/index.vue → utils/datetime-display.ts
|
||||||
- `dash()` --calls--> `formatDisplayOrDash()` [INFERRED]
|
|
||||||
components/business/clinical-schedule-payment-detail/index.vue → utils/datetime-display.ts
|
|
||||||
- `displayCell()` --calls--> `formatDisplayOrDash()` [INFERRED]
|
- `displayCell()` --calls--> `formatDisplayOrDash()` [INFERRED]
|
||||||
views/production/waste-output/index.vue → utils/datetime-display.ts
|
views/production/waste-output/index.vue → utils/datetime-display.ts
|
||||||
|
- `fmtMoney()` --calls--> `formatMoneyDisplay()` [INFERRED]
|
||||||
|
components/business/clinical-schedule-payment-detail/index.vue → utils/money-format.ts
|
||||||
|
|
||||||
## Communities
|
## Communities
|
||||||
|
|
||||||
### Community 0 - "Community 0"
|
### Community 0 - "Community 0"
|
||||||
Cohesion: 0.0
|
Cohesion: 0.01
|
||||||
Nodes (205): fetchAccessLogList(), fetchActiveRegions(), fetchCategoryList(), fetchCategoryParameters(), fetchCellProductPriceList(), fetchCellProductSpecList(), fetchCellProductTypeList(), fetchChannelAccount() (+197 more)
|
Nodes (183): fetchAccessLogList(), fetchActiveRegions(), fetchCategoryList(), fetchCategoryParameters(), fetchCellProductPriceList(), fetchCellProductSpecList(), fetchCellProductTypeList(), fetchChannelAccount() (+175 more)
|
||||||
|
|
||||||
### Community 1 - "Community 1"
|
### Community 1 - "Community 1"
|
||||||
Cohesion: 0.03
|
Cohesion: 0.02
|
||||||
Nodes (90): fetchUploadAttachment(), handleReportUpload(), handleReportUpload(), walk(), if(), async(), addDispatchItem(), createDispatchItem() (+82 more)
|
Nodes (86): fetchUploadAttachment(), handleReportUpload(), handleReportUpload(), walk(), if(), async(), addDispatchItem(), createDispatchItem() (+78 more)
|
||||||
|
|
||||||
### Community 2 - "Community 2"
|
### Community 2 - "Community 2"
|
||||||
Cohesion: 0.03
|
Cohesion: 0.03
|
||||||
Nodes (87): batchSavePilotCheckup(), deletePilotCheckupActualItem(), fetchCheckupInstitutionList(), fetchCheckupInstitutionPackageDetail(), fetchCheckupInstitutionPackages(), fetchPilotCheckupDetail(), fetchPilotCheckupList(), markPilotCheckupChecked() (+79 more)
|
Nodes (86): batchSavePilotCheckup(), deletePilotCheckupActualItem(), fetchCheckupInstitutionList(), fetchCheckupInstitutionPackageDetail(), fetchCheckupInstitutionPackages(), fetchPilotCheckupActualItems(), fetchPilotCheckupDetail(), fetchPilotCheckupList() (+78 more)
|
||||||
|
|
||||||
### Community 3 - "Community 3"
|
### Community 3 - "Community 3"
|
||||||
Cohesion: 0.02
|
|
||||||
Nodes (73): fetchCheckupInstitutionInvoices(), fetchCheckupInstitutionProjects(), fetchCreateCheckupInstitution(), fetchCreateCheckupInstitutionInvoice(), fetchCreateCheckupInstitutionProject(), fetchUpdateCheckupInstitution(), fetchUpdateCheckupInstitutionInvoice(), fetchUpdateCheckupInstitutionProject() (+65 more)
|
|
||||||
|
|
||||||
### Community 4 - "Community 4"
|
|
||||||
Cohesion: 0.02
|
|
||||||
Nodes (60): fetchProductionTaskList(), fetchProductionWasteOutputList(), fetchProductionReceptionBySampleCode(), fetchProductionReceptionSubmit(), fetchProductionReceptionUpdate(), handleDialogClose(), nodeSummary(), onAdd() (+52 more)
|
|
||||||
|
|
||||||
### Community 5 - "Community 5"
|
|
||||||
Cohesion: 0.02
|
|
||||||
Nodes (64): fetchBatchDeleteOaReceiveAccounts(), fetchBatchMarkOaCcTasksRead(), fetchCreateOaReceiveAccount(), fetchDeleteOaReceiveAccount(), fetchMarkOaCcTaskRead(), fetchOaAppDraft(), fetchOaCcUnreadCount(), fetchOaInstanceDetail() (+56 more)
|
|
||||||
|
|
||||||
### Community 6 - "Community 6"
|
|
||||||
Cohesion: 0.03
|
Cohesion: 0.03
|
||||||
Nodes (79): fetchEthnicList(), formatNowDatetime(), applyDonationBundleToForm(), createEmptyTransport(), ensureEthnicOptionInList(), handleOpenForAdd(), if(), loadEthnicOptions() (+71 more)
|
Nodes (79): fetchEthnicList(), formatNowDatetime(), applyDonationBundleToForm(), createEmptyTransport(), ensureEthnicOptionInList(), handleOpenForAdd(), if(), loadEthnicOptions() (+71 more)
|
||||||
|
|
||||||
|
### Community 4 - "Community 4"
|
||||||
|
Cohesion: 0.02
|
||||||
|
Nodes (64): fetchBatchDeleteOaReceiveAccounts(), fetchBatchMarkOaCcTasksRead(), fetchCreateOaReceiveAccount(), fetchDeleteOaReceiveAccount(), fetchMarkOaCcTaskRead(), fetchOaAppDraft(), fetchOaCcUnreadCount(), fetchOaInstanceDetail() (+56 more)
|
||||||
|
|
||||||
|
### Community 5 - "Community 5"
|
||||||
|
Cohesion: 0.03
|
||||||
|
Nodes (34): fetchGetMenuList(), ComponentLoader, IframeRouteManager, MenuProcessor, RoutePermissionValidator, RouteRegistry, RouteTransformer, useAppMode() (+26 more)
|
||||||
|
|
||||||
|
### Community 6 - "Community 6"
|
||||||
|
Cohesion: 0.03
|
||||||
|
Nodes (65): fetchCellSampleTypeList(), fetchCheckupInstitutionInvoices(), fetchCheckupInstitutionProjects(), fetchCreateCellSampleType(), fetchCreateCheckupInstitution(), fetchCreateCheckupInstitutionInvoice(), fetchCreateCheckupInstitutionProject(), fetchDeleteCellSampleType() (+57 more)
|
||||||
|
|
||||||
### Community 7 - "Community 7"
|
### Community 7 - "Community 7"
|
||||||
Cohesion: 0.03
|
Cohesion: 0.03
|
||||||
Nodes (41): fetchGetMenuList(), useSettingsHandlers(), useSettingsPanel(), useSettingsState(), ComponentLoader, IframeRouteManager, MenuProcessor, RouteRegistry (+33 more)
|
Nodes (62): useSettingsHandlers(), useSettingsPanel(), useSettingsState(), useCeremony(), useTheme(), if(), nodeSummary(), createDefaultFlow() (+54 more)
|
||||||
|
|
||||||
### Community 8 - "Community 8"
|
### Community 8 - "Community 8"
|
||||||
Cohesion: 0.03
|
Cohesion: 0.03
|
||||||
Nodes (39): handleBlur(), handleFocus(), handleInput(), fetchQcMaterialBatchDetail(), fetchQcMaterialBatchList(), fetchQcMaterialBatchOptions(), fetchQcMaterialList(), fetchQcMaterialOptions() (+31 more)
|
Nodes (56): fetchCreateCustomer(), fetchCustomerList(), fetchDeleteCustomer(), fetchUpdateCustomer(), updateInfusionScheduleStatus(), fetchProductionWasteOutputList(), handleDialogClose(), handleAdd() (+48 more)
|
||||||
|
|
||||||
### Community 9 - "Community 9"
|
### Community 9 - "Community 9"
|
||||||
Cohesion: 0.03
|
Cohesion: 0.03
|
||||||
Nodes (58): fetchUpdatePostBoundRoles(), fetchOaRelatedSummaries(), RoutePermissionValidator, if(), branchConditionLines(), collectConditionReferencedFields(), collectFormConditionReferencedFields(), flattenFormRules() (+50 more)
|
Nodes (69): fetchDeptTree(), fetchUserList(), fetchOaFlowPreview(), fetchOaTemplateDetail(), remoteSearchHandoverUsers(), chipTitle(), confirmPicker(), memberOptionLabel() (+61 more)
|
||||||
|
|
||||||
### Community 10 - "Community 10"
|
### Community 10 - "Community 10"
|
||||||
Cohesion: 0.04
|
Cohesion: 0.02
|
||||||
Nodes (47): fetchCreateMenu(), fetchDeleteMenu(), fetchMenuTree(), fetchUpdateMenu(), collectIds(), buildInboundBasicSection(), buildInboundCellStorageViewSections(), buildInboundResearchDonationViewSections() (+39 more)
|
Nodes (29): fetchAllConsumablePacks(), fetchAllConsumables(), fetchAllConsumableStockLogs(), fetchAllEquipments(), fetchAllOutputTypes(), fetchAllProcessCategories(), fetchAllProcesses(), fetchAllReagents() (+21 more)
|
||||||
|
|
||||||
### Community 11 - "Community 11"
|
### Community 11 - "Community 11"
|
||||||
Cohesion: 0.04
|
Cohesion: 0.03
|
||||||
Nodes (46): buildBaseFields(), buildInboundBasicSection(), buildInboundCellStorageProductionViewSections(), buildInboundResearchDonationProductionViewSections(), buildOutboundBasicExperimentProductionViewSections(), buildOutboundClinicalProductionViewSections(), buildOutboundDetail(), buildOutboundPilotProductionViewSections() (+38 more)
|
Nodes (56): fetchMyProductionTasks(), fetchMyQcTaskList(), fetchQcTaskDetail(), fetchQcTaskList(), fetchMineTasksForWorkOrders(), useInboundSiblingNavigation(), shouldApplyTriggerSourceFilter(), useQcWorkOrderTabPage() (+48 more)
|
||||||
|
|
||||||
### Community 12 - "Community 12"
|
### Community 12 - "Community 12"
|
||||||
Cohesion: 0.03
|
Cohesion: 0.04
|
||||||
Nodes (49): fetchAttachmentDownloadUrl(), qcAttachmentFullUrl(), qcDownloadAttachment(), qcPreviewAttachment(), formatHandoverUserLabel(), formatNowDatetime(), fullFileUrl(), handleDownloadAttachment() (+41 more)
|
Nodes (53): buildTemporaryViewSections(), buildInsertedSiblingCard(), resolveShowProtocolPaymentAtGroup(), appendTaskResultSections(), batchTasksForPanelSlot(), buildConfiguredOnlySection(), for(), set() (+45 more)
|
||||||
|
|
||||||
### Community 13 - "Community 13"
|
### Community 13 - "Community 13"
|
||||||
Cohesion: 0.04
|
Cohesion: 0.04
|
||||||
Nodes (53): fetchMyProductionTasks(), fetchMyQcTaskList(), fetchQcTaskDetail(), fetchQcTaskList(), fetchMineTasksForWorkOrders(), useInboundSiblingNavigation(), shouldApplyTriggerSourceFilter(), useQcWorkOrderTabPage() (+45 more)
|
Nodes (49): buildInboundBasicSection(), buildInboundCellStorageViewSections(), buildInboundResearchDonationViewSections(), buildReceptionSection(), buildTransportSection(), resolveInboundProtocolStatus(), buildBaseFields(), buildInboundBasicSection() (+41 more)
|
||||||
|
|
||||||
### Community 14 - "Community 14"
|
### Community 14 - "Community 14"
|
||||||
Cohesion: 0.04
|
Cohesion: 0.03
|
||||||
Nodes (51): buildTemporaryViewSections(), buildInsertedSiblingCard(), resolveShowProtocolPaymentAtGroup(), batchTasksForPanelSlot(), for(), set(), gateWorkOrder(), sampleTabStatusLabel() (+43 more)
|
Nodes (49): fetchAttachmentDownloadUrl(), qcAttachmentFullUrl(), qcDownloadAttachment(), qcPreviewAttachment(), formatHandoverUserLabel(), formatNowDatetime(), fullFileUrl(), handleDownloadAttachment() (+41 more)
|
||||||
|
|
||||||
### Community 15 - "Community 15"
|
### Community 15 - "Community 15"
|
||||||
Cohesion: 0.05
|
Cohesion: 0.04
|
||||||
Nodes (60): fetchDeptTree(), fetchUserList(), fetchOaFlowPreview(), fetchOaTemplateDetail(), remoteSearchHandoverUsers(), flowNeedsInitiatorSelect(), loadFlowPreview(), loadUsers() (+52 more)
|
Nodes (46): fetchProductionWorkOrderQcInfo(), dash(), fmtMoney(), auditorDisplay(), dash(), ensureUnitsInOptions(), expressName(), formatYm() (+38 more)
|
||||||
|
|
||||||
### Community 16 - "Community 16"
|
### Community 16 - "Community 16"
|
||||||
Cohesion: 0.05
|
Cohesion: 0.04
|
||||||
Nodes (53): fetchGetMenuCodes(), fetchGetUserInfo(), fetchLogin(), fetchRefreshToken(), fetchUpdateProfile(), fetchUploadProfileAvatar(), toLogin(), fetchUserInfo() (+45 more)
|
Nodes (39): fetchCreateMenu(), fetchDeleteMenu(), fetchMenuTree(), fetchUpdateMenu(), fetchUpdatePostBoundRoles(), fetchCreateEnvDetectItem(), fetchDeleteEnvDetectItem(), fetchEnvDetectItemDetail() (+31 more)
|
||||||
|
|
||||||
### Community 17 - "Community 17"
|
### Community 17 - "Community 17"
|
||||||
Cohesion: 0.04
|
Cohesion: 0.04
|
||||||
@@ -179,263 +181,267 @@ Nodes (44): fetchFullmoonTodoList(), fetchUpdateFullmoonTodoInsurance(), fetchCo
|
|||||||
|
|
||||||
### Community 18 - "Community 18"
|
### Community 18 - "Community 18"
|
||||||
Cohesion: 0.05
|
Cohesion: 0.05
|
||||||
Nodes (34): fetchClinicalPaymentDetail(), fetchClinicalPayments(), fetchClinicalReceiptConfirmed(), fetchClinicalReceiptPending(), fetchClinicalRefundConfirmed(), fetchClinicalRefundPending(), fetchOrderAdjusts(), fetchOrderDetail() (+26 more)
|
Nodes (39): fetchCreateQcInspectionItemTemplate(), fetchDeleteQcInspectionItemTemplate(), fetchQcInspectionItemTemplateDetail(), fetchQcInspectionItemTemplateList(), fetchQcInspectionItemTemplatesActive(), fetchUpdateQcInspectionItemTemplate(), fetchQcLabTestItemList(), fetchQcLabTestItemsActive() (+31 more)
|
||||||
|
|
||||||
### Community 19 - "Community 19"
|
### Community 19 - "Community 19"
|
||||||
Cohesion: 0.05
|
Cohesion: 0.07
|
||||||
Nodes (33): fetchMineProductionWorkOrderTabStepCounts(), fetchMineProductionWorkOrderTabStepCountsDeduped(), fetchProductionWorkOrderCellProductOptions(), fetchProductionWorkOrderDetail(), fetchProductionWorkOrderList(), fetchProductionWorkOrderQcDispatchOptions(), fetchProductionWorkOrderQcInfo(), fetchProductionWorkOrderTabStepCounts() (+25 more)
|
Nodes (43): fetchOaRelatedSummaries(), buildFormRows(), buildOaPrintFilename(), buildOaPrintModel(), canvasToPdf(), ensurePlainObject(), exportOaApprovalPdf(), extractUrls() (+35 more)
|
||||||
|
|
||||||
### Community 20 - "Community 20"
|
### Community 20 - "Community 20"
|
||||||
Cohesion: 0.05
|
Cohesion: 0.05
|
||||||
Nodes (39): fetchCreateQcInspectionItemTemplate(), fetchDeleteQcInspectionItemTemplate(), fetchQcInspectionItemTemplateDetail(), fetchQcInspectionItemTemplateList(), fetchQcInspectionItemTemplatesActive(), fetchUpdateQcInspectionItemTemplate(), fetchQcLabTestItemList(), fetchQcLabTestItemsActive() (+31 more)
|
Nodes (24): handleBlur(), handleFocus(), handleInput(), fetchClinicalReceiptConfirmed(), buildConfirmedParams(), buildPendingParams(), formatAmount(), handleConfirmedReset() (+16 more)
|
||||||
|
|
||||||
### Community 21 - "Community 21"
|
### Community 21 - "Community 21"
|
||||||
Cohesion: 0.06
|
Cohesion: 0.06
|
||||||
Nodes (39): fetchCreateCustomer(), fetchCustomerList(), fetchDeleteCustomer(), fetchUpdateCustomer(), updateInfusionScheduleStatus(), handleAdd(), handleDelete(), handleDropdownCommand() (+31 more)
|
Nodes (40): completePilotApplication(), deletePilotApplication(), fetchPilotApplicationList(), startPilotApplication(), voidPilotApplication(), fetchClinicalRefundConfirmed(), buildConfirmedParams(), buildPendingParams() (+32 more)
|
||||||
|
|
||||||
### Community 22 - "Community 22"
|
### Community 22 - "Community 22"
|
||||||
Cohesion: 0.08
|
Cohesion: 0.08
|
||||||
Nodes (37): formatDatetimeToMinute(), handleChineseDatetimePaste(), parseChineseDatetimeText(), parseBirthOrder(), parseChineseNumeral(), addSampleHint(), earliestCollectTime(), isMaternalBloodEmpty() (+29 more)
|
Nodes (37): formatDatetimeToMinute(), handleChineseDatetimePaste(), parseChineseDatetimeText(), parseBirthOrder(), parseChineseNumeral(), addSampleHint(), earliestCollectTime(), isMaternalBloodEmpty() (+29 more)
|
||||||
|
|
||||||
### Community 23 - "Community 23"
|
### Community 23 - "Community 23"
|
||||||
Cohesion: 0.08
|
Cohesion: 0.06
|
||||||
Nodes (34): buildFormRows(), buildOaPrintFilename(), buildOaPrintModel(), canvasToPdf(), ensurePlainObject(), exportOaApprovalPdf(), extractUrls(), formatFieldValue() (+26 more)
|
Nodes (22): fetchQcMaterialBatchDetail(), fetchQcMaterialBatchList(), fetchQcMaterialBatchOptions(), fetchQcMaterialList(), fetchQcMaterialOptions(), fetchUpdateQcMaterialBatch(), fetchMarkQcMaterialUsageFullyUsed(), financeAttachmentsToUrlString() (+14 more)
|
||||||
|
|
||||||
### Community 24 - "Community 24"
|
### Community 24 - "Community 24"
|
||||||
Cohesion: 0.1
|
Cohesion: 0.1
|
||||||
Nodes (2): WebSocketClient, TableCache
|
Nodes (2): WebSocketClient, TableCache
|
||||||
|
|
||||||
### Community 25 - "Community 25"
|
### Community 25 - "Community 25"
|
||||||
Cohesion: 0.09
|
Cohesion: 0.08
|
||||||
Nodes (8): getDefaultLanguage(), checkStorageCompatibility(), StorageConfig, getSystemStorage(), getSysVersion(), StorageKeyManager, StorageCompatibilityManager, validateStorageData()
|
Nodes (33): fetchRefreshToken(), toLogin(), base64ToBytes(), bytesToBase64(), decryptJson(), deriveKey(), encryptJson(), fromBase64Url() (+25 more)
|
||||||
|
|
||||||
### Community 26 - "Community 26"
|
### Community 26 - "Community 26"
|
||||||
Cohesion: 0.09
|
Cohesion: 0.09
|
||||||
Nodes (29): fetchAddTaskStep(), fetchCopyTaskStep(), fetchDeleteTaskStep(), fetchDispatchProductionTaskSteps(), fetchForwardProductionTask(), fetchProductionTaskDetail(), fetchProductionTaskEditorInit(), fetchReassignProductionTask() (+21 more)
|
Nodes (8): getDefaultLanguage(), checkStorageCompatibility(), StorageConfig, getSystemStorage(), getSysVersion(), StorageKeyManager, StorageCompatibilityManager, validateStorageData()
|
||||||
|
|
||||||
### Community 27 - "Community 27"
|
### Community 27 - "Community 27"
|
||||||
Cohesion: 0.07
|
Cohesion: 0.09
|
||||||
Nodes (19): fetchDeleteMaterialBatch(), fetchMaterialBatchList(), fetchMaterialBatchOptions(), fetchMaterialList(), fetchMaterialOptions(), fetchUpdateMaterialBatch(), fetchMaterialUsageList(), fetchMyMaterialUsageList() (+11 more)
|
Nodes (29): fetchAddTaskStep(), fetchCopyTaskStep(), fetchDeleteTaskStep(), fetchDispatchProductionTaskSteps(), fetchForwardProductionTask(), fetchProductionTaskDetail(), fetchProductionTaskEditorInit(), fetchReassignProductionTask() (+21 more)
|
||||||
|
|
||||||
### Community 28 - "Community 28"
|
### Community 28 - "Community 28"
|
||||||
Cohesion: 0.08
|
Cohesion: 0.08
|
||||||
Nodes (20): createEmptySnapshots(), normalizeConfiguredReagents(), normalizeConsumables(), normalizeDataCollections(), normalizeReagents(), normalizeStepOutputs(), serializeAttachments(), serializeEquipmentIds() (+12 more)
|
Nodes (20): createEmptySnapshots(), normalizeConfiguredReagents(), normalizeConsumables(), normalizeDataCollections(), normalizeReagents(), normalizeStepOutputs(), serializeAttachments(), serializeEquipmentIds() (+12 more)
|
||||||
|
|
||||||
### Community 29 - "Community 29"
|
### Community 29 - "Community 29"
|
||||||
Cohesion: 0.09
|
Cohesion: 0.07
|
||||||
Nodes (27): completePilotApplication(), deletePilotApplication(), fetchPilotApplicationList(), startPilotApplication(), voidPilotApplication(), handleBatchComplete(), handleBatchStart(), handleBatchVoid() (+19 more)
|
Nodes (19): fetchDeleteMaterialBatch(), fetchMaterialBatchList(), fetchMaterialBatchOptions(), fetchMaterialList(), fetchMaterialOptions(), fetchUpdateMaterialBatch(), fetchMaterialUsageList(), fetchMyMaterialUsageList() (+11 more)
|
||||||
|
|
||||||
### Community 30 - "Community 30"
|
### Community 30 - "Community 30"
|
||||||
Cohesion: 0.09
|
Cohesion: 0.08
|
||||||
Nodes (22): fetchOaAppList(), fetchOaGroupList(), fetchPublishOaApp(), loadData(), loadGroups(), resetForm(), onSuccess(), goBack() (+14 more)
|
Nodes (22): fetchMineProductionWorkOrderTabStepCounts(), fetchMineProductionWorkOrderTabStepCountsDeduped(), fetchProductionWorkOrderCellProductOptions(), fetchProductionWorkOrderDetail(), fetchProductionWorkOrderList(), fetchProductionWorkOrderQcDispatchOptions(), fetchProductionWorkOrderTabStepCounts(), fetchProductionWorkOrderTabStepCountsDeduped() (+14 more)
|
||||||
|
|
||||||
### Community 31 - "Community 31"
|
### Community 31 - "Community 31"
|
||||||
Cohesion: 0.1
|
Cohesion: 0.09
|
||||||
Nodes (21): displayPeople(), nodeStatusText(), personLines(), personStatusHint(), personTitle(), showNodeComment(), signBadge(), signBadgeText() (+13 more)
|
Nodes (23): fetchProductionTaskList(), fetchProductionReceptionBySampleCode(), fetchProductionReceptionSubmit(), fetchProductionReceptionUpdate(), onUserSelectVisible(), remoteSearchUsers(), buildPayload(), ensureDefaultHandler() (+15 more)
|
||||||
|
|
||||||
### Community 32 - "Community 32"
|
### Community 32 - "Community 32"
|
||||||
Cohesion: 0.09
|
Cohesion: 0.09
|
||||||
Nodes (12): fetchMineQcWorkOrderTabUnfinishedCounts(), fetchOutboundQcDetail(), fetchQcWorkOrderDetail(), fetchQcWorkOrderList(), fetchQcWorkOrdersBySample(), fetchQcWorkOrderTabUnfinishedCounts(), reload(), reloadTabCounts() (+4 more)
|
Nodes (22): fetchOaAppList(), fetchOaGroupList(), fetchPublishOaApp(), loadData(), loadGroups(), resetForm(), onSuccess(), goBack() (+14 more)
|
||||||
|
|
||||||
### Community 33 - "Community 33"
|
### Community 33 - "Community 33"
|
||||||
|
Cohesion: 0.1
|
||||||
|
Nodes (21): displayPeople(), nodeStatusText(), personLines(), personStatusHint(), personTitle(), showNodeComment(), signBadge(), signBadgeText() (+13 more)
|
||||||
|
|
||||||
|
### Community 34 - "Community 34"
|
||||||
|
Cohesion: 0.12
|
||||||
|
Nodes (20): fetchGetMenuCodes(), fetchGetUserInfo(), fetchLogin(), fetchUpdateProfile(), fetchUploadProfileAvatar(), fetchUserInfo(), buildWebEncryptedLoginBody(), defaultAvatarPathByRole() (+12 more)
|
||||||
|
|
||||||
|
### Community 35 - "Community 35"
|
||||||
|
Cohesion: 0.09
|
||||||
|
Nodes (12): fetchMineQcWorkOrderTabUnfinishedCounts(), fetchOutboundQcDetail(), fetchQcWorkOrderDetail(), fetchQcWorkOrderList(), fetchQcWorkOrdersBySample(), fetchQcWorkOrderTabUnfinishedCounts(), reload(), reloadTabCounts() (+4 more)
|
||||||
|
|
||||||
|
### Community 36 - "Community 36"
|
||||||
|
Cohesion: 0.1
|
||||||
|
Nodes (12): fetchOutboundReleaseMaterial(), fetchOutboundReleaseReviewDetail(), fetchOutboundReleaseReviewList(), fetchReleaseReviewList(), handleReset(), handleSearch(), handleTabChange(), handleToggleSelect() (+4 more)
|
||||||
|
|
||||||
|
### Community 37 - "Community 37"
|
||||||
Cohesion: 0.12
|
Cohesion: 0.12
|
||||||
Nodes (15): addCopyButton(), highlightCode(), insertLineNumbers(), isBlockProcessed(), markBlockAsProcessed(), processBlock(), setupHighlightDirective(), setupRippleDirective() (+7 more)
|
Nodes (15): addCopyButton(), highlightCode(), insertLineNumbers(), isBlockProcessed(), markBlockAsProcessed(), processBlock(), setupHighlightDirective(), setupRippleDirective() (+7 more)
|
||||||
|
|
||||||
### Community 34 - "Community 34"
|
### Community 38 - "Community 38"
|
||||||
Cohesion: 0.13
|
|
||||||
Nodes (18): fetchCellSampleTypeList(), fetchCreateCellSampleType(), fetchDeleteCellSampleType(), fetchUpdateCellSampleType(), handleAdd(), handleDelete(), handleDropdownCommand(), handleEdit() (+10 more)
|
|
||||||
|
|
||||||
### Community 35 - "Community 35"
|
|
||||||
Cohesion: 0.2
|
Cohesion: 0.2
|
||||||
Nodes (14): applyFlagToRule(), applySchema(), countRules(), getActiveRule(), getDesigner(), getSetupState(), onMessage(), readFlag() (+6 more)
|
Nodes (14): applyFlagToRule(), applySchema(), countRules(), getActiveRule(), getDesigner(), getSetupState(), onMessage(), readFlag() (+6 more)
|
||||||
|
|
||||||
### Community 36 - "Community 36"
|
### Community 39 - "Community 39"
|
||||||
Cohesion: 0.12
|
Cohesion: 0.12
|
||||||
Nodes (6): setupOaConfirmationKit(), ensureOaKitMenu(), setupOaLeaveKit(), setupOaOvertimeKit(), setupOaResignationKit(), setupOaTripKit()
|
Nodes (6): setupOaConfirmationKit(), ensureOaKitMenu(), setupOaLeaveKit(), setupOaOvertimeKit(), setupOaResignationKit(), setupOaTripKit()
|
||||||
|
|
||||||
### Community 37 - "Community 37"
|
### Community 40 - "Community 40"
|
||||||
Cohesion: 0.16
|
Cohesion: 0.16
|
||||||
Nodes (10): useTable(), useTableImpl(), getColumnChecks(), useTableColumns(), createErrorHandler(), createSmartDebounce(), defaultResponseAdapter(), extractPagination() (+2 more)
|
Nodes (10): useTable(), useTableImpl(), getColumnChecks(), useTableColumns(), createErrorHandler(), createSmartDebounce(), defaultResponseAdapter(), extractPagination() (+2 more)
|
||||||
|
|
||||||
### Community 38 - "Community 38"
|
### Community 41 - "Community 41"
|
||||||
Cohesion: 0.27
|
Cohesion: 0.27
|
||||||
Nodes (14): useChart(), useChartComponent(), useChartOps(), colourBlend(), getCssVar(), getDarkColor(), getLightColor(), handleElementThemeColor() (+6 more)
|
Nodes (14): useChart(), useChartComponent(), useChartOps(), colourBlend(), getCssVar(), getDarkColor(), getLightColor(), handleElementThemeColor() (+6 more)
|
||||||
|
|
||||||
### Community 39 - "Community 39"
|
### Community 42 - "Community 42"
|
||||||
Cohesion: 0.33
|
|
||||||
Nodes (13): buildProtocolPaymentFlowSteps(), dash(), financeReceiptTime(), formatAmount(), hasFinanceReceipt(), hasFinanceRefund(), hasReceiptSubmit(), hasRefundSubmit() (+5 more)
|
|
||||||
|
|
||||||
### Community 40 - "Community 40"
|
|
||||||
Cohesion: 0.19
|
Cohesion: 0.19
|
||||||
Nodes (6): fetchServiceOrderTxnList(), handleReset(), handleSearch(), handleTabChange(), loadData(), switchTab()
|
Nodes (6): fetchServiceOrderTxnList(), handleReset(), handleSearch(), handleTabChange(), loadData(), switchTab()
|
||||||
|
|
||||||
### Community 41 - "Community 41"
|
### Community 43 - "Community 43"
|
||||||
Cohesion: 0.24
|
Cohesion: 0.24
|
||||||
Nodes (10): buildPrintDocumentHtml(), cleanupPrintIframe(), embedSopImagesAsDataUrls(), getSopA4ContentHeightPx(), getSopA4EditorHeightPx(), normalizeSopCheckboxes(), prepareSopHtmlForPrint(), printSopHtml() (+2 more)
|
Nodes (10): buildPrintDocumentHtml(), cleanupPrintIframe(), embedSopImagesAsDataUrls(), getSopA4ContentHeightPx(), getSopA4EditorHeightPx(), normalizeSopCheckboxes(), prepareSopHtmlForPrint(), printSopHtml() (+2 more)
|
||||||
|
|
||||||
### Community 43 - "Community 43"
|
### Community 45 - "Community 45"
|
||||||
|
Cohesion: 0.15
|
||||||
|
Nodes (4): fetchNextDonationSampleCode(), fetchResearchDonationAuditList(), fetchResearchDonationDetail(), fetchResearchDonationList()
|
||||||
|
|
||||||
|
### Community 46 - "Community 46"
|
||||||
|
Cohesion: 0.33
|
||||||
|
Nodes (7): buildSheetColumns(), downloadOaHistoryExcel(), exportTimestamp(), pad(), sanitizeFilename(), styleHeaderCell(), writeHeaderRows()
|
||||||
|
|
||||||
|
### Community 47 - "Community 47"
|
||||||
Cohesion: 0.31
|
Cohesion: 0.31
|
||||||
Nodes (4): isSlotAvailable(), resolveStorageSlotRangeFill(), slotFacilityNodeId(), sortBoxSlots()
|
Nodes (4): isSlotAvailable(), resolveStorageSlotRangeFill(), slotFacilityNodeId(), sortBoxSlots()
|
||||||
|
|
||||||
### Community 44 - "Community 44"
|
### Community 48 - "Community 48"
|
||||||
Cohesion: 0.25
|
|
||||||
Nodes (3): companyProgressTagType(), companyProgressText(), companyGroupProgress()
|
|
||||||
|
|
||||||
### Community 45 - "Community 45"
|
|
||||||
Cohesion: 0.25
|
|
||||||
Nodes (2): handleTouchEnd(), setTransition()
|
|
||||||
|
|
||||||
### Community 46 - "Community 46"
|
|
||||||
Cohesion: 0.28
|
Cohesion: 0.28
|
||||||
Nodes (1): FireworkSystem
|
Nodes (1): FireworkSystem
|
||||||
|
|
||||||
### Community 48 - "Community 48"
|
### Community 49 - "Community 49"
|
||||||
|
Cohesion: 0.25
|
||||||
|
Nodes (2): handleTouchEnd(), setTransition()
|
||||||
|
|
||||||
|
### Community 51 - "Community 51"
|
||||||
|
Cohesion: 0.28
|
||||||
|
Nodes (4): fetchMyProductionMaterialConsumptions(), handleReset(), handleSearch(), loadData()
|
||||||
|
|
||||||
|
### Community 52 - "Community 52"
|
||||||
Cohesion: 0.28
|
Cohesion: 0.28
|
||||||
Nodes (4): isActiveHistoryInstance(), isUploadPreviewLabel(), previewColumnMinWidth(), syncWorktabTitle()
|
Nodes (4): isActiveHistoryInstance(), isUploadPreviewLabel(), previewColumnMinWidth(), syncWorktabTitle()
|
||||||
|
|
||||||
### Community 51 - "Community 51"
|
### Community 55 - "Community 55"
|
||||||
Cohesion: 0.39
|
Cohesion: 0.39
|
||||||
Nodes (6): isIgnorableScriptError(), normalizeErrorMessage(), registerPromiseErrorHandler(), registerResourceErrorHandler(), scriptErrorHandler(), setupErrorHandle()
|
Nodes (6): isIgnorableScriptError(), normalizeErrorMessage(), registerPromiseErrorHandler(), registerResourceErrorHandler(), scriptErrorHandler(), setupErrorHandle()
|
||||||
|
|
||||||
### Community 52 - "Community 52"
|
### Community 56 - "Community 56"
|
||||||
Cohesion: 0.36
|
Cohesion: 0.36
|
||||||
Nodes (1): TableHeightCalculator
|
Nodes (1): TableHeightCalculator
|
||||||
|
|
||||||
### Community 54 - "Community 54"
|
### Community 58 - "Community 58"
|
||||||
Cohesion: 0.33
|
Cohesion: 0.33
|
||||||
Nodes (2): logApiCryptoBootInfo(), maskSecret()
|
Nodes (2): logApiCryptoBootInfo(), maskSecret()
|
||||||
|
|
||||||
### Community 55 - "Community 55"
|
### Community 59 - "Community 59"
|
||||||
Cohesion: 0.38
|
Cohesion: 0.38
|
||||||
Nodes (4): handleFocus(), handleInput(), parseDecimalToNumber(), sanitizeDecimalInput()
|
Nodes (4): handleFocus(), handleInput(), parseDecimalToNumber(), sanitizeDecimalInput()
|
||||||
|
|
||||||
### Community 56 - "Community 56"
|
### Community 60 - "Community 60"
|
||||||
Cohesion: 0.29
|
|
||||||
Nodes (2): fetchStorageReleaseReviewDetail(), fetchStorageReleaseReviewList()
|
|
||||||
|
|
||||||
### Community 57 - "Community 57"
|
|
||||||
Cohesion: 0.4
|
Cohesion: 0.4
|
||||||
Nodes (2): isUnfinishedQcWorkOrder(), resolveQcWorkOrderUnfinishedBadgeCount()
|
Nodes (2): isUnfinishedQcWorkOrder(), resolveQcWorkOrderUnfinishedBadgeCount()
|
||||||
|
|
||||||
### Community 58 - "Community 58"
|
### Community 61 - "Community 61"
|
||||||
Cohesion: 0.47
|
Cohesion: 0.47
|
||||||
Nodes (3): isPaymentDueWithinWarnWindow(), parsePaymentDueYmd(), startOfLocalDay()
|
Nodes (3): isPaymentDueWithinWarnWindow(), parsePaymentDueYmd(), startOfLocalDay()
|
||||||
|
|
||||||
### Community 59 - "Community 59"
|
### Community 62 - "Community 62"
|
||||||
Cohesion: 0.5
|
Cohesion: 0.5
|
||||||
Nodes (2): formatProtocolDocDeleteConfirm(), formatProtocolDocSubject()
|
Nodes (2): formatProtocolDocDeleteConfirm(), formatProtocolDocSubject()
|
||||||
|
|
||||||
### Community 60 - "Community 60"
|
### Community 63 - "Community 63"
|
||||||
Cohesion: 0.5
|
Cohesion: 0.5
|
||||||
Nodes (2): parseEquipmentIds(), syncEquipmentNamesFromOptions()
|
Nodes (2): parseEquipmentIds(), syncEquipmentNamesFromOptions()
|
||||||
|
|
||||||
### Community 62 - "Community 62"
|
### Community 65 - "Community 65"
|
||||||
Cohesion: 0.5
|
Cohesion: 0.5
|
||||||
Nodes (2): focusInput(), handleKeydown()
|
Nodes (2): focusInput(), handleKeydown()
|
||||||
|
|
||||||
### Community 65 - "Community 65"
|
### Community 68 - "Community 68"
|
||||||
Cohesion: 0.67
|
Cohesion: 0.67
|
||||||
Nodes (2): if(), logSidebarMenu()
|
Nodes (2): if(), logSidebarMenu()
|
||||||
|
|
||||||
### Community 67 - "Community 67"
|
### Community 74 - "Community 74"
|
||||||
Cohesion: 0.5
|
|
||||||
Nodes (1): fetchQcSmsList()
|
|
||||||
|
|
||||||
### Community 72 - "Community 72"
|
|
||||||
Cohesion: 1.0
|
Cohesion: 1.0
|
||||||
Nodes (2): getSettingDefaults(), resetToDefaults()
|
Nodes (2): getSettingDefaults(), resetToDefaults()
|
||||||
|
|
||||||
### Community 74 - "Community 74"
|
### Community 76 - "Community 76"
|
||||||
Cohesion: 1.0
|
Cohesion: 1.0
|
||||||
Nodes (2): buildOvertimeKitChildren(), uniqueId()
|
Nodes (2): buildOvertimeKitChildren(), uniqueId()
|
||||||
|
|
||||||
### Community 75 - "Community 75"
|
### Community 77 - "Community 77"
|
||||||
Cohesion: 1.0
|
Cohesion: 1.0
|
||||||
Nodes (2): buildLeaveKitChildren(), uniqueId()
|
Nodes (2): buildLeaveKitChildren(), uniqueId()
|
||||||
|
|
||||||
### Community 77 - "Community 77"
|
### Community 79 - "Community 79"
|
||||||
Cohesion: 1.0
|
Cohesion: 1.0
|
||||||
Nodes (2): buildConfirmationKitChildren(), uniqueId()
|
Nodes (2): buildConfirmationKitChildren(), uniqueId()
|
||||||
|
|
||||||
### Community 78 - "Community 78"
|
### Community 80 - "Community 80"
|
||||||
Cohesion: 1.0
|
Cohesion: 1.0
|
||||||
Nodes (2): buildResignationKitChildren(), uniqueId()
|
Nodes (2): buildResignationKitChildren(), uniqueId()
|
||||||
|
|
||||||
### Community 79 - "Community 79"
|
### Community 81 - "Community 81"
|
||||||
Cohesion: 1.0
|
Cohesion: 1.0
|
||||||
Nodes (2): copyTextToClipboard(), copyTextWithFallback()
|
Nodes (2): copyTextToClipboard(), copyTextWithFallback()
|
||||||
|
|
||||||
### Community 83 - "Community 83"
|
### Community 85 - "Community 85"
|
||||||
Cohesion: 1.0
|
Cohesion: 1.0
|
||||||
Nodes (2): getSourceProtocolAttachment(), normalizeAttachmentFiles()
|
Nodes (2): getSourceProtocolAttachment(), normalizeAttachmentFiles()
|
||||||
|
|
||||||
### Community 96 - "Community 96"
|
### Community 98 - "Community 98"
|
||||||
Cohesion: 1.0
|
Cohesion: 1.0
|
||||||
Nodes (2): emptyTabCounts(), useProductionWorkOrderTabStepCounts()
|
Nodes (2): emptyTabCounts(), useProductionWorkOrderTabStepCounts()
|
||||||
|
|
||||||
### Community 99 - "Community 99"
|
### Community 101 - "Community 101"
|
||||||
Cohesion: 1.0
|
Cohesion: 1.0
|
||||||
Nodes (2): initialProgress(), useQcWorkOrderAttachmentExport()
|
Nodes (2): initialProgress(), useQcWorkOrderAttachmentExport()
|
||||||
|
|
||||||
### Community 100 - "Community 100"
|
### Community 102 - "Community 102"
|
||||||
Cohesion: 1.0
|
Cohesion: 1.0
|
||||||
Nodes (2): emptyTabCounts(), useQcWorkOrderTabUnfinishedCounts()
|
Nodes (2): emptyTabCounts(), useQcWorkOrderTabUnfinishedCounts()
|
||||||
|
|
||||||
## Knowledge Gaps
|
## Knowledge Gaps
|
||||||
- **Thin community `Community 24`** (42 nodes): `WebSocketClient`, `.calculateReconnectDelay()`, `.clearAllTimers()`, `.clearConnectionTimers()`, `.clearTimer()`, `.close()`, `.closeCurrentSocketForReconnect()`, `.connect()`, `.connectionStatusText()`, `.constructor()`, `.destroyInstance()`, `.flushMessageQueue()`, `.getInstance()`, `.getReadyStateText()`, `.handleClose()`, `.handleConnectionTimeout()`, `.handleError()`, `.handleMessage()`, `.handleOpen()`, `.init()`, `.isWebSocketConnected()`, `.reconnect()`, `.resetHeartbeat()`, `.send()`, `.startHeartbeat()`, `.startPing()`, `TableCache`, `.cleanupExpired()`, `.clear()`, `.clearByTags()`, `.clearCurrentSearch()`, `.clearPagination()`, `.constructor()`, `.evictLRU()`, `.generateKey()`, `.generateTags()`, `.get()`, `.getStats()`, `.log()`, `.set()`, `index.ts`, `tableCache.ts`
|
- **Thin community `Community 24`** (42 nodes): `WebSocketClient`, `.calculateReconnectDelay()`, `.clearAllTimers()`, `.clearConnectionTimers()`, `.clearTimer()`, `.close()`, `.closeCurrentSocketForReconnect()`, `.connect()`, `.connectionStatusText()`, `.constructor()`, `.destroyInstance()`, `.flushMessageQueue()`, `.getInstance()`, `.getReadyStateText()`, `.handleClose()`, `.handleConnectionTimeout()`, `.handleError()`, `.handleMessage()`, `.handleOpen()`, `.init()`, `.isWebSocketConnected()`, `.reconnect()`, `.resetHeartbeat()`, `.send()`, `.startHeartbeat()`, `.startPing()`, `TableCache`, `.cleanupExpired()`, `.clear()`, `.clearByTags()`, `.clearCurrentSearch()`, `.clearPagination()`, `.constructor()`, `.evictLRU()`, `.generateKey()`, `.generateTags()`, `.get()`, `.getStats()`, `.log()`, `.set()`, `index.ts`, `tableCache.ts`
|
||||||
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
||||||
- **Thin community `Community 45`** (9 nodes): `cleanupEventListeners()`, `handleTouchEnd()`, `handleTouchMove()`, `handleTouchStart()`, `handleWheelScroll()`, `if()`, `setTransition()`, `setupEventListeners()`, `index.vue`
|
- **Thin community `Community 48`** (9 nodes): `FireworkSystem`, `.constructor()`, `.createFirework()`, `.createParticle()`, `.getAvailableParticle()`, `.initializePool()`, `.preloadAllImages()`, `.preloadImage()`, `index.vue`
|
||||||
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
||||||
- **Thin community `Community 46`** (9 nodes): `FireworkSystem`, `.constructor()`, `.createFirework()`, `.createParticle()`, `.getAvailableParticle()`, `.initializePool()`, `.preloadAllImages()`, `.preloadImage()`, `index.vue`
|
- **Thin community `Community 49`** (9 nodes): `cleanupEventListeners()`, `handleTouchEnd()`, `handleTouchMove()`, `handleTouchStart()`, `handleWheelScroll()`, `if()`, `setTransition()`, `setupEventListeners()`, `index.vue`
|
||||||
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
||||||
- **Thin community `Community 52`** (8 nodes): `TableHeightCalculator`, `.calculate()`, `.calculateOffset()`, `.calculatePaginationOffset()`, `.constructor()`, `.getHeaderHeight()`, `useTableHeight()`, `useTableHeight.ts`
|
- **Thin community `Community 56`** (8 nodes): `TableHeightCalculator`, `.calculate()`, `.calculateOffset()`, `.calculatePaginationOffset()`, `.constructor()`, `.getHeaderHeight()`, `useTableHeight()`, `useTableHeight.ts`
|
||||||
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
||||||
- **Thin community `Community 54`** (7 nodes): `App.vue`, `main.ts`, `refreshButtonAutoIcons()`, `refreshPanelTitleIcons()`, `logApiCryptoBootInfo()`, `maskSecret()`, `console.ts`
|
- **Thin community `Community 58`** (7 nodes): `App.vue`, `main.ts`, `refreshButtonAutoIcons()`, `refreshPanelTitleIcons()`, `logApiCryptoBootInfo()`, `maskSecret()`, `console.ts`
|
||||||
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
||||||
- **Thin community `Community 56`** (7 nodes): `batchReviewStorageRelease()`, `batchStoreSample()`, `fetchStorageReleaseReviewDetail()`, `fetchStorageReleaseReviewList()`, `storeSample()`, `submitStorageReleaseReview()`, `storage-release-review.ts`
|
- **Thin community `Community 60`** (6 nodes): `formatQcWorkOrderUnfinishedBadgeCount()`, `isUnfinishedQcWorkOrder()`, `qcWorkOrderUnfinishedBadgeTitle()`, `resolveQcWorkOrderUnfinishedBadgeCount()`, `sumQcWorkOrderGroupUnfinishedBadgeCount()`, `qc-work-order-unfinished-badge.ts`
|
||||||
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
||||||
- **Thin community `Community 57`** (6 nodes): `formatQcWorkOrderUnfinishedBadgeCount()`, `isUnfinishedQcWorkOrder()`, `qcWorkOrderUnfinishedBadgeTitle()`, `resolveQcWorkOrderUnfinishedBadgeCount()`, `sumQcWorkOrderGroupUnfinishedBadgeCount()`, `qc-work-order-unfinished-badge.ts`
|
- **Thin community `Community 62`** (5 nodes): `formatProtocolDocBatchDeleteConfirm()`, `formatProtocolDocDeleteConfirm()`, `formatProtocolDocSubject()`, `getProtocolDocTypeLabel()`, `protocol-doc-label.ts`
|
||||||
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
||||||
- **Thin community `Community 59`** (5 nodes): `formatProtocolDocBatchDeleteConfirm()`, `formatProtocolDocDeleteConfirm()`, `formatProtocolDocSubject()`, `getProtocolDocTypeLabel()`, `protocol-doc-label.ts`
|
- **Thin community `Community 63`** (5 nodes): `equipmentOptionLabel()`, `joinEquipmentIds()`, `parseEquipmentIds()`, `syncEquipmentNamesFromOptions()`, `equipment-select.ts`
|
||||||
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
||||||
- **Thin community `Community 60`** (5 nodes): `equipmentOptionLabel()`, `joinEquipmentIds()`, `parseEquipmentIds()`, `syncEquipmentNamesFromOptions()`, `equipment-select.ts`
|
- **Thin community `Community 65`** (5 nodes): `focusInput()`, `handleKeydown()`, `if()`, `search()`, `index.vue`
|
||||||
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
||||||
- **Thin community `Community 62`** (5 nodes): `focusInput()`, `handleKeydown()`, `if()`, `search()`, `index.vue`
|
- **Thin community `Community 68`** (4 nodes): `if()`, `logSidebarMenu()`, `index.vue`, `SidebarSubmenu.vue`
|
||||||
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
||||||
- **Thin community `Community 65`** (4 nodes): `if()`, `logSidebarMenu()`, `index.vue`, `SidebarSubmenu.vue`
|
- **Thin community `Community 74`** (3 nodes): `getSettingDefaults()`, `resetToDefaults()`, `setting.ts`
|
||||||
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
||||||
- **Thin community `Community 67`** (4 nodes): `fetchGenerateQcSms()`, `fetchQcSmsList()`, `fetchToggleQcSmsNotified()`, `qc-sms-notification.ts`
|
- **Thin community `Community 76`** (3 nodes): `buildOvertimeKitChildren()`, `oa-overtime-kit-rule.ts`, `uniqueId()`
|
||||||
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
||||||
- **Thin community `Community 72`** (3 nodes): `getSettingDefaults()`, `resetToDefaults()`, `setting.ts`
|
- **Thin community `Community 77`** (3 nodes): `buildLeaveKitChildren()`, `oa-leave-kit-rule.ts`, `uniqueId()`
|
||||||
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
||||||
- **Thin community `Community 74`** (3 nodes): `buildOvertimeKitChildren()`, `oa-overtime-kit-rule.ts`, `uniqueId()`
|
- **Thin community `Community 79`** (3 nodes): `buildConfirmationKitChildren()`, `oa-confirmation-kit-rule.ts`, `uniqueId()`
|
||||||
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
||||||
- **Thin community `Community 75`** (3 nodes): `buildLeaveKitChildren()`, `oa-leave-kit-rule.ts`, `uniqueId()`
|
- **Thin community `Community 80`** (3 nodes): `buildResignationKitChildren()`, `oa-resignation-kit-rule.ts`, `uniqueId()`
|
||||||
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
||||||
- **Thin community `Community 77`** (3 nodes): `buildConfirmationKitChildren()`, `oa-confirmation-kit-rule.ts`, `uniqueId()`
|
- **Thin community `Community 81`** (3 nodes): `copyTextToClipboard()`, `copyTextWithFallback()`, `copy-text.ts`
|
||||||
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
||||||
- **Thin community `Community 78`** (3 nodes): `buildResignationKitChildren()`, `oa-resignation-kit-rule.ts`, `uniqueId()`
|
- **Thin community `Community 85`** (3 nodes): `getSourceProtocolAttachment()`, `normalizeAttachmentFiles()`, `protocol-source-attachment.ts`
|
||||||
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
||||||
- **Thin community `Community 79`** (3 nodes): `copyTextToClipboard()`, `copyTextWithFallback()`, `copy-text.ts`
|
- **Thin community `Community 98`** (3 nodes): `emptyTabCounts()`, `useProductionWorkOrderTabStepCounts()`, `useProductionWorkOrderTabStepCounts.ts`
|
||||||
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
||||||
- **Thin community `Community 83`** (3 nodes): `getSourceProtocolAttachment()`, `normalizeAttachmentFiles()`, `protocol-source-attachment.ts`
|
- **Thin community `Community 101`** (3 nodes): `initialProgress()`, `useQcWorkOrderAttachmentExport()`, `useQcWorkOrderAttachmentExport.ts`
|
||||||
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
||||||
- **Thin community `Community 96`** (3 nodes): `emptyTabCounts()`, `useProductionWorkOrderTabStepCounts()`, `useProductionWorkOrderTabStepCounts.ts`
|
- **Thin community `Community 102`** (3 nodes): `emptyTabCounts()`, `useQcWorkOrderTabUnfinishedCounts()`, `useQcWorkOrderTabUnfinishedCounts.ts`
|
||||||
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
|
||||||
- **Thin community `Community 99`** (3 nodes): `initialProgress()`, `useQcWorkOrderAttachmentExport()`, `useQcWorkOrderAttachmentExport.ts`
|
|
||||||
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
|
||||||
- **Thin community `Community 100`** (3 nodes): `emptyTabCounts()`, `useQcWorkOrderTabUnfinishedCounts()`, `useQcWorkOrderTabUnfinishedCounts.ts`
|
|
||||||
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
||||||
|
|
||||||
## Suggested Questions
|
## Suggested Questions
|
||||||
_Questions this graph is uniquely positioned to answer:_
|
_Questions this graph is uniquely positioned to answer:_
|
||||||
|
|
||||||
- **Why does `push()` connect `Community 1` to `Community 0`, `Community 2`, `Community 3`, `Community 4`, `Community 5`, `Community 6`, `Community 9`, `Community 10`, `Community 11`, `Community 12`, `Community 13`, `Community 14`, `Community 15`, `Community 16`, `Community 17`, `Community 19`, `Community 20`, `Community 22`, `Community 23`, `Community 24`, `Community 26`, `Community 28`, `Community 29`, `Community 30`, `Community 31`, `Community 32`, `Community 46`?**
|
- **Why does `push()` connect `Community 1` to `Community 0`, `Community 2`, `Community 3`, `Community 4`, `Community 6`, `Community 7`, `Community 9`, `Community 11`, `Community 12`, `Community 13`, `Community 14`, `Community 15`, `Community 16`, `Community 17`, `Community 18`, `Community 19`, `Community 21`, `Community 22`, `Community 24`, `Community 25`, `Community 27`, `Community 28`, `Community 30`, `Community 32`, `Community 33`, `Community 35`, `Community 46`, `Community 48`?**
|
||||||
_High betweenness centrality (0.339) - this node is a cross-community bridge._
|
_High betweenness centrality (0.324) - this node is a cross-community bridge._
|
||||||
- **Why does `get()` connect `Community 0` to `Community 1`, `Community 2`, `Community 3`, `Community 4`, `Community 5`, `Community 6`, `Community 8`, `Community 9`, `Community 10`, `Community 13`, `Community 14`, `Community 15`, `Community 16`, `Community 17`, `Community 18`, `Community 19`, `Community 20`, `Community 21`, `Community 26`, `Community 27`, `Community 29`, `Community 30`, `Community 32`, `Community 34`, `Community 40`, `Community 43`, `Community 56`, `Community 67`?**
|
- **Why does `get()` connect `Community 0` to `Community 1`, `Community 2`, `Community 3`, `Community 4`, `Community 6`, `Community 7`, `Community 8`, `Community 9`, `Community 10`, `Community 11`, `Community 12`, `Community 15`, `Community 16`, `Community 17`, `Community 18`, `Community 19`, `Community 20`, `Community 21`, `Community 23`, `Community 27`, `Community 29`, `Community 30`, `Community 31`, `Community 32`, `Community 34`, `Community 35`, `Community 36`, `Community 42`, `Community 45`, `Community 47`, `Community 51`?**
|
||||||
_High betweenness centrality (0.239) - this node is a cross-community bridge._
|
_High betweenness centrality (0.239) - this node is a cross-community bridge._
|
||||||
- **Why does `handleDynamicRoutes()` connect `Community 7` to `Community 32`, `Community 5`, `Community 9`, `Community 11`, `Community 16`, `Community 19`, `Community 23`?**
|
- **Why does `handleDynamicRoutes()` connect `Community 5` to `Community 34`, `Community 35`, `Community 4`, `Community 13`, `Community 19`, `Community 30`?**
|
||||||
_High betweenness centrality (0.039) - this node is a cross-community bridge._
|
_High betweenness centrality (0.033) - this node is a cross-community bridge._
|
||||||
- **Are the 316 inferred relationships involving `get()` (e.g. with `resolveStorageSlotRangeFill()` and `buildNodeCodePathFromFlat()`) actually correct?**
|
- **Are the 316 inferred relationships involving `get()` (e.g. with `resolveStorageSlotRangeFill()` and `buildNodeCodePathFromFlat()`) actually correct?**
|
||||||
_`get()` has 316 INFERRED edges - model-reasoned connections that need verification._
|
_`get()` has 316 INFERRED edges - model-reasoned connections that need verification._
|
||||||
- **Are the 127 inferred relationships involving `push()` (e.g. with `refreshQcMenuBadges()` and `collectLeafFacilityNodesInTreeOrder()`) actually correct?**
|
- **Are the 127 inferred relationships involving `push()` (e.g. with `refreshQcMenuBadges()` and `collectLeafFacilityNodesInTreeOrder()`) actually correct?**
|
||||||
|
|||||||
@@ -57,12 +57,12 @@
|
|||||||
</div>
|
</div>
|
||||||
<div id="legend"></div>
|
<div id="legend"></div>
|
||||||
</div>
|
</div>
|
||||||
<div id="stats">3602 nodes · 5137 edges · 395 communities</div>
|
<div id="stats">3601 nodes · 5136 edges · 397 communities</div>
|
||||||
</div>
|
</div>
|
||||||
<script>
|
<script>
|
||||||
const RAW_NODES = [{"id": "app_vue", "label": "App.vue", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.3, "font": {"size": 0, "color": "#ffffff"}, "title": "App.vue", "community": 54, "community_name": "Community 54", "source_file": "App.vue", "file_type": "code", "degree": 3}, {"id": "src_app_refreshbuttonautoicons", "label": "refreshButtonAutoIcons()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.1, "font": {"size": 0, "color": "#ffffff"}, "title": "refreshButtonAutoIcons()", "community": 54, "community_name": "Community 54", "source_file": "App.vue", "file_type": "code", "degree": 1}, {"id": "src_app_refreshpaneltitleicons", "label": "refreshPanelTitleIcons()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.1, "font": {"size": 0, "color": "#ffffff"}, "title": "refreshPanelTitleIcons()", "community": 54, "community_name": "Community 54", "source_file": "App.vue", "file_type": "code", "degree": 1}, {"id": "main_ts", "label": "main.ts", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.4, "font": {"size": 0, "color": "#ffffff"}, "title": "main.ts", "community": 54, "community_name": "Community 54", "source_file": "main.ts", "file_type": "code", "degree": 4}, {"id": "src_main_masksecret", "label": "maskSecret()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "maskSecret()", "community": 54, "community_name": "Community 54", "source_file": "main.ts", "file_type": "code", "degree": 2}, {"id": "src_main_logapicryptobootinfo", "label": "logApiCryptoBootInfo()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "logApiCryptoBootInfo()", "community": 54, "community_name": "Community 54", "source_file": "main.ts", "file_type": "code", "degree": 2}, {"id": "env_d_ts", "label": "env.d.ts", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "env.d.ts", "community": 148, "community_name": "Community 148", "source_file": "env.d.ts", "file_type": "code", "degree": 0}, {"id": "shims_loose_d_ts", "label": "shims-loose.d.ts", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "shims-loose.d.ts", "community": 149, "community_name": "Community 149", "source_file": "shims-loose.d.ts", "file_type": "code", "degree": 0}, {"id": "directives_index_ts", "label": "index.ts", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.1, "font": {"size": 0, "color": "#ffffff"}, "title": "index.ts", "community": 33, "community_name": "Community 33", "source_file": "directives/index.ts", "file_type": "code", "degree": 1}, {"id": "directives_index_setupglobdirectives", "label": "setupGlobDirectives()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "setupGlobDirectives()", "community": 33, "community_name": "Community 33", "source_file": "directives/index.ts", "file_type": "code", "degree": 5}, {"id": "directives_core_roles_ts", "label": "roles.ts", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.3, "font": {"size": 0, "color": "#ffffff"}, "title": "roles.ts", "community": 33, "community_name": "Community 33", "source_file": "directives/core/roles.ts", "file_type": "code", "degree": 3}, {"id": "core_roles_checkrolepermission", "label": "checkRolePermission()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "checkRolePermission()", "community": 33, "community_name": "Community 33", "source_file": "directives/core/roles.ts", "file_type": "code", "degree": 2}, {"id": "core_roles_removeelement", "label": "removeElement()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "removeElement()", "community": 33, "community_name": "Community 33", "source_file": "directives/core/roles.ts", "file_type": "code", "degree": 2}, {"id": "core_roles_setuprolesdirective",Line truncated
|
const RAW_NODES = [{"id": "app_vue", "label": "App.vue", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 10.3, "font": {"size": 0, "color": "#ffffff"}, "title": "App.vue", "community": 58, "community_name": "Community 58", "source_file": "App.vue", "file_type": "code", "degree": 3}, {"id": "src_app_refreshbuttonautoicons", "label": "refreshButtonAutoIcons()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 10.1, "font": {"size": 0, "color": "#ffffff"}, "title": "refreshButtonAutoIcons()", "community": 58, "community_name": "Community 58", "source_file": "App.vue", "file_type": "code", "degree": 1}, {"id": "src_app_refreshpaneltitleicons", "label": "refreshPanelTitleIcons()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 10.1, "font": {"size": 0, "color": "#ffffff"}, "title": "refreshPanelTitleIcons()", "community": 58, "community_name": "Community 58", "source_file": "App.vue", "file_type": "code", "degree": 1}, {"id": "main_ts", "label": "main.ts", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 10.4, "font": {"size": 0, "color": "#ffffff"}, "title": "main.ts", "community": 58, "community_name": "Community 58", "source_file": "main.ts", "file_type": "code", "degree": 4}, {"id": "src_main_masksecret", "label": "maskSecret()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "maskSecret()", "community": 58, "community_name": "Community 58", "source_file": "main.ts", "file_type": "code", "degree": 2}, {"id": "src_main_logapicryptobootinfo", "label": "logApiCryptoBootInfo()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "logApiCryptoBootInfo()", "community": 58, "community_name": "Community 58", "source_file": "main.ts", "file_type": "code", "degree": 2}, {"id": "env_d_ts", "label": "env.d.ts", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "env.d.ts", "community": 150, "community_name": "Community 150", "source_file": "env.d.ts", "file_type": "code", "degree": 0}, {"id": "shims_loose_d_ts", "label": "shims-loose.d.ts", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "shims-loose.d.ts", "community": 151, "community_name": "Community 151", "source_file": "shims-loose.d.ts", "file_type": "code", "degree": 0}, {"id": "directives_index_ts", "label": "index.ts", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 10.1, "font": {"size": 0, "color": "#ffffff"}, "title": "index.ts", "community": 37, "community_name": "Community 37", "source_file": "directives/index.ts", "file_type": "code", "degree": 1}, {"id": "directives_index_setupglobdirectives", "label": "setupGlobDirectives()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "setupGlobDirectives()", "community": 37, "community_name": "Community 37", "source_file": "directives/index.ts", "file_type": "code", "degree": 5}, {"id": "directives_core_roles_ts", "label": "roles.ts", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 10.3, "font": {"size": 0, "color": "#ffffff"}, "title": "roles.ts", "community": 37, "community_name": "Community 37", "source_file": "directives/core/roles.ts", "file_type": "code", "degree": 3}, {"id": "core_roles_checkrolepermission", "label": "checkRolePermission()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "checkRolePermission()", "community": 37, "community_name": "Community 37", "source_file": "directives/core/roles.ts", "file_type": "code", "degree": 2}, {"id": "core_roles_removeelement", "label": "removeElement()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "removeElement()", "community": 37, "community_name": "Community 37", "source_file": "directives/core/roles.ts", "file_type": "code", "degree": 2}, {"id": "core_roles_setuprolesdirective",Line truncated
|
||||||
const RAW_EDGES = [{"from": "app_vue", "to": "src_app_refreshbuttonautoicons", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "app_vue", "to": "src_app_refreshpaneltitleicons", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "app_vue", "to": "main_ts", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "main_ts", "to": "utils_sys_console_ts", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "main_ts", "to": "src_main_masksecret", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "main_ts", "to": "src_main_logapicryptobootinfo", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_main_masksecret", "to": "src_main_logapicryptobootinfo", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "directives_index_ts", "to": "directives_index_setupglobdirectives", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "directives_index_setupglobdirectives", "to": "core_auth_setupauthdirective", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "directives_index_setupglobdirectives", "to": "core_roles_setuprolesdirective", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "directives_index_setupglobdirectives", "to": "business_highlight_setuphighlightdirective", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "directives_index_setupglobdirectives", "to": "business_ripple_setuprippledirective", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "directives_core_roles_ts", "to": "core_roles_checkrolepermission", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "directives_core_roles_ts", "to": "core_roles_removeelement", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "directives_core_roles_ts", "to": "core_roles_setuprolesdirective", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "core_roles_checkrolepermission", "to": "core_roles_removeelement", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "directives_core_auth_ts", "to": "core_auth_checkauthpermission", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "directives_core_auth_ts", "to": "core_auth_removeelement", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "directives_core_auth_ts", "to": "core_auth_setupauthdirective", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "core_auth_checkauthpermission", "to": "core_auth_removeelement", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "directives_business_ripple_ts", "to": "business_ripple_setuprippledirective", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "directives_business_highlight_ts", "to": "business_highlight_highlightcode", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "directives_business_highlight_ts", "to": "business_highlight_insertlinenumbers", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "directives_business_highlight_ts", "to": "business_highlight_addcopybutton", "label": "contains", "title": "contains [EXTRACTED]", "dLine truncated
|
const RAW_EDGES = [{"from": "app_vue", "to": "src_app_refreshbuttonautoicons", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "app_vue", "to": "src_app_refreshpaneltitleicons", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "app_vue", "to": "main_ts", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "main_ts", "to": "utils_sys_console_ts", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "main_ts", "to": "src_main_masksecret", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "main_ts", "to": "src_main_logapicryptobootinfo", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "src_main_masksecret", "to": "src_main_logapicryptobootinfo", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "directives_index_ts", "to": "directives_index_setupglobdirectives", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "directives_index_setupglobdirectives", "to": "core_auth_setupauthdirective", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "directives_index_setupglobdirectives", "to": "core_roles_setuprolesdirective", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "directives_index_setupglobdirectives", "to": "business_highlight_setuphighlightdirective", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "directives_index_setupglobdirectives", "to": "business_ripple_setuprippledirective", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "directives_core_roles_ts", "to": "core_roles_checkrolepermission", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "directives_core_roles_ts", "to": "core_roles_removeelement", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "directives_core_roles_ts", "to": "core_roles_setuprolesdirective", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "core_roles_checkrolepermission", "to": "core_roles_removeelement", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "directives_core_auth_ts", "to": "core_auth_checkauthpermission", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "directives_core_auth_ts", "to": "core_auth_removeelement", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "directives_core_auth_ts", "to": "core_auth_setupauthdirective", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "core_auth_checkauthpermission", "to": "core_auth_removeelement", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "directives_business_ripple_ts", "to": "business_ripple_setuprippledirective", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "directives_business_highlight_ts", "to": "business_highlight_highlightcode", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "directives_business_highlight_ts", "to": "business_highlight_insertlinenumbers", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "directives_business_highlight_ts", "to": "business_highlight_addcopybutton", "label": "contains", "title": "contains [EXTRACTED]", "dLine truncated
|
||||||
const LEGEND = [{"cid": 0, "color": "#4E79A7", "label": "Community 0", "count": 567}, {"cid": 1, "color": "#F28E2B", "label": "Community 1", "count": 130}, {"cid": 2, "color": "#E15759", "label": "Community 2", "count": 123}, {"cid": 3, "color": "#76B7B2", "label": "Community 3", "count": 120}, {"cid": 4, "color": "#59A14F", "label": "Community 4", "count": 119}, {"cid": 5, "color": "#EDC948", "label": "Community 5", "count": 110}, {"cid": 6, "color": "#B07AA1", "label": "Community 6", "count": 110}, {"cid": 7, "color": "#FF9DA7", "label": "Community 7", "count": 108}, {"cid": 8, "color": "#9C755F", "label": "Community 8", "count": 101}, {"cid": 9, "color": "#BAB0AC", "label": "Community 9", "count": 88}, {"cid": 10, "color": "#4E79A7", "label": "Community 10", "count": 86}, {"cid": 11, "color": "#F28E2B", "label": "Community 11", "count": 84}, {"cid": 12, "color": "#E15759", "label": "Community 12", "count": 83}, {"cid": 13, "color": "#76B7B2", "label": "Community 13", "count": 82}, {"cid": 14, "color": "#59A14F", "label": "Community 14", "count": 77}, {"cid": 15, "color": "#EDC948", "label": "Community 15", "count": 71}, {"cid": 16, "color": "#B07AA1", "label": "Community 16", "count": 69}, {"cid": 17, "color": "#FF9DA7", "label": "Community 17", "count": 69}, {"cid": 18, "color": "#9C755F", "label": "Community 18", "count": 61}, {"cid": 19, "color": "#BAB0AC", "label": "Community 19", "count": 57}, {"cid": 20, "color": "#4E79A7", "label": "Community 20", "count": 57}, {"cid": 21, "color": "#F28E2B", "label": "Community 21", "count": 51}, {"cid": 22, "color": "#E15759", "label": "Community 22", "count": 47}, {"cid": 23, "color": "#76B7B2", "label": "Community 23", "count": 44}, {"cid": 24, "color": "#59A14F", "label": "Community 24", "count": 42}, {"cid": 25, "color": "#EDC948", "label": "Community 25", "count": 37}, {"cid": 26, "color": "#B07AA1", "label": "Community 26", "count": 36}, {"cid": 27, "color": "#FF9DA7", "label": "Community 27", "count": 35}, {"cid": 28, "color": "#9C755F", "label": "Community 28", "count": 35}, {"cid": 29, "color": "#BAB0AC", "label": "Community 29", "count": 34}, {"cid": 30, "color": "#4E79A7", "label": "Community 30", "count": 33}, {"cid": 31, "color": "#F28E2B", "label": "Community 31", "count": 31}, {"cid": 32, "color": "#E15759", "label": "Community 32", "count": 25}, {"cid": 33, "color": "#76B7B2", "label": "Community 33", "count": 22}, {"cid": 34, "color": "#59A14F", "label": "Community 34", "count": 22}, {"cid": 35, "color": "#EDC948", "label": "Community 35", "count": 19}, {"cid": 36, "color": "#B07AA1", "label": "Community 36", "count": 17}, {"cid": 37, "color": "#FF9DA7", "label": "Community 37", "count": 17}, {"cid": 38, "color": "#9C755F", "label": "Community 38", "count": 16}, {"cid": 39, "color": "#BAB0AC", "label": "Community 39", "count": 14}, {"cid": 40, "color": "#4E79A7", "label": "Community 40", "count": 14}, {"cid": 41, "color": "#F28E2B", "label": "Community 41", "count": 13}, {"cid": 42, "color": "#E15759", "label": "Community 42", "count": 13}, {"cid": 43, "color": "#76B7B2", "label": "Community 43", "count": 9}, {"cid": 44, "color": "#59A14F", "label": "Community 44", "count": 9}, {"cid": 45, "color": "#EDC948", "label": "Community 45", "count": 9}, {"cid": 46, "color": "#B07AA1", "label": "Community 46", "count": 9}, {"cid": 47, "color": "#FF9DA7", "label": "Community 47", "count": 9}, {"cid": 48, "color": "#9C755F", "label": "Community 48", "count": 9}, {"cid": 49, "color": "#BAB0AC", "label": "Community 49", "count": 9}, {"cid": 50, "color": "#4E79A7", "label": "Community 50", "count": 9}, {"cid": 51, "color": "#F28E2B", "label": "Community 51", "count": 8}, {"cid": 52, "color": "#E15759", "label": "Community 52", "count": 8}, {"cid": 53, "color": "#76B7B2", "label": "Community 53", "count": 8}, {"cid": 54, "color": "#59A14F", "label": "Community 54", "count": 7}, {"cid": 55, "color": "#EDC948", "label": "Community 55", "count": 7}, {"cid": 56, "color": "#B07AA1", "label": "Community 56", "count": 7}, {"cid": 57, "color": "#FF9DA7", "label": "Community 57", "count": 6}, {"cid": 58, "color": "#9C755F", "label": "Community 58", "count": 6}, {"cid": 59, "color": "#BAB0AC", "label": "Community 59", "count": 5}, {"cid": 60, "color": "#4E79A7", "label": "Community 60", "count": 5}, {"cid": 61, "color": "#F28E2B", "label": "Community 61", "count": 5}, {"cid": 62, "color": "#E15759", "label": "Community 62", "count": 5}, {"cid": 63, "color": "#76B7B2", "label": "Community 63", "count": 4}, {"cid": 64, "color": "#59A14F", "label": "Community 64", "count": 4}, {"cid": 65, "color": "#EDC948", "label": "Community 65", "count": 4}, {"cid": 66, "color": "#B07AA1", "label": "Community 66", "count": 4}, {"cid": 67, "color": "#FF9DA7", "label": "Community 67", "count": 4}, {"cid": 68, "color": "#9C755F", "label": "Community 68", "count": 4}, {"cid": 69, "color": "#BAB0AC", "label": "Community 69", "count": 4}, {"cid": 70, "color": "#4E79A7", "label": "CommunityLine truncated
|
const LEGEND = [{"cid": 0, "color": "#4E79A7", "label": "Community 0", "count": 494}, {"cid": 1, "color": "#F28E2B", "label": "Community 1", "count": 129}, {"cid": 2, "color": "#E15759", "label": "Community 2", "count": 117}, {"cid": 3, "color": "#76B7B2", "label": "Community 3", "count": 110}, {"cid": 4, "color": "#59A14F", "label": "Community 4", "count": 110}, {"cid": 5, "color": "#EDC948", "label": "Community 5", "count": 101}, {"cid": 6, "color": "#B07AA1", "label": "Community 6", "count": 99}, {"cid": 7, "color": "#FF9DA7", "label": "Community 7", "count": 97}, {"cid": 8, "color": "#9C755F", "label": "Community 8", "count": 96}, {"cid": 9, "color": "#BAB0AC", "label": "Community 9", "count": 92}, {"cid": 10, "color": "#4E79A7", "label": "Community 10", "count": 92}, {"cid": 11, "color": "#F28E2B", "label": "Community 11", "count": 90}, {"cid": 12, "color": "#E15759", "label": "Community 12", "count": 86}, {"cid": 13, "color": "#76B7B2", "label": "Community 13", "count": 84}, {"cid": 14, "color": "#59A14F", "label": "Community 14", "count": 83}, {"cid": 15, "color": "#EDC948", "label": "Community 15", "count": 79}, {"cid": 16, "color": "#B07AA1", "label": "Community 16", "count": 71}, {"cid": 17, "color": "#FF9DA7", "label": "Community 17", "count": 69}, {"cid": 18, "color": "#9C755F", "label": "Community 18", "count": 57}, {"cid": 19, "color": "#BAB0AC", "label": "Community 19", "count": 54}, {"cid": 20, "color": "#4E79A7", "label": "Community 20", "count": 53}, {"cid": 21, "color": "#F28E2B", "label": "Community 21", "count": 53}, {"cid": 22, "color": "#E15759", "label": "Community 22", "count": 47}, {"cid": 23, "color": "#76B7B2", "label": "Community 23", "count": 46}, {"cid": 24, "color": "#59A14F", "label": "Community 24", "count": 42}, {"cid": 25, "color": "#EDC948", "label": "Community 25", "count": 41}, {"cid": 26, "color": "#B07AA1", "label": "Community 26", "count": 37}, {"cid": 27, "color": "#FF9DA7", "label": "Community 27", "count": 36}, {"cid": 28, "color": "#9C755F", "label": "Community 28", "count": 35}, {"cid": 29, "color": "#BAB0AC", "label": "Community 29", "count": 35}, {"cid": 30, "color": "#4E79A7", "label": "Community 30", "count": 35}, {"cid": 31, "color": "#F28E2B", "label": "Community 31", "count": 34}, {"cid": 32, "color": "#E15759", "label": "Community 32", "count": 33}, {"cid": 33, "color": "#76B7B2", "label": "Community 33", "count": 31}, {"cid": 34, "color": "#59A14F", "label": "Community 34", "count": 28}, {"cid": 35, "color": "#EDC948", "label": "Community 35", "count": 25}, {"cid": 36, "color": "#B07AA1", "label": "Community 36", "count": 24}, {"cid": 37, "color": "#FF9DA7", "label": "Community 37", "count": 22}, {"cid": 38, "color": "#9C755F", "label": "Community 38", "count": 19}, {"cid": 39, "color": "#BAB0AC", "label": "Community 39", "count": 17}, {"cid": 40, "color": "#4E79A7", "label": "Community 40", "count": 17}, {"cid": 41, "color": "#F28E2B", "label": "Community 41", "count": 16}, {"cid": 42, "color": "#E15759", "label": "Community 42", "count": 14}, {"cid": 43, "color": "#76B7B2", "label": "Community 43", "count": 13}, {"cid": 44, "color": "#59A14F", "label": "Community 44", "count": 13}, {"cid": 45, "color": "#EDC948", "label": "Community 45", "count": 13}, {"cid": 46, "color": "#B07AA1", "label": "Community 46", "count": 10}, {"cid": 47, "color": "#FF9DA7", "label": "Community 47", "count": 9}, {"cid": 48, "color": "#9C755F", "label": "Community 48", "count": 9}, {"cid": 49, "color": "#BAB0AC", "label": "Community 49", "count": 9}, {"cid": 50, "color": "#4E79A7", "label": "Community 50", "count": 9}, {"cid": 51, "color": "#F28E2B", "label": "Community 51", "count": 9}, {"cid": 52, "color": "#E15759", "label": "Community 52", "count": 9}, {"cid": 53, "color": "#76B7B2", "label": "Community 53", "count": 9}, {"cid": 54, "color": "#59A14F", "label": "Community 54", "count": 9}, {"cid": 55, "color": "#EDC948", "label": "Community 55", "count": 8}, {"cid": 56, "color": "#B07AA1", "label": "Community 56", "count": 8}, {"cid": 57, "color": "#FF9DA7", "label": "Community 57", "count": 8}, {"cid": 58, "color": "#9C755F", "label": "Community 58", "count": 7}, {"cid": 59, "color": "#BAB0AC", "label": "Community 59", "count": 7}, {"cid": 60, "color": "#4E79A7", "label": "Community 60", "count": 6}, {"cid": 61, "color": "#F28E2B", "label": "Community 61", "count": 6}, {"cid": 62, "color": "#E15759", "label": "Community 62", "count": 5}, {"cid": 63, "color": "#76B7B2", "label": "Community 63", "count": 5}, {"cid": 64, "color": "#59A14F", "label": "Community 64", "count": 5}, {"cid": 65, "color": "#EDC948", "label": "Community 65", "count": 5}, {"cid": 66, "color": "#B07AA1", "label": "Community 66", "count": 4}, {"cid": 67, "color": "#FF9DA7", "label": "Community 67", "count": 4}, {"cid": 68, "color": "#9C755F", "label": "Community 68", "count": 4}, {"cid": 69, "color": "#BAB0AC", "label": "Community 69", "count": 4}, {"cid": 70, "color": "#4E79A7", "label": "CommunitLine truncated
|
||||||
|
|
||||||
// HTML-escape helper — prevents XSS when injecting graph data into innerHTML
|
// HTML-escape helper — prevents XSS when injecting graph data into innerHTML
|
||||||
function esc(s) {
|
function esc(s) {
|
||||||
|
|||||||
@@ -17,8 +17,8 @@
|
|||||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/types/common/index.ts": 1781272556.3597305,
|
"/Users/wuzilong/work/00code/zkxw/web-admin/src/types/common/index.ts": 1781272556.3597305,
|
||||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/types/directive/directive.d.ts": 1781272556.3601494,
|
"/Users/wuzilong/work/00code/zkxw/web-admin/src/types/directive/directive.d.ts": 1781272556.3601494,
|
||||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/types/api/api.d.ts": 1781272556.3606477,
|
"/Users/wuzilong/work/00code/zkxw/web-admin/src/types/api/api.d.ts": 1781272556.3606477,
|
||||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/types/import/components.d.ts": 1789362706.3178787,
|
"/Users/wuzilong/work/00code/zkxw/web-admin/src/types/import/components.d.ts": 1789611740.8245428,
|
||||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/types/import/auto-imports.d.ts": 1789362686.8080792,
|
"/Users/wuzilong/work/00code/zkxw/web-admin/src/types/import/auto-imports.d.ts": 1789611699.652026,
|
||||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/types/store/index.ts": 1787887312.735774,
|
"/Users/wuzilong/work/00code/zkxw/web-admin/src/types/store/index.ts": 1787887312.735774,
|
||||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/types/router/index.ts": 1787887320.8486114,
|
"/Users/wuzilong/work/00code/zkxw/web-admin/src/types/router/index.ts": 1787887320.8486114,
|
||||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/composables/useAttachmentActions.ts": 1788162977.6691713,
|
"/Users/wuzilong/work/00code/zkxw/web-admin/src/composables/useAttachmentActions.ts": 1788162977.6691713,
|
||||||
@@ -487,7 +487,7 @@
|
|||||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/post/index.vue": 1785912180.839225,
|
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/post/index.vue": 1785912180.839225,
|
||||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/category/index.vue": 1783326448.9218316,
|
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/category/index.vue": 1783326448.9218316,
|
||||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/express/index.vue": 1783326448.9225786,
|
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/express/index.vue": 1783326448.9225786,
|
||||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/user/index.vue": 1785912511.2949293,
|
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/user/index.vue": 1789612396.872853,
|
||||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/user/detail.vue": 1782893853.853974,
|
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/user/detail.vue": 1782893853.853974,
|
||||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/user/modules/user-dialog.vue": 1782893853.9540384,
|
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/user/modules/user-dialog.vue": 1782893853.9540384,
|
||||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/user/modules/user-search.vue": 1782893853.8827589,
|
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/user/modules/user-search.vue": 1782893853.8827589,
|
||||||
|
|||||||
@@ -612,6 +612,26 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** 编辑回填:按用户 ID 拉取主管详情写入选项(keyword 检索不含 id,不能用 UUID 搜) */
|
||||||
|
async function hydrateSupervisorOption(userId: string) {
|
||||||
|
const uid = (userId || '').trim()
|
||||||
|
if (!uid) {
|
||||||
|
supervisorUserOptions.value = []
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (supervisorUserOptions.value.some((u) => u.id === uid)) return
|
||||||
|
supervisorUserLoading.value = true
|
||||||
|
try {
|
||||||
|
const detail = await fetchUserDetail(uid)
|
||||||
|
supervisorUserOptions.value = [detail]
|
||||||
|
} catch (e) {
|
||||||
|
console.error('加载直属主管失败:', e)
|
||||||
|
supervisorUserOptions.value = []
|
||||||
|
} finally {
|
||||||
|
supervisorUserLoading.value = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const formRules = {
|
const formRules = {
|
||||||
userNo: [{ required: true, message: '请输入用户账号', trigger: 'blur' }],
|
userNo: [{ required: true, message: '请输入用户账号', trigger: 'blur' }],
|
||||||
nickName: [{ required: true, message: '请输入用户名', trigger: 'blur' }],
|
nickName: [{ required: true, message: '请输入用户名', trigger: 'blur' }],
|
||||||
@@ -731,14 +751,7 @@
|
|||||||
formData.orderNum = detail.orderNum ?? 0
|
formData.orderNum = detail.orderNum ?? 0
|
||||||
formData.remark = detail.remark || ''
|
formData.remark = detail.remark || ''
|
||||||
formData.postIds = detail.postIds ? [...detail.postIds] : []
|
formData.postIds = detail.postIds ? [...detail.postIds] : []
|
||||||
if (formData.supervisorUserId) {
|
await hydrateSupervisorOption(formData.supervisorUserId)
|
||||||
await remoteSearchSupervisorUsers(detail.nickName || '')
|
|
||||||
if (!supervisorUserOptions.value.some((u) => u.id === formData.supervisorUserId)) {
|
|
||||||
await remoteSearchSupervisorUsers(formData.supervisorUserId)
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
supervisorUserOptions.value = []
|
|
||||||
}
|
|
||||||
dialogVisible.value = true
|
dialogVisible.value = true
|
||||||
formRef.value?.clearValidate?.()
|
formRef.value?.clearValidate?.()
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
|||||||
Reference in new issue
Block a user