提交
This commit is contained in:
1 parent
28f233c922
commit
038a60b09e
478 files changed
+67530
-51951
No files matched your search
@@ -0,0 +1 @@
|
||||
59139
|
||||
@@ -205,6 +205,7 @@ class ProtocolUpdateBody(BaseModel):
|
||||
expire_desc: Optional[str] = Field(None, alias="expireDesc")
|
||||
void_time: Optional[str] = Field(None, alias="voidTime")
|
||||
void_desc: Optional[str] = Field(None, alias="voidDesc")
|
||||
void_type: Optional[str] = Field(None, alias="voidType")
|
||||
to_research_time: Optional[str] = Field(None, alias="toResearchTime")
|
||||
to_research_desc: Optional[str] = Field(None, alias="toResearchDesc")
|
||||
collector_user_id: Optional[str] = Field(None, alias="collectorUserId")
|
||||
|
||||
+44
-19
@@ -17,10 +17,27 @@ from app.crud import material_stock_batch as batch_svc
|
||||
from app.crud import material_stock_check as stock_check_svc
|
||||
from app.crud import material_usage as mu_svc
|
||||
from app.crud import material_stock_log as msl_svc
|
||||
from app.models.models import SysUser
|
||||
|
||||
router = APIRouter(prefix="/web/admin", tags=["市场物料"])
|
||||
|
||||
|
||||
def _resolve_operator_name(db: Session, user: dict, operator_name: Optional[str]) -> str:
|
||||
name = (operator_name or "").strip()
|
||||
if name:
|
||||
return name
|
||||
user_id = _get_current_user_id(user)
|
||||
if user_id:
|
||||
row = (
|
||||
db.query(SysUser)
|
||||
.filter(SysUser.id == user_id, SysUser.del_flag == 0)
|
||||
.first()
|
||||
)
|
||||
if row:
|
||||
return (row.nick_name or row.user_no or "").strip()
|
||||
return (user.get("real_name") or user.get("username") or "").strip()
|
||||
|
||||
|
||||
# ---------- Body models ----------
|
||||
|
||||
|
||||
@@ -54,31 +71,32 @@ class MaterialUpdateBody(BaseModel):
|
||||
|
||||
class StockInBody(BaseModel):
|
||||
model_config = ConfigDict(populate_by_name=True)
|
||||
stock_in_no: str = Field(..., alias="stockInNo")
|
||||
stock_in_date: str = Field(..., alias="stockInDate")
|
||||
expire_date: str = Field(..., alias="expireDate")
|
||||
catalog_no: str = Field(..., alias="catalogNo")
|
||||
batch_no: str = Field(..., alias="batchNo")
|
||||
manufacturer: str
|
||||
unit_price: float = Field(..., alias="unitPrice")
|
||||
amount: float
|
||||
qty: float = Field(..., gt=0)
|
||||
stock_in_no: Optional[str] = Field(None, alias="stockInNo")
|
||||
stock_in_date: Optional[str] = Field(None, alias="stockInDate")
|
||||
expire_date: Optional[str] = Field(None, alias="expireDate")
|
||||
catalog_no: Optional[str] = Field(None, alias="catalogNo")
|
||||
batch_no: Optional[str] = Field(None, alias="batchNo")
|
||||
manufacturer: Optional[str] = None
|
||||
unit_price: Optional[float] = Field(None, alias="unitPrice")
|
||||
amount: Optional[float] = None
|
||||
qty: Optional[float] = Field(None, ge=0)
|
||||
remark: Optional[str] = None
|
||||
stock_in_time: Optional[str] = Field(None, alias="stockInTime")
|
||||
operator_name: Optional[str] = Field(None, alias="operatorName")
|
||||
|
||||
|
||||
class BatchStockInItem(BaseModel):
|
||||
model_config = ConfigDict(populate_by_name=True)
|
||||
material_id: str = Field(..., alias="materialId")
|
||||
stock_in_no: str = Field(..., alias="stockInNo")
|
||||
stock_in_date: str = Field(..., alias="stockInDate")
|
||||
expire_date: str = Field(..., alias="expireDate")
|
||||
catalog_no: str = Field(..., alias="catalogNo")
|
||||
batch_no: str = Field(..., alias="batchNo")
|
||||
manufacturer: str
|
||||
unit_price: float = Field(..., alias="unitPrice")
|
||||
amount: float
|
||||
qty: float = Field(..., gt=0)
|
||||
stock_in_no: Optional[str] = Field(None, alias="stockInNo")
|
||||
stock_in_date: Optional[str] = Field(None, alias="stockInDate")
|
||||
expire_date: Optional[str] = Field(None, alias="expireDate")
|
||||
catalog_no: Optional[str] = Field(None, alias="catalogNo")
|
||||
batch_no: Optional[str] = Field(None, alias="batchNo")
|
||||
manufacturer: Optional[str] = None
|
||||
unit_price: Optional[float] = Field(None, alias="unitPrice")
|
||||
amount: Optional[float] = None
|
||||
qty: Optional[float] = Field(None, ge=0)
|
||||
remark: Optional[str] = None
|
||||
|
||||
|
||||
@@ -87,6 +105,7 @@ class BatchStockInBody(BaseModel):
|
||||
items: List[BatchStockInItem] = Field(..., min_length=1)
|
||||
remark: Optional[str] = None
|
||||
stock_in_time: Optional[str] = Field(None, alias="stockInTime")
|
||||
operator_name: Optional[str] = Field(None, alias="operatorName")
|
||||
|
||||
|
||||
class BatchStockOutItem(BaseModel):
|
||||
@@ -103,6 +122,7 @@ class BatchStockOutBody(BaseModel):
|
||||
purpose: Optional[str] = None
|
||||
remark: Optional[str] = None
|
||||
stock_out_time: Optional[str] = Field(None, alias="stockOutTime")
|
||||
operator_name: Optional[str] = Field(None, alias="operatorName")
|
||||
|
||||
|
||||
class BatchDiscardItem(BaseModel):
|
||||
@@ -119,6 +139,7 @@ class BatchDiscardBody(BaseModel):
|
||||
discard_reason: str = Field(..., alias="discardReason")
|
||||
remark: Optional[str] = None
|
||||
discard_time: Optional[str] = Field(None, alias="discardTime")
|
||||
operator_name: Optional[str] = Field(None, alias="operatorName")
|
||||
|
||||
|
||||
class MaterialBatchUpdateBody(BaseModel):
|
||||
@@ -414,6 +435,7 @@ async def batch_stock_in_material(
|
||||
db,
|
||||
items=items,
|
||||
remark=body.remark,
|
||||
operator_name=_resolve_operator_name(db, user, body.operator_name),
|
||||
tenant_no=tenant_no,
|
||||
user_id=user_id,
|
||||
operate_time=operate_time,
|
||||
@@ -450,6 +472,7 @@ async def batch_stock_out_material(
|
||||
receiver=body.receiver,
|
||||
purpose=body.purpose,
|
||||
remark=body.remark,
|
||||
operator_name=_resolve_operator_name(db, user, body.operator_name),
|
||||
tenant_no=tenant_no,
|
||||
user_id=user_id,
|
||||
operate_time=operate_time,
|
||||
@@ -492,6 +515,7 @@ async def batch_discard_material(
|
||||
items=items,
|
||||
discard_reason=body.discard_reason,
|
||||
remark=body.remark,
|
||||
operator_name=_resolve_operator_name(db, user, body.operator_name),
|
||||
tenant_no=tenant_no,
|
||||
user_id=user_id,
|
||||
operate_time=operate_time,
|
||||
@@ -530,8 +554,9 @@ async def stock_in_material(
|
||||
manufacturer=body.manufacturer,
|
||||
unit_price=body.unit_price,
|
||||
amount=body.amount,
|
||||
qty=Decimal(str(body.qty)),
|
||||
qty=body.qty,
|
||||
remark=body.remark,
|
||||
operator_name=_resolve_operator_name(db, user, body.operator_name),
|
||||
tenant_no=tenant_no,
|
||||
user_id=user_id,
|
||||
operate_time=operate_time,
|
||||
|
||||
@@ -1865,6 +1865,22 @@ async def list_production_work_order_cell_product_options(
|
||||
return error_response(400, str(e))
|
||||
|
||||
|
||||
@router.get("/production-work-orders/{wo_id}/qc-info")
|
||||
async def get_production_work_order_qc_info_api(
|
||||
wo_id: str,
|
||||
user: dict = Depends(require_admin_or_super_admin),
|
||||
db: Session = Depends(get_db),
|
||||
):
|
||||
try:
|
||||
tenant_no = _get_tenant_no(db, user)
|
||||
data = qc_work_order_svc.get_production_work_order_qc_info(
|
||||
db, production_work_order_id=wo_id, tenant_no=tenant_no
|
||||
)
|
||||
return success_response(data)
|
||||
except ValueError as e:
|
||||
return error_response(400, str(e))
|
||||
|
||||
|
||||
@router.post("/production-work-orders/{wo_id}/qc-work-orders")
|
||||
async def create_qc_work_order_from_production_api(
|
||||
wo_id: str,
|
||||
|
||||
@@ -34,6 +34,7 @@ from app.crud import qc_material as mat_svc
|
||||
from app.crud import qc_material_stock_batch as batch_svc
|
||||
from app.crud import qc_material_stock_check as stock_check_svc
|
||||
from app.crud import qc_material_usage as mu_svc
|
||||
from app.crud import inbound_sample_special as inbound_sample_special_svc
|
||||
from app.crud import qc_work_order as wo_svc
|
||||
from app.crud.collection_protocol import total_pages
|
||||
from app.api.sample_reception import _get_current_user_id, _get_tenant_no, _page_payload
|
||||
@@ -797,6 +798,47 @@ async def delete_qc_work_order_api(
|
||||
return error_response(400, str(e))
|
||||
|
||||
|
||||
class InboundSampleSpecialMarkBody(BaseModel):
|
||||
model_config = ConfigDict(populate_by_name=True)
|
||||
|
||||
reception_source: str = Field(..., alias="receptionSource")
|
||||
protocol_sample_id: str = Field(..., alias="protocolSampleId")
|
||||
is_special: bool = Field(..., alias="isSpecial")
|
||||
special_remark: Optional[str] = Field(None, alias="specialRemark")
|
||||
|
||||
|
||||
@router.put("/inbound-samples/special-mark")
|
||||
async def update_inbound_sample_special_mark(
|
||||
body: InboundSampleSpecialMarkBody,
|
||||
db: Session = Depends(get_db),
|
||||
user: dict = Depends(
|
||||
require_any_menu_code("biz:qcWorkOrder:list", "biz:myQcTask:list")
|
||||
),
|
||||
):
|
||||
try:
|
||||
tenant_no = _get_tenant_no(db, user)
|
||||
source = (body.reception_source or "").strip()
|
||||
if source not in ("cell_storage", "research_donation"):
|
||||
return error_response(400, "仅支持细胞存储或科研捐赠样本")
|
||||
data = inbound_sample_special_svc.update_inbound_sample_special_mark(
|
||||
db,
|
||||
tenant_no=tenant_no,
|
||||
reception_source=source,
|
||||
protocol_sample_id=body.protocol_sample_id,
|
||||
is_special=body.is_special,
|
||||
special_remark=body.special_remark,
|
||||
user_id=user.get("user_id") or "",
|
||||
)
|
||||
db.commit()
|
||||
return success_response(data, message="保存成功")
|
||||
except ValueError as e:
|
||||
db.rollback()
|
||||
return error_response(400, str(e))
|
||||
except Exception as e:
|
||||
db.rollback()
|
||||
return error_response(400, str(e))
|
||||
|
||||
|
||||
@router.post("/qc-work-orders/{work_order_id}/configure")
|
||||
async def configure_qc_work_order(
|
||||
work_order_id: str,
|
||||
|
||||
@@ -98,6 +98,7 @@ class StatusChangeBody(BaseModel):
|
||||
new_status: str = Field(..., alias="newStatus")
|
||||
desc: Optional[str] = Field(None, alias="desc")
|
||||
time_val: Optional[str] = Field(None, alias="timeVal")
|
||||
void_type: Optional[str] = Field(None, alias="voidType")
|
||||
|
||||
|
||||
class ConvertFromStorageBody(BaseModel):
|
||||
@@ -372,6 +373,7 @@ async def change_donation_status(
|
||||
new_status=body.new_status,
|
||||
desc=body.desc,
|
||||
time_val=body.time_val,
|
||||
void_type=body.void_type,
|
||||
user_id=user_id,
|
||||
tenant_no=tenant_no,
|
||||
)
|
||||
|
||||
@@ -0,0 +1,99 @@
|
||||
"""协议状态展示(含作废类型后缀)。"""
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import Dict, Optional
|
||||
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from app.models.models import SysDictData
|
||||
|
||||
VOID_TYPE_DICT = "xyzflx"
|
||||
|
||||
_PROTOCOL_STATUS_LABELS = {
|
||||
"dsx": "待生效",
|
||||
"sxz": "生效中",
|
||||
"ygq": "已过期",
|
||||
"yzf": "已作废",
|
||||
"sdfq": "属地废弃",
|
||||
"zky": "转科研",
|
||||
}
|
||||
_DONATION_STATUS_LABELS = {
|
||||
"dsx": "待生效",
|
||||
"sxz": "生效中",
|
||||
"ygq": "已过期",
|
||||
"yzf": "已作废",
|
||||
"sdfq": "属地废弃",
|
||||
"zckc": "转细胞存储",
|
||||
}
|
||||
|
||||
_VOID_TYPE_FALLBACK_LABELS = {
|
||||
"khhc": "客户毁存",
|
||||
"jcbhg": "检测不合格",
|
||||
}
|
||||
|
||||
|
||||
def resolve_void_type_label(
|
||||
db: Optional[Session],
|
||||
tenant_no: Optional[str],
|
||||
void_type: Optional[str],
|
||||
) -> str:
|
||||
code = (void_type or "").strip()
|
||||
if not code:
|
||||
return ""
|
||||
if db is not None and tenant_no:
|
||||
row = (
|
||||
db.query(SysDictData.dict_label)
|
||||
.filter(
|
||||
SysDictData.dict_type == VOID_TYPE_DICT,
|
||||
SysDictData.dict_value == code,
|
||||
SysDictData.tenant_no == tenant_no,
|
||||
SysDictData.del_flag == 0,
|
||||
)
|
||||
.first()
|
||||
)
|
||||
if row and (row.dict_label or "").strip():
|
||||
return (row.dict_label or "").strip()
|
||||
return _VOID_TYPE_FALLBACK_LABELS.get(code, code)
|
||||
|
||||
|
||||
def format_protocol_status_label(
|
||||
status: str,
|
||||
void_type: Optional[str] = None,
|
||||
*,
|
||||
kind: str = "protocol",
|
||||
db: Optional[Session] = None,
|
||||
tenant_no: Optional[str] = None,
|
||||
) -> str:
|
||||
st = (status or "").strip()
|
||||
labels = _DONATION_STATUS_LABELS if kind == "donation" else _PROTOCOL_STATUS_LABELS
|
||||
base = labels.get(st, st)
|
||||
if st != "yzf":
|
||||
return base
|
||||
vt_label = resolve_void_type_label(db, tenant_no, void_type)
|
||||
if vt_label:
|
||||
return f"{base}({vt_label})"
|
||||
return base
|
||||
|
||||
|
||||
def build_void_type_label_map(
|
||||
db: Session,
|
||||
tenant_no: str,
|
||||
codes: list[str],
|
||||
) -> Dict[str, str]:
|
||||
normalized = list({(c or "").strip() for c in codes if (c or "").strip()})
|
||||
if not normalized:
|
||||
return {}
|
||||
rows = (
|
||||
db.query(SysDictData.dict_value, SysDictData.dict_label)
|
||||
.filter(
|
||||
SysDictData.dict_type == VOID_TYPE_DICT,
|
||||
SysDictData.dict_value.in_(normalized),
|
||||
SysDictData.tenant_no == tenant_no,
|
||||
SysDictData.del_flag == 0,
|
||||
)
|
||||
.all()
|
||||
)
|
||||
out = {r.dict_value: (r.dict_label or "").strip() for r in rows if (r.dict_value or "").strip()}
|
||||
for code in normalized:
|
||||
out.setdefault(code, _VOID_TYPE_FALLBACK_LABELS.get(code, code))
|
||||
return out
|
||||
@@ -10,6 +10,7 @@ from sqlalchemy import and_, func, or_
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from app.core.utils import generate_uuid
|
||||
from app.utils.sample_special import sample_special_to_dict
|
||||
from app.crud import storage_occupancy as occupancy_svc
|
||||
from app.models.models import BizStorageSlotOccupancy
|
||||
from app.models.models import (
|
||||
@@ -1119,6 +1120,7 @@ def _protocol_sample_chain_node(
|
||||
"receptionSourceLabel": _SOURCE_LABELS.get(reception_source, reception_source),
|
||||
"customer": _sample_customer_dict(db, protocol_id, tenant_no),
|
||||
"isCurrent": False,
|
||||
**sample_special_to_dict(sample),
|
||||
},
|
||||
"edge": edge,
|
||||
"parent": None,
|
||||
@@ -1150,6 +1152,7 @@ def _donation_sample_chain_node(
|
||||
"receptionSourceLabel": _SOURCE_LABELS["research_donation"],
|
||||
"customer": _donation_sample_customer_dict(db, donation_id, tenant_no),
|
||||
"isCurrent": False,
|
||||
**sample_special_to_dict(sample),
|
||||
},
|
||||
"edge": edge,
|
||||
"parent": None,
|
||||
|
||||
@@ -25,6 +25,11 @@ from app.services.protocol_payment_installment import (
|
||||
resolve_installment_due_amounts,
|
||||
)
|
||||
from app.services.protocol_pay_mode_switch import validate_payment_details_for_save
|
||||
from app.utils.sample_special import (
|
||||
apply_sample_special_fields,
|
||||
sample_special_to_dict,
|
||||
validate_sample_special_raw,
|
||||
)
|
||||
from app.models.research_donation import BizResearchDonation, BizResearchDonationSample
|
||||
from app.models.models import (
|
||||
BizAttachment,
|
||||
@@ -345,6 +350,7 @@ def _protocol_to_dict(p: BizCollectionProtocol) -> Dict[str, Any]:
|
||||
"expireDesc": p.expire_desc or "",
|
||||
"voidTime": _fmt_dt(p.void_time),
|
||||
"voidDesc": p.void_desc or "",
|
||||
"voidType": p.void_type or "",
|
||||
"toResearchTime": _fmt_dt(p.to_research_time),
|
||||
"toResearchDesc": p.to_research_desc or "",
|
||||
"collectorUserId": p.collector_user_id or "",
|
||||
@@ -516,6 +522,7 @@ def _sample_to_dict(s: BizProtocolSample) -> Dict[str, Any]:
|
||||
"detectStartDate": (s.detect_start_date or "").strip() if s.detect_start_date else "",
|
||||
"voidDate": (s.void_date or "").strip() if s.void_date else "",
|
||||
"storageExpireDate": (s.storage_expire_date or "").strip() if s.storage_expire_date else "",
|
||||
**sample_special_to_dict(s),
|
||||
"tenantNo": s.tenant_no,
|
||||
"orderNum": s.order_num if s.order_num is not None else 0,
|
||||
"remark": s.remark or "",
|
||||
@@ -1125,6 +1132,7 @@ def list_collection_protocols(
|
||||
"sampleStatus": (s.sample_status or "").strip(),
|
||||
"labStorageCode": lab_code_map.get(code, "") if code else "",
|
||||
"transport": transport_dict,
|
||||
**sample_special_to_dict(s),
|
||||
}
|
||||
)
|
||||
d["sampleItems"] = sample_items
|
||||
@@ -2277,6 +2285,7 @@ def update_collection_protocol(
|
||||
expire_desc: Optional[str] = None,
|
||||
void_time: Optional[datetime] = None,
|
||||
void_desc: Optional[str] = None,
|
||||
void_type: Optional[str] = None,
|
||||
to_research_time: Optional[datetime] = None,
|
||||
to_research_desc: Optional[str] = None,
|
||||
collector_user_id: Optional[str] = None,
|
||||
@@ -2293,6 +2302,9 @@ def update_collection_protocol(
|
||||
raise ValueError("协议号不可修改")
|
||||
if protocol_status is not None:
|
||||
obj.protocol_status = protocol_status.strip()
|
||||
if protocol_status.strip() == "yzf" and void_time is not None:
|
||||
if void_type is None or not str(void_type).strip():
|
||||
raise ValueError("请选择作废类型")
|
||||
if protocol_attachments is not None:
|
||||
obj.protocol_attachments = protocol_attachments.strip() or None
|
||||
if register_date is not None:
|
||||
@@ -2309,6 +2321,14 @@ def update_collection_protocol(
|
||||
obj.void_time = void_time
|
||||
if void_desc is not None:
|
||||
obj.void_desc = void_desc.strip() or None
|
||||
if void_type is not None:
|
||||
from app.crud.dict_data import normalize_void_type
|
||||
|
||||
obj.void_type = (
|
||||
normalize_void_type(db, value=void_type, tenant_no=tenant_no)
|
||||
if (void_type or "").strip()
|
||||
else None
|
||||
)
|
||||
if to_research_time is not None:
|
||||
obj.to_research_time = to_research_time
|
||||
if to_research_desc is not None:
|
||||
@@ -2592,6 +2612,7 @@ def save_samples(
|
||||
result = []
|
||||
for idx, raw in enumerate(samples):
|
||||
raw = _normalize_fields(raw)
|
||||
validate_sample_special_raw(raw, index=idx)
|
||||
obj = BizProtocolSample(
|
||||
id=generate_uuid(),
|
||||
collection_protocol_id=collection_protocol_id,
|
||||
@@ -2622,6 +2643,7 @@ def save_samples(
|
||||
for k in _INT_FIELDS:
|
||||
if k in raw:
|
||||
setattr(obj, k, raw[k])
|
||||
apply_sample_special_fields(obj, raw)
|
||||
db.add(obj)
|
||||
result.append(obj)
|
||||
new_code_to_id = {
|
||||
|
||||
@@ -144,6 +144,7 @@ def soft_delete_dict_data(db: Session, data_id: str) -> None:
|
||||
|
||||
|
||||
TRANSFER_TYPE_DICT = "zzfs"
|
||||
VOID_TYPE_DICT = "xyzflx"
|
||||
|
||||
|
||||
def list_dict_data_options(
|
||||
@@ -196,6 +197,22 @@ def normalize_transfer_type(
|
||||
return normalized
|
||||
|
||||
|
||||
def normalize_void_type(
|
||||
db: Session,
|
||||
*,
|
||||
value: str,
|
||||
tenant_no: str,
|
||||
) -> str:
|
||||
normalized = (value or "").strip()
|
||||
if not normalized:
|
||||
raise ValueError("请选择作废类型")
|
||||
if not is_dict_value_valid(
|
||||
db, dict_type_code=VOID_TYPE_DICT, value=normalized, tenant_no=tenant_no
|
||||
):
|
||||
raise ValueError("作废类型无效")
|
||||
return normalized
|
||||
|
||||
|
||||
def total_pages(total: int, page_size: int) -> int:
|
||||
if total <= 0:
|
||||
return 0
|
||||
|
||||
@@ -0,0 +1,63 @@
|
||||
"""入库样本(采集协议 / 科研捐赠)· 特殊标记维护。"""
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import Any, Dict, Optional
|
||||
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from app.models.models import BizProtocolSample
|
||||
from app.models.research_donation import BizResearchDonationSample
|
||||
from app.utils.sample_special import (
|
||||
apply_inbound_sample_special_mark_fields,
|
||||
sample_special_to_dict,
|
||||
validate_sample_special_raw,
|
||||
)
|
||||
|
||||
|
||||
def update_inbound_sample_special_mark(
|
||||
db: Session,
|
||||
*,
|
||||
tenant_no: str,
|
||||
reception_source: str,
|
||||
protocol_sample_id: str,
|
||||
is_special: bool,
|
||||
special_remark: Optional[str],
|
||||
user_id: str,
|
||||
) -> Dict[str, Any]:
|
||||
sample_id = (protocol_sample_id or "").strip()
|
||||
if not sample_id:
|
||||
raise ValueError("缺少样本 ID")
|
||||
|
||||
source = (reception_source or "cell_storage").strip()
|
||||
raw = {"is_special": is_special, "special_remark": special_remark or ""}
|
||||
validate_sample_special_raw(raw)
|
||||
|
||||
if source == "research_donation":
|
||||
sample = (
|
||||
db.query(BizResearchDonationSample)
|
||||
.filter(
|
||||
BizResearchDonationSample.id == sample_id,
|
||||
BizResearchDonationSample.tenant_no == tenant_no,
|
||||
BizResearchDonationSample.del_flag == 0,
|
||||
)
|
||||
.first()
|
||||
)
|
||||
if not sample:
|
||||
raise ValueError("捐赠样本不存在")
|
||||
else:
|
||||
sample = (
|
||||
db.query(BizProtocolSample)
|
||||
.filter(
|
||||
BizProtocolSample.id == sample_id,
|
||||
BizProtocolSample.tenant_no == tenant_no,
|
||||
BizProtocolSample.del_flag == 0,
|
||||
)
|
||||
.first()
|
||||
)
|
||||
if not sample:
|
||||
raise ValueError("协议样本不存在")
|
||||
|
||||
apply_inbound_sample_special_mark_fields(sample, raw)
|
||||
sample.update_by = user_id
|
||||
db.flush()
|
||||
return sample_special_to_dict(sample)
|
||||
@@ -12,9 +12,14 @@ from app.core.utils import generate_uuid
|
||||
from app.crud.material import _dec, _fmt_dt, _is_enabled_status, _norm_status
|
||||
from app.models.material import BizMaterial, BizMaterialStockBatch, BizMaterialUsage
|
||||
|
||||
_SENTINEL_EXPIRE_DATE = date(9999, 12, 31)
|
||||
_DEFAULT_STOCK_IN_QTY = Decimal("1")
|
||||
|
||||
|
||||
def _fmt_date(d: Optional[date]) -> str:
|
||||
return d.strftime("%Y-%m-%d") if d else ""
|
||||
if not d or d >= _SENTINEL_EXPIRE_DATE:
|
||||
return ""
|
||||
return d.strftime("%Y-%m-%d")
|
||||
|
||||
|
||||
def _parse_date(v: Any, *, label: str = "入库日期") -> date:
|
||||
@@ -32,9 +37,82 @@ def _parse_date(v: Any, *, label: str = "入库日期") -> date:
|
||||
|
||||
|
||||
def _parse_expire_date(v: Any) -> date:
|
||||
if isinstance(v, date) and not isinstance(v, datetime):
|
||||
if v >= _SENTINEL_EXPIRE_DATE:
|
||||
return _SENTINEL_EXPIRE_DATE
|
||||
return v
|
||||
s = str(v or "").strip()
|
||||
if not s:
|
||||
return _SENTINEL_EXPIRE_DATE
|
||||
return _parse_date(v, label="过期日期")
|
||||
|
||||
|
||||
def _opt_str(v: Any, *, default: str = "") -> str:
|
||||
return str(v or "").strip() or default
|
||||
|
||||
|
||||
def _opt_decimal(v: Any, *, default: Decimal = Decimal("0")) -> Decimal:
|
||||
if v is None or str(v).strip() == "":
|
||||
return default
|
||||
try:
|
||||
d = Decimal(str(v))
|
||||
except Exception as e:
|
||||
raise ValueError("金额格式无效") from e
|
||||
if d < 0:
|
||||
raise ValueError("金额不能为负数")
|
||||
return d
|
||||
|
||||
|
||||
def _opt_stock_in_date(v: Any) -> date:
|
||||
if isinstance(v, date) and not isinstance(v, datetime):
|
||||
return v
|
||||
s = str(v or "").strip()
|
||||
if not s:
|
||||
return date.today()
|
||||
return _parse_date(v, label="入库日期")
|
||||
|
||||
|
||||
def _opt_stock_in_qty(v: Any) -> Decimal:
|
||||
if v is None or str(v).strip() == "":
|
||||
return _DEFAULT_STOCK_IN_QTY
|
||||
try:
|
||||
qty = Decimal(str(v))
|
||||
except Exception as e:
|
||||
raise ValueError("入库数量格式无效") from e
|
||||
if qty < 0:
|
||||
raise ValueError("入库数量不能为负数")
|
||||
return qty
|
||||
|
||||
|
||||
def _gen_stock_in_no(db: Session, tenant_no: str) -> str:
|
||||
for _ in range(10):
|
||||
suffix = generate_uuid()[:8].upper()
|
||||
sno = f"RK{datetime.now().strftime('%Y%m%d%H%M%S')}{suffix}"
|
||||
if not stock_in_no_exists(db, sno, tenant_no):
|
||||
return sno
|
||||
raise ValueError("入库编号自动生成失败,请稍后重试")
|
||||
|
||||
|
||||
def _resolve_stock_in_no(
|
||||
db: Session,
|
||||
tenant_no: str,
|
||||
stock_in_no: Any,
|
||||
*,
|
||||
exclude_id: Optional[str] = None,
|
||||
seen_nos: Optional[set] = None,
|
||||
) -> str:
|
||||
s = str(stock_in_no or "").strip()
|
||||
if not s:
|
||||
s = _gen_stock_in_no(db, tenant_no)
|
||||
if seen_nos is not None:
|
||||
if s in seen_nos:
|
||||
raise ValueError(f"入库编号「{s}」在本单中重复")
|
||||
seen_nos.add(s)
|
||||
if stock_in_no_exists(db, s, tenant_no, exclude_id=exclude_id):
|
||||
raise ValueError(f"入库编号「{s}」已存在")
|
||||
return s
|
||||
|
||||
|
||||
def _require_str(v: Any, label: str) -> str:
|
||||
s = str(v or "").strip()
|
||||
if not s:
|
||||
@@ -295,19 +373,18 @@ def _create_batch_and_usage(
|
||||
manufacturer: str,
|
||||
unit_price: Decimal,
|
||||
amount: Decimal,
|
||||
qty: Decimal,
|
||||
qty: Any,
|
||||
remark: Optional[str],
|
||||
operator_name: Optional[str],
|
||||
tenant_no: str,
|
||||
user_id: Optional[str],
|
||||
operate_time: datetime,
|
||||
commit: bool = False,
|
||||
) -> BizMaterialStockBatch:
|
||||
qty = _opt_stock_in_qty(qty)
|
||||
if qty <= 0:
|
||||
raise ValueError("入库数量必须大于0")
|
||||
sno = _require_str(stock_in_no, "入库编号")
|
||||
if stock_in_no_exists(db, sno, tenant_no):
|
||||
raise ValueError(f"入库编号「{sno}」已存在")
|
||||
|
||||
sno = _resolve_stock_in_no(db, tenant_no, stock_in_no)
|
||||
if not _is_enabled_status(material.status):
|
||||
raise ValueError(f"物料「{material.material_name}」已停用,无法入库")
|
||||
|
||||
@@ -326,13 +403,13 @@ def _create_batch_and_usage(
|
||||
spec_model=material.spec_model,
|
||||
unit=material.unit,
|
||||
stock_in_no=sno,
|
||||
stock_in_date=stock_in_date,
|
||||
expire_date=expire_date,
|
||||
catalog_no=catalog_no,
|
||||
batch_no=batch_no,
|
||||
manufacturer=manufacturer,
|
||||
unit_price=unit_price,
|
||||
amount=amount,
|
||||
stock_in_date=_opt_stock_in_date(stock_in_date),
|
||||
expire_date=_parse_expire_date(expire_date),
|
||||
catalog_no=_opt_str(catalog_no),
|
||||
batch_no=_opt_str(batch_no),
|
||||
manufacturer=_opt_str(manufacturer),
|
||||
unit_price=_opt_decimal(unit_price),
|
||||
amount=_opt_decimal(amount),
|
||||
in_qty=qty,
|
||||
remaining_qty=qty,
|
||||
tenant_no=tenant_no,
|
||||
@@ -358,6 +435,7 @@ def _create_batch_and_usage(
|
||||
stock_after=new_stock,
|
||||
source_type="manual_in",
|
||||
tenant_no=tenant_no,
|
||||
operator_name=(operator_name or "").strip() or None,
|
||||
remark=(remark or "").strip() or None,
|
||||
create_by=user_id,
|
||||
create_dept_id=material.create_dept_id or "",
|
||||
@@ -386,8 +464,9 @@ def stock_in_one(
|
||||
manufacturer: str,
|
||||
unit_price: Any,
|
||||
amount: Any,
|
||||
qty: Decimal,
|
||||
qty: Any,
|
||||
remark: Optional[str] = None,
|
||||
operator_name: Optional[str] = None,
|
||||
tenant_no: str,
|
||||
user_id: Optional[str] = None,
|
||||
operate_time: Optional[datetime] = None,
|
||||
@@ -398,15 +477,16 @@ def stock_in_one(
|
||||
db,
|
||||
material=material,
|
||||
stock_in_no=stock_in_no,
|
||||
stock_in_date=_parse_date(stock_in_date),
|
||||
expire_date=_parse_expire_date(expire_date),
|
||||
catalog_no=_require_str(catalog_no, "货号"),
|
||||
batch_no=_require_str(batch_no, "批号"),
|
||||
manufacturer=_require_str(manufacturer, "厂家"),
|
||||
unit_price=_require_decimal(unit_price, "单价"),
|
||||
amount=_require_decimal(amount, "金额"),
|
||||
stock_in_date=stock_in_date,
|
||||
expire_date=expire_date,
|
||||
catalog_no=catalog_no,
|
||||
batch_no=batch_no,
|
||||
manufacturer=manufacturer,
|
||||
unit_price=unit_price,
|
||||
amount=amount,
|
||||
qty=qty,
|
||||
remark=remark,
|
||||
operator_name=operator_name,
|
||||
tenant_no=tenant_no,
|
||||
user_id=user_id,
|
||||
operate_time=op_time,
|
||||
@@ -420,6 +500,7 @@ def batch_stock_in(
|
||||
*,
|
||||
items: List[Dict[str, Any]],
|
||||
remark: Optional[str] = None,
|
||||
operator_name: Optional[str] = None,
|
||||
tenant_no: str,
|
||||
user_id: Optional[str] = None,
|
||||
operate_time: Optional[datetime] = None,
|
||||
@@ -435,14 +516,15 @@ def batch_stock_in(
|
||||
material_id = (it.get("material_id") or it.get("materialId") or "").strip()
|
||||
if not material_id:
|
||||
raise ValueError("请选择物资")
|
||||
sno = _require_str(it.get("stock_in_no") or it.get("stockInNo"), "入库编号")
|
||||
if sno in seen_nos:
|
||||
raise ValueError(f"入库编号「{sno}」在本单中重复")
|
||||
seen_nos.add(sno)
|
||||
qty = it.get("qty")
|
||||
if qty is None or Decimal(str(qty)) <= 0:
|
||||
sno = _resolve_stock_in_no(
|
||||
db,
|
||||
tenant_no,
|
||||
it.get("stock_in_no") or it.get("stockInNo"),
|
||||
seen_nos=seen_nos,
|
||||
)
|
||||
qty_dec = _opt_stock_in_qty(it.get("qty"))
|
||||
if qty_dec <= 0:
|
||||
raise ValueError("入库数量必须大于0")
|
||||
qty_dec = Decimal(str(qty))
|
||||
line_remark = (it.get("remark") or "").strip() or shared_remark
|
||||
|
||||
material = _get_material_for_update(db, material_id, tenant_no)
|
||||
@@ -450,15 +532,16 @@ def batch_stock_in(
|
||||
db,
|
||||
material=material,
|
||||
stock_in_no=sno,
|
||||
stock_in_date=_parse_date(it.get("stock_in_date") or it.get("stockInDate")),
|
||||
expire_date=_parse_expire_date(it.get("expire_date") or it.get("expireDate")),
|
||||
catalog_no=_require_str(it.get("catalog_no") or it.get("catalogNo"), "货号"),
|
||||
batch_no=_require_str(it.get("batch_no") or it.get("batchNo"), "批号"),
|
||||
manufacturer=_require_str(it.get("manufacturer"), "厂家"),
|
||||
unit_price=_require_decimal(it.get("unit_price") or it.get("unitPrice"), "单价"),
|
||||
amount=_require_decimal(it.get("amount"), "金额"),
|
||||
stock_in_date=it.get("stock_in_date") or it.get("stockInDate"),
|
||||
expire_date=it.get("expire_date") or it.get("expireDate"),
|
||||
catalog_no=it.get("catalog_no") or it.get("catalogNo"),
|
||||
batch_no=it.get("batch_no") or it.get("batchNo"),
|
||||
manufacturer=it.get("manufacturer"),
|
||||
unit_price=it.get("unit_price") or it.get("unitPrice"),
|
||||
amount=it.get("amount"),
|
||||
qty=qty_dec,
|
||||
remark=line_remark,
|
||||
operator_name=operator_name,
|
||||
tenant_no=tenant_no,
|
||||
user_id=user_id,
|
||||
operate_time=op_time,
|
||||
@@ -479,6 +562,7 @@ def _stock_out_batch(
|
||||
receiver: Optional[str],
|
||||
purpose: Optional[str],
|
||||
remark: Optional[str],
|
||||
operator_name: Optional[str],
|
||||
usage_unit: Optional[str] = None,
|
||||
tenant_no: str,
|
||||
user_id: Optional[str],
|
||||
@@ -539,6 +623,7 @@ def _stock_out_batch(
|
||||
source_type="manual_out",
|
||||
tenant_no=tenant_no,
|
||||
receiver=(receiver or "").strip() or None,
|
||||
operator_name=(operator_name or "").strip() or None,
|
||||
purpose=(purpose or "").strip() or None,
|
||||
remark=(remark or "").strip() or None,
|
||||
create_by=user_id,
|
||||
@@ -559,6 +644,7 @@ def batch_stock_out(
|
||||
receiver: Optional[str] = None,
|
||||
purpose: Optional[str] = None,
|
||||
remark: Optional[str] = None,
|
||||
operator_name: Optional[str] = None,
|
||||
tenant_no: str,
|
||||
user_id: Optional[str] = None,
|
||||
operate_time: Optional[datetime] = None,
|
||||
@@ -590,6 +676,7 @@ def batch_stock_out(
|
||||
receiver=receiver,
|
||||
purpose=purpose,
|
||||
remark=line_remark,
|
||||
operator_name=operator_name,
|
||||
usage_unit=usage_unit,
|
||||
tenant_no=tenant_no,
|
||||
user_id=user_id,
|
||||
@@ -621,6 +708,7 @@ def _discard_batch(
|
||||
qty: Decimal,
|
||||
discard_reason: str,
|
||||
remark: Optional[str],
|
||||
operator_name: Optional[str],
|
||||
usage_unit: Optional[str] = None,
|
||||
tenant_no: str,
|
||||
user_id: Optional[str],
|
||||
@@ -679,6 +767,7 @@ def _discard_batch(
|
||||
source_type="manual_discard",
|
||||
tenant_no=tenant_no,
|
||||
purpose=discard_reason,
|
||||
operator_name=(operator_name or "").strip() or None,
|
||||
remark=(remark or "").strip() or None,
|
||||
create_by=user_id,
|
||||
create_dept_id=material.create_dept_id or "",
|
||||
@@ -697,6 +786,7 @@ def batch_discard(
|
||||
items: List[Dict[str, Any]],
|
||||
discard_reason: Optional[str] = None,
|
||||
remark: Optional[str] = None,
|
||||
operator_name: Optional[str] = None,
|
||||
tenant_no: str,
|
||||
user_id: Optional[str] = None,
|
||||
operate_time: Optional[datetime] = None,
|
||||
@@ -730,6 +820,7 @@ def batch_discard(
|
||||
qty=qty_dec,
|
||||
discard_reason=reason,
|
||||
remark=line_remark,
|
||||
operator_name=operator_name,
|
||||
usage_unit=usage_unit,
|
||||
tenant_no=tenant_no,
|
||||
user_id=user_id,
|
||||
@@ -809,24 +900,31 @@ def update_batch(
|
||||
)
|
||||
|
||||
if stock_in_no is not None:
|
||||
sno = _require_str(stock_in_no, "入库编号")
|
||||
if stock_in_no_exists(db, sno, tenant_no, exclude_id=batch_id):
|
||||
raise ValueError(f"入库编号「{sno}」已存在")
|
||||
batch.stock_in_no = sno
|
||||
s = str(stock_in_no).strip()
|
||||
if s:
|
||||
if stock_in_no_exists(db, s, tenant_no, exclude_id=batch_id):
|
||||
raise ValueError(f"入库编号「{s}」已存在")
|
||||
batch.stock_in_no = s
|
||||
if stock_in_date is not None:
|
||||
batch.stock_in_date = _parse_date(stock_in_date)
|
||||
s = str(stock_in_date).strip()
|
||||
if s:
|
||||
batch.stock_in_date = _parse_date(stock_in_date)
|
||||
if expire_date is not None:
|
||||
batch.expire_date = _parse_expire_date(expire_date)
|
||||
s = str(expire_date).strip()
|
||||
if s:
|
||||
batch.expire_date = _parse_expire_date(expire_date)
|
||||
else:
|
||||
batch.expire_date = _SENTINEL_EXPIRE_DATE
|
||||
if catalog_no is not None:
|
||||
batch.catalog_no = _require_str(catalog_no, "货号")
|
||||
batch.catalog_no = _opt_str(catalog_no)
|
||||
if batch_no is not None:
|
||||
batch.batch_no = _require_str(batch_no, "批号")
|
||||
batch.batch_no = _opt_str(batch_no)
|
||||
if manufacturer is not None:
|
||||
batch.manufacturer = _require_str(manufacturer, "厂家")
|
||||
batch.manufacturer = _opt_str(manufacturer)
|
||||
if unit_price is not None:
|
||||
batch.unit_price = _require_decimal(unit_price, "单价")
|
||||
batch.unit_price = _opt_decimal(unit_price)
|
||||
if amount is not None:
|
||||
batch.amount = _require_decimal(amount, "金额")
|
||||
batch.amount = _opt_decimal(amount)
|
||||
if remark is not None:
|
||||
batch.remark = (remark or "").strip() or None
|
||||
|
||||
|
||||
@@ -144,6 +144,7 @@ def _row_to_dict(
|
||||
"stockAfter": stock_after,
|
||||
"receiver": receiver,
|
||||
"receiverName": receiver_name or receiver,
|
||||
"operatorName": (getattr(r, "operator_name", None) or "").strip(),
|
||||
"purpose": purpose,
|
||||
"sourceType": r.source_type or "",
|
||||
"requisitionStatus": (getattr(r, "requisition_status", None) or "open").strip() or "open",
|
||||
@@ -368,6 +369,7 @@ def list_stock_check_requisitions(
|
||||
"taskConsumedQty": 0,
|
||||
"receiver": rcv,
|
||||
"receiverName": rcv_name,
|
||||
"operatorName": (getattr(r, "operator_name", None) or "").strip(),
|
||||
"purpose": purpose,
|
||||
"useTime": use_time,
|
||||
"requisitionStatus": (r.requisition_status or "open").strip() or "open",
|
||||
|
||||
@@ -18,6 +18,7 @@ from app.crud.collection_protocol import (
|
||||
_protocol_to_dict,
|
||||
total_pages,
|
||||
)
|
||||
from app.utils.sample_special import sample_special_to_dict
|
||||
from app.crud.research_donation import (
|
||||
_collection_to_dict,
|
||||
_donation_to_dict,
|
||||
@@ -42,8 +43,8 @@ from app.models.research_donation import (
|
||||
BizResearchDonationSampleTransport,
|
||||
)
|
||||
|
||||
_CELL_IN_TRANSIT_EXCLUDED = ("yzf", "zky", "ygq")
|
||||
_DONATION_IN_TRANSIT_EXCLUDED = ("yzf", "zckc", "ygq")
|
||||
_CELL_IN_TRANSIT_EXCLUDED = ("yzf", "sdfq", "zky", "ygq")
|
||||
_DONATION_IN_TRANSIT_EXCLUDED = ("yzf", "sdfq", "zckc", "ygq")
|
||||
_PRE_DELIVERY_STATUSES = ("dsx", "sxz")
|
||||
|
||||
|
||||
@@ -273,6 +274,7 @@ def _build_sample_items(
|
||||
"sampleStatus": (getattr(s, "sample_status", None) or "").strip(),
|
||||
"labStorageCode": lab_code_map.get(code, "") if code else "",
|
||||
"transport": transport_dict,
|
||||
**sample_special_to_dict(s),
|
||||
}
|
||||
)
|
||||
return items, eta_values
|
||||
|
||||
@@ -77,10 +77,10 @@ def _require_requisition_for_catalog_material(
|
||||
|
||||
|
||||
_PROTOCOL_STATUS_LABELS = {
|
||||
"dsx": "待生效", "sxz": "生效中", "ygq": "已过期", "yzf": "已作废", "zky": "转科研"
|
||||
"dsx": "待生效", "sxz": "生效中", "ygq": "已过期", "yzf": "已作废", "sdfq": "属地废弃", "zky": "转科研"
|
||||
}
|
||||
_DONATION_STATUS_LABELS = {
|
||||
"dsx": "待生效", "sxz": "生效中", "ygq": "已过期", "yzf": "已作废", "zckc": "转细胞存储"
|
||||
"dsx": "待生效", "sxz": "生效中", "ygq": "已过期", "yzf": "已作废", "sdfq": "属地废弃", "zckc": "转细胞存储"
|
||||
}
|
||||
_RECEPTION_SOURCE_LABELS = {
|
||||
"cell_storage": "细胞存储",
|
||||
@@ -1352,21 +1352,35 @@ def list_production_tasks(
|
||||
and w.collection_protocol_id
|
||||
]
|
||||
proto_status_map: Dict[str, str] = {}
|
||||
proto_void_type_map: Dict[str, str] = {}
|
||||
if cell_wo_ids:
|
||||
for p in (
|
||||
db.query(BizCollectionProtocol.id, BizCollectionProtocol.protocol_status)
|
||||
db.query(
|
||||
BizCollectionProtocol.id,
|
||||
BizCollectionProtocol.protocol_status,
|
||||
BizCollectionProtocol.void_type,
|
||||
)
|
||||
.filter(BizCollectionProtocol.id.in_(cell_wo_ids), BizCollectionProtocol.del_flag == 0)
|
||||
.all()
|
||||
):
|
||||
proto_status_map[p.id] = p.protocol_status or ""
|
||||
proto_void_type_map[p.id] = p.void_type or ""
|
||||
donation_status_map: Dict[str, str] = {}
|
||||
donation_void_type_map: Dict[str, str] = {}
|
||||
if donation_wo_ids:
|
||||
for d in (
|
||||
db.query(BizResearchDonation.id, BizResearchDonation.donation_status)
|
||||
db.query(
|
||||
BizResearchDonation.id,
|
||||
BizResearchDonation.donation_status,
|
||||
BizResearchDonation.void_type,
|
||||
)
|
||||
.filter(BizResearchDonation.id.in_(donation_wo_ids), BizResearchDonation.del_flag == 0)
|
||||
.all()
|
||||
):
|
||||
donation_status_map[d.id] = d.donation_status or ""
|
||||
donation_void_type_map[d.id] = d.void_type or ""
|
||||
from app.core.protocol_status_display import format_protocol_status_label
|
||||
|
||||
for item, row in zip(items, rows):
|
||||
wo = wo_map.get(row.work_order_id)
|
||||
if wo:
|
||||
@@ -1378,12 +1392,20 @@ def list_production_tasks(
|
||||
_source = wo.reception_source or "cell_storage"
|
||||
if _source == "research_donation":
|
||||
_st = donation_status_map.get(wo.collection_protocol_id, "")
|
||||
_vt = donation_void_type_map.get(wo.collection_protocol_id, "")
|
||||
item["protocolStatus"] = _st
|
||||
item["protocolStatusLabel"] = _DONATION_STATUS_LABELS.get(_st, _st)
|
||||
item["voidType"] = _vt
|
||||
item["protocolStatusLabel"] = format_protocol_status_label(
|
||||
_st, _vt, kind="donation", db=db, tenant_no=tenant_no
|
||||
)
|
||||
else:
|
||||
_st = proto_status_map.get(wo.collection_protocol_id, "")
|
||||
_vt = proto_void_type_map.get(wo.collection_protocol_id, "")
|
||||
item["protocolStatus"] = _st
|
||||
item["protocolStatusLabel"] = _PROTOCOL_STATUS_LABELS.get(_st, _st)
|
||||
item["voidType"] = _vt
|
||||
item["protocolStatusLabel"] = format_protocol_status_label(
|
||||
_st, _vt, kind="protocol", db=db, tenant_no=tenant_no
|
||||
)
|
||||
else:
|
||||
item["sampleCode"] = wo.sample_code or ""
|
||||
_enrich_outbound_task_items(db, tenant_no, items, wo_ctx_map)
|
||||
@@ -1593,19 +1615,35 @@ def get_production_task_detail(
|
||||
_src = getattr(wo, "reception_source", "cell_storage") or "cell_storage"
|
||||
_cpid = wo.collection_protocol_id or ""
|
||||
if _src == "research_donation" and _cpid:
|
||||
d = db.query(BizResearchDonation.donation_status).filter(
|
||||
BizResearchDonation.id == _cpid, BizResearchDonation.del_flag == 0
|
||||
).first()
|
||||
d = (
|
||||
db.query(BizResearchDonation.donation_status, BizResearchDonation.void_type)
|
||||
.filter(BizResearchDonation.id == _cpid, BizResearchDonation.del_flag == 0)
|
||||
.first()
|
||||
)
|
||||
_st = d.donation_status or "" if d else ""
|
||||
_vt = d.void_type or "" if d else ""
|
||||
result["protocolStatus"] = _st
|
||||
result["protocolStatusLabel"] = _DONATION_STATUS_LABELS.get(_st, _st)
|
||||
result["voidType"] = _vt
|
||||
from app.core.protocol_status_display import format_protocol_status_label
|
||||
|
||||
result["protocolStatusLabel"] = format_protocol_status_label(
|
||||
_st, _vt, kind="donation", db=db, tenant_no=tenant_no
|
||||
)
|
||||
elif _cpid:
|
||||
p = db.query(BizCollectionProtocol.protocol_status).filter(
|
||||
BizCollectionProtocol.id == _cpid, BizCollectionProtocol.del_flag == 0
|
||||
).first()
|
||||
p = (
|
||||
db.query(BizCollectionProtocol.protocol_status, BizCollectionProtocol.void_type)
|
||||
.filter(BizCollectionProtocol.id == _cpid, BizCollectionProtocol.del_flag == 0)
|
||||
.first()
|
||||
)
|
||||
_st = p.protocol_status or "" if p else ""
|
||||
_vt = p.void_type or "" if p else ""
|
||||
result["protocolStatus"] = _st
|
||||
result["protocolStatusLabel"] = _PROTOCOL_STATUS_LABELS.get(_st, _st)
|
||||
result["voidType"] = _vt
|
||||
from app.core.protocol_status_display import format_protocol_status_label
|
||||
|
||||
result["protocolStatusLabel"] = format_protocol_status_label(
|
||||
_st, _vt, kind="protocol", db=db, tenant_no=tenant_no
|
||||
)
|
||||
else:
|
||||
result["protocolStatus"] = ""
|
||||
result["protocolStatusLabel"] = ""
|
||||
|
||||
@@ -9,6 +9,7 @@ from sqlalchemy import and_, or_
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from app.core.utils import format_date
|
||||
from app.utils.sample_special import sample_special_to_dict
|
||||
from app.models.models import (
|
||||
BizCellSampleType,
|
||||
BizCollectionHospital,
|
||||
@@ -224,8 +225,7 @@ def list_protocol_sample_collections(
|
||||
status = (psample.sample_status or "").strip() if psample else ""
|
||||
region_id = (ci.region_id or "").strip() if ci else ""
|
||||
hospital_id = (ci.hospital_id or "").strip() if ci else ""
|
||||
items.append(
|
||||
_row_to_dict(
|
||||
item = _row_to_dict(
|
||||
protocol_sample_id=psample.id,
|
||||
collection_protocol_id=proto.id if proto else "",
|
||||
protocol_no=(proto.protocol_no or "") if proto else "",
|
||||
@@ -243,7 +243,8 @@ def list_protocol_sample_collections(
|
||||
sample_collect_time=_fmt_dt(ci.sample_collect_time) if ci else "",
|
||||
maternal_blood_collect_time=_fmt_dt(ci.maternal_blood_collect_time) if ci else "",
|
||||
)
|
||||
)
|
||||
item.update(sample_special_to_dict(psample))
|
||||
items.append(item)
|
||||
if items and tenant_no:
|
||||
from app.crud import sample_reception as reception_svc
|
||||
|
||||
|
||||
@@ -22,6 +22,7 @@ from app.crud.qc_work_order import (
|
||||
build_work_order_list_summaries,
|
||||
)
|
||||
from app.core.db_collation import eq_unicode, unicode_ci
|
||||
from app.utils.sample_special import apply_special_to_item_from_samples
|
||||
from app.crud import qc_task_assignee as assignee_svc
|
||||
from app.models.models import (
|
||||
BizCollectionProtocol,
|
||||
@@ -50,10 +51,10 @@ def _gen_task_no(db: Session, work_order, seq: int) -> str:
|
||||
|
||||
_CONCLUSION_LABELS = {"tg": "通过", "btg": "不通过"}
|
||||
_PROTOCOL_STATUS_LABELS = {
|
||||
"dsx": "待生效", "sxz": "生效中", "ygq": "已过期", "yzf": "已作废", "zky": "转科研"
|
||||
"dsx": "待生效", "sxz": "生效中", "ygq": "已过期", "yzf": "已作废", "sdfq": "属地废弃", "zky": "转科研"
|
||||
}
|
||||
_DONATION_STATUS_LABELS = {
|
||||
"dsx": "待生效", "sxz": "生效中", "ygq": "已过期", "yzf": "已作废", "zckc": "转细胞存储"
|
||||
"dsx": "待生效", "sxz": "生效中", "ygq": "已过期", "yzf": "已作废", "sdfq": "属地废弃", "zckc": "转细胞存储"
|
||||
}
|
||||
|
||||
|
||||
@@ -166,6 +167,9 @@ _WORK_ORDER_SUMMARY_COPY_KEYS = (
|
||||
"bizTypeLabel",
|
||||
"motherName",
|
||||
"newbornName",
|
||||
"isSpecial",
|
||||
"specialRemark",
|
||||
"unfinishedBadgeCount",
|
||||
)
|
||||
|
||||
|
||||
@@ -186,6 +190,8 @@ def _merge_work_order_summary_into_task(item: Dict[str, Any], summary: Dict[str,
|
||||
"protocolStatusLabel",
|
||||
"motherName",
|
||||
"newbornName",
|
||||
"isSpecial",
|
||||
"specialRemark",
|
||||
):
|
||||
if not item.get(key) and summary.get(key):
|
||||
item[key] = summary[key]
|
||||
@@ -273,21 +279,40 @@ def _enrich_tasks_reception_fields(
|
||||
if (rec.reception_source or "") == "research_donation" and rec.research_donation_id
|
||||
]
|
||||
proto_status_map: Dict[str, str] = {}
|
||||
proto_void_type_map: Dict[str, str] = {}
|
||||
tenant_no_for_status = ""
|
||||
if cell_proto_ids:
|
||||
for p in (
|
||||
db.query(BizCollectionProtocol.id, BizCollectionProtocol.protocol_status)
|
||||
db.query(
|
||||
BizCollectionProtocol.id,
|
||||
BizCollectionProtocol.protocol_status,
|
||||
BizCollectionProtocol.void_type,
|
||||
BizCollectionProtocol.tenant_no,
|
||||
)
|
||||
.filter(BizCollectionProtocol.id.in_(cell_proto_ids), BizCollectionProtocol.del_flag == 0)
|
||||
.all()
|
||||
):
|
||||
proto_status_map[p.id] = p.protocol_status or ""
|
||||
proto_void_type_map[p.id] = p.void_type or ""
|
||||
if not tenant_no_for_status and (p.tenant_no or "").strip():
|
||||
tenant_no_for_status = (p.tenant_no or "").strip()
|
||||
donation_status_map: Dict[str, str] = {}
|
||||
donation_void_type_map: Dict[str, str] = {}
|
||||
if donation_ids:
|
||||
for d in (
|
||||
db.query(BizResearchDonation.id, BizResearchDonation.donation_status)
|
||||
db.query(
|
||||
BizResearchDonation.id,
|
||||
BizResearchDonation.donation_status,
|
||||
BizResearchDonation.void_type,
|
||||
BizResearchDonation.tenant_no,
|
||||
)
|
||||
.filter(BizResearchDonation.id.in_(donation_ids), BizResearchDonation.del_flag == 0)
|
||||
.all()
|
||||
):
|
||||
donation_status_map[d.id] = d.donation_status or ""
|
||||
donation_void_type_map[d.id] = d.void_type or ""
|
||||
if not tenant_no_for_status and (d.tenant_no or "").strip():
|
||||
tenant_no_for_status = (d.tenant_no or "").strip()
|
||||
for item in items:
|
||||
if item.get("orderSource") in ("temporary", "outbound"):
|
||||
item.setdefault("receptionSource", "")
|
||||
@@ -309,13 +334,33 @@ def _enrich_tasks_reception_fields(
|
||||
if source == "research_donation":
|
||||
_did = rec.research_donation_id if rec else ""
|
||||
_st = donation_status_map.get(_did or "", "")
|
||||
_vt = donation_void_type_map.get(_did or "", "")
|
||||
item["protocolStatus"] = _st
|
||||
item["protocolStatusLabel"] = _DONATION_STATUS_LABELS.get(_st, _st)
|
||||
item["voidType"] = _vt
|
||||
from app.core.protocol_status_display import format_protocol_status_label
|
||||
|
||||
item["protocolStatusLabel"] = format_protocol_status_label(
|
||||
_st, _vt, kind="donation", db=db, tenant_no=tenant_no_for_status or None
|
||||
)
|
||||
else:
|
||||
_pid = rec.collection_protocol_id if rec else ""
|
||||
_st = proto_status_map.get(_pid or "", "")
|
||||
_vt = proto_void_type_map.get(_pid or "", "")
|
||||
item["protocolStatus"] = _st
|
||||
item["protocolStatusLabel"] = _PROTOCOL_STATUS_LABELS.get(_st, _st)
|
||||
item["voidType"] = _vt
|
||||
from app.core.protocol_status_display import format_protocol_status_label
|
||||
|
||||
item["protocolStatusLabel"] = format_protocol_status_label(
|
||||
_st, _vt, kind="protocol", db=db, tenant_no=tenant_no_for_status or None
|
||||
)
|
||||
apply_special_to_item_from_samples(
|
||||
item,
|
||||
source=source,
|
||||
protocol_sample_id=rec.protocol_sample_id or "",
|
||||
donation_sample_id=rec.donation_sample_id or "",
|
||||
protocol_samples=protocol_samples,
|
||||
donation_samples=donation_samples,
|
||||
)
|
||||
return items
|
||||
|
||||
|
||||
|
||||
@@ -17,6 +17,7 @@ from app.crud import qc_task_assignee as assignee_svc
|
||||
from app.crud import qc_third_party_item as third_item_svc
|
||||
from app.crud.qc_third_party_company import get_company
|
||||
from app.crud.collection_protocol import urls_to_attachment_list
|
||||
from app.utils.sample_special import apply_special_to_item_from_samples
|
||||
from app.crud import sample_reception as sample_reception_svc
|
||||
from app.crud.sample_reception import _donation_sample_id_col
|
||||
from app.crud import sample_reception_check_result as check_result_svc
|
||||
@@ -78,10 +79,10 @@ _VALID_QC_WORK_ORDER_STATUSES = frozenset(_WORK_ORDER_STATUS_LABELS.keys())
|
||||
_TASK_TYPE_LABELS = {"sysz": "实验室自检", "dsfjc": "第三方检测"}
|
||||
_TASK_STATUS_LABELS = {"dzx": "待执行", "jxz": "进行中", "ywc": "已完成"}
|
||||
_PROTOCOL_STATUS_LABELS = {
|
||||
"dsx": "待生效", "sxz": "生效中", "ygq": "已过期", "yzf": "已作废", "zky": "转科研"
|
||||
"dsx": "待生效", "sxz": "生效中", "ygq": "已过期", "yzf": "已作废", "sdfq": "属地废弃", "zky": "转科研"
|
||||
}
|
||||
_DONATION_STATUS_LABELS = {
|
||||
"dsx": "待生效", "sxz": "生效中", "ygq": "已过期", "yzf": "已作废", "zckc": "转细胞存储"
|
||||
"dsx": "待生效", "sxz": "生效中", "ygq": "已过期", "yzf": "已作废", "sdfq": "属地废弃", "zckc": "转细胞存储"
|
||||
}
|
||||
_CONCLUSION_LABELS = {"tg": "通过", "btg": "不通过"}
|
||||
_OUTBOUND_BIZ_TYPE_LABELS = {
|
||||
@@ -676,21 +677,40 @@ def _enrich_work_order_list_items(
|
||||
)
|
||||
type_map = _load_sample_type_name_map(db, type_ids)
|
||||
proto_status_map: Dict[str, str] = {}
|
||||
proto_void_type_map: Dict[str, str] = {}
|
||||
tenant_no_for_status = ""
|
||||
if cell_proto_ids:
|
||||
for p in (
|
||||
db.query(BizCollectionProtocol.id, BizCollectionProtocol.protocol_status)
|
||||
db.query(
|
||||
BizCollectionProtocol.id,
|
||||
BizCollectionProtocol.protocol_status,
|
||||
BizCollectionProtocol.void_type,
|
||||
BizCollectionProtocol.tenant_no,
|
||||
)
|
||||
.filter(BizCollectionProtocol.id.in_(cell_proto_ids), BizCollectionProtocol.del_flag == 0)
|
||||
.all()
|
||||
):
|
||||
proto_status_map[p.id] = p.protocol_status or ""
|
||||
proto_void_type_map[p.id] = p.void_type or ""
|
||||
if not tenant_no_for_status and (p.tenant_no or "").strip():
|
||||
tenant_no_for_status = (p.tenant_no or "").strip()
|
||||
donation_status_map: Dict[str, str] = {}
|
||||
donation_void_type_map: Dict[str, str] = {}
|
||||
if donation_ids:
|
||||
for d in (
|
||||
db.query(BizResearchDonation.id, BizResearchDonation.donation_status)
|
||||
db.query(
|
||||
BizResearchDonation.id,
|
||||
BizResearchDonation.donation_status,
|
||||
BizResearchDonation.void_type,
|
||||
BizResearchDonation.tenant_no,
|
||||
)
|
||||
.filter(BizResearchDonation.id.in_(donation_ids), BizResearchDonation.del_flag == 0)
|
||||
.all()
|
||||
):
|
||||
donation_status_map[d.id] = d.donation_status or ""
|
||||
donation_void_type_map[d.id] = d.void_type or ""
|
||||
if not tenant_no_for_status and (d.tenant_no or "").strip():
|
||||
tenant_no_for_status = (d.tenant_no or "").strip()
|
||||
cell_party_map: Dict[str, Tuple[str, str]] = {}
|
||||
if cell_proto_ids:
|
||||
for party in (
|
||||
@@ -761,22 +781,42 @@ def _enrich_work_order_list_items(
|
||||
protocol_samples=protocol_samples,
|
||||
donation_samples=donation_samples,
|
||||
)
|
||||
apply_special_to_item_from_samples(
|
||||
item,
|
||||
source=source,
|
||||
protocol_sample_id=_effective_protocol_sample_id(item, rec),
|
||||
donation_sample_id=_effective_donation_sample_id(item, rec),
|
||||
protocol_samples=protocol_samples,
|
||||
donation_samples=donation_samples,
|
||||
)
|
||||
if source == "research_donation":
|
||||
_did = (
|
||||
(getattr(rec, "research_donation_id", None) or "").strip()
|
||||
or (item.get("collectionProtocolId") or "").strip()
|
||||
)
|
||||
_st = donation_status_map.get(_did or "", "")
|
||||
_vt = donation_void_type_map.get(_did or "", "")
|
||||
item["protocolStatus"] = _st
|
||||
item["protocolStatusLabel"] = _DONATION_STATUS_LABELS.get(_st, _st)
|
||||
item["voidType"] = _vt
|
||||
from app.core.protocol_status_display import format_protocol_status_label
|
||||
|
||||
item["protocolStatusLabel"] = format_protocol_status_label(
|
||||
_st, _vt, kind="donation", db=db, tenant_no=tenant_no_for_status or None
|
||||
)
|
||||
else:
|
||||
_pid = (
|
||||
(getattr(rec, "collection_protocol_id", None) or "").strip()
|
||||
or (item.get("collectionProtocolId") or "").strip()
|
||||
)
|
||||
_st = proto_status_map.get(_pid or "", "")
|
||||
_vt = proto_void_type_map.get(_pid or "", "")
|
||||
item["protocolStatus"] = _st
|
||||
item["protocolStatusLabel"] = _PROTOCOL_STATUS_LABELS.get(_st, _st)
|
||||
item["voidType"] = _vt
|
||||
from app.core.protocol_status_display import format_protocol_status_label
|
||||
|
||||
item["protocolStatusLabel"] = format_protocol_status_label(
|
||||
_st, _vt, kind="protocol", db=db, tenant_no=tenant_no_for_status or None
|
||||
)
|
||||
return items
|
||||
|
||||
|
||||
@@ -1471,6 +1511,7 @@ def list_work_orders(
|
||||
items = _enrich_production_work_order_refs(db, items)
|
||||
items = _enrich_outbound_work_orders(db, tenant_no, items)
|
||||
items = enrich_work_order_fee_summaries(db, items, tenant_no)
|
||||
items = _enrich_unfinished_badge_counts(db, items)
|
||||
return items, int(total)
|
||||
|
||||
|
||||
@@ -1494,6 +1535,7 @@ def build_work_order_list_summaries(
|
||||
items = _enrich_production_work_order_refs(db, items)
|
||||
items = _enrich_outbound_work_orders(db, tenant_no, items)
|
||||
items = enrich_work_order_fee_summaries(db, items, tenant_no)
|
||||
items = _enrich_unfinished_badge_counts(db, items)
|
||||
return {item["id"]: item for item in items if item.get("id")}
|
||||
|
||||
|
||||
@@ -1540,6 +1582,42 @@ def _unfinished_work_order_filter(q):
|
||||
)
|
||||
|
||||
|
||||
def _enrich_unfinished_badge_counts(
|
||||
db: Session, items: List[Dict[str, Any]]
|
||||
) -> List[Dict[str, Any]]:
|
||||
"""列表项补充未完成卡片角标:待配置=1,已配置=未完成质检任务数(至少 1)。"""
|
||||
if not items:
|
||||
return items
|
||||
unfinished_ids = [
|
||||
x["id"]
|
||||
for x in items
|
||||
if (x.get("id") or "").strip() and x.get("workOrderStatus") in ("dpz", "ypz")
|
||||
]
|
||||
task_counts: Dict[str, int] = {}
|
||||
if unfinished_ids:
|
||||
rows = (
|
||||
db.query(BizQcTask.work_order_id, func.count(BizQcTask.id))
|
||||
.filter(
|
||||
BizQcTask.del_flag == 0,
|
||||
BizQcTask.work_order_id.in_(unfinished_ids),
|
||||
BizQcTask.task_status.notin_(("ywc", "yzf")),
|
||||
)
|
||||
.group_by(BizQcTask.work_order_id)
|
||||
.all()
|
||||
)
|
||||
task_counts = {wo_id: int(cnt or 0) for wo_id, cnt in rows}
|
||||
for item in items:
|
||||
status = item.get("workOrderStatus") or ""
|
||||
if status == "dpz":
|
||||
item["unfinishedBadgeCount"] = 1
|
||||
elif status == "ypz":
|
||||
pending = task_counts.get(item.get("id") or "", 0)
|
||||
item["unfinishedBadgeCount"] = max(pending, 1)
|
||||
else:
|
||||
item["unfinishedBadgeCount"] = 0
|
||||
return items
|
||||
|
||||
|
||||
def _aggregate_qc_tab_counts(rows) -> Dict[str, int]:
|
||||
counts = _empty_qc_tab_counts()
|
||||
for wo_type, rs, bt, cnt in rows:
|
||||
@@ -1930,6 +2008,130 @@ def list_process_qc_info_for_schedule(
|
||||
return _process_qc_info_items_from_wos(db, wos, tenant_no)
|
||||
|
||||
|
||||
def list_process_qc_info_for_production_work_order(
|
||||
db: Session,
|
||||
*,
|
||||
production_work_order_id: str,
|
||||
tenant_no: str,
|
||||
) -> List[Dict[str, Any]]:
|
||||
"""按生产工单返回生产过程派发的质检工单摘要。"""
|
||||
pid = (production_work_order_id or "").strip()
|
||||
if not pid or not tenant_no:
|
||||
return []
|
||||
wos = (
|
||||
db.query(BizQcWorkOrder)
|
||||
.filter(
|
||||
BizQcWorkOrder.tenant_no == tenant_no,
|
||||
BizQcWorkOrder.del_flag == 0,
|
||||
BizQcWorkOrder.production_work_order_id == pid,
|
||||
BizQcWorkOrder.trigger_source == "production",
|
||||
)
|
||||
.order_by(BizQcWorkOrder.create_time.asc())
|
||||
.all()
|
||||
)
|
||||
return _process_qc_info_items_from_wos(db, wos, tenant_no)
|
||||
|
||||
|
||||
def _gate_qc_info_for_inbound_production_work_order(
|
||||
db: Session, pwo, tenant_no: str
|
||||
) -> Optional[Dict[str, Any]]:
|
||||
"""入库生产工单关联的样本接收质检(trigger_source=reception)。"""
|
||||
from app.models.models import BizProductionWorkOrder
|
||||
|
||||
if not isinstance(pwo, BizProductionWorkOrder):
|
||||
return None
|
||||
source = (getattr(pwo, "reception_source", None) or "cell_storage").strip()
|
||||
if source not in ("cell_storage", "research_donation"):
|
||||
return None
|
||||
|
||||
q = db.query(BizQcWorkOrder).filter(
|
||||
BizQcWorkOrder.tenant_no == tenant_no,
|
||||
BizQcWorkOrder.del_flag == 0,
|
||||
BizQcWorkOrder.trigger_source == "reception",
|
||||
)
|
||||
wo = None
|
||||
if source == "cell_storage":
|
||||
code = (pwo.sample_code or "").strip()
|
||||
if code:
|
||||
wo = q.filter(
|
||||
BizQcWorkOrder.reception_source == "cell_storage",
|
||||
BizQcWorkOrder.sample_code == code,
|
||||
).first()
|
||||
else:
|
||||
psid = (pwo.protocol_sample_id or "").strip()
|
||||
if psid:
|
||||
wo = q.filter(BizQcWorkOrder.protocol_sample_id == psid).first()
|
||||
if not wo:
|
||||
code = (pwo.sample_code or "").strip()
|
||||
if code:
|
||||
wo = q.filter(BizQcWorkOrder.sample_code == code).first()
|
||||
if not wo and pwo.reception_id:
|
||||
wo = q.filter(BizQcWorkOrder.reception_id == pwo.reception_id).first()
|
||||
if not wo:
|
||||
return None
|
||||
return _qc_info_item(db, wo, tenant_no)
|
||||
|
||||
|
||||
def get_production_work_order_qc_info(
|
||||
db: Session,
|
||||
*,
|
||||
production_work_order_id: str,
|
||||
tenant_no: str,
|
||||
) -> Dict[str, Any]:
|
||||
"""生产工单质检只读摘要:入库含样本接收质检 + 本工单派发的生产过程质检。"""
|
||||
from app.models.models import BizProductionWorkOrder, BizSampleReception
|
||||
|
||||
pid = (production_work_order_id or "").strip()
|
||||
if not pid or not tenant_no:
|
||||
raise ValueError("生产工单不存在")
|
||||
pwo = (
|
||||
db.query(BizProductionWorkOrder)
|
||||
.filter(
|
||||
BizProductionWorkOrder.id == pid,
|
||||
BizProductionWorkOrder.tenant_no == tenant_no,
|
||||
BizProductionWorkOrder.del_flag == 0,
|
||||
)
|
||||
.first()
|
||||
)
|
||||
if not pwo:
|
||||
raise ValueError("生产工单不存在")
|
||||
|
||||
wo_type = (getattr(pwo, "work_order_type", None) or "inbound").strip()
|
||||
reception_source = (getattr(pwo, "reception_source", None) or "cell_storage").strip()
|
||||
show_gate_section = (
|
||||
wo_type == "inbound"
|
||||
and reception_source in ("cell_storage", "research_donation")
|
||||
)
|
||||
|
||||
gate_qc_info = None
|
||||
sample_reception = None
|
||||
if show_gate_section:
|
||||
gate_qc_info = _gate_qc_info_for_inbound_production_work_order(db, pwo, tenant_no)
|
||||
rec = None
|
||||
if pwo.reception_id:
|
||||
rec = (
|
||||
db.query(BizSampleReception)
|
||||
.filter(
|
||||
BizSampleReception.id == pwo.reception_id,
|
||||
BizSampleReception.del_flag == 0,
|
||||
)
|
||||
.first()
|
||||
)
|
||||
if rec:
|
||||
sample_reception = {"acceptConclusion": rec.accept_conclusion or ""}
|
||||
|
||||
process_qc_info_list = list_process_qc_info_for_production_work_order(
|
||||
db, production_work_order_id=pwo.id, tenant_no=tenant_no
|
||||
)
|
||||
|
||||
return {
|
||||
"showGateSection": show_gate_section,
|
||||
"gateQcInfo": gate_qc_info,
|
||||
"processQcInfoList": process_qc_info_list,
|
||||
"sampleReception": sample_reception,
|
||||
}
|
||||
|
||||
|
||||
def _resolve_reception_id_for_work_order_detail(
|
||||
db: Session, wo: BizQcWorkOrder, tenant_no: str
|
||||
) -> Optional[str]:
|
||||
@@ -1965,11 +2167,16 @@ def get_work_order_detail(
|
||||
enriched = enriched_list[0]
|
||||
out.update(
|
||||
{
|
||||
"receptionSource": enriched.get("receptionSource", out.get("receptionSource", "")),
|
||||
"receptionTime": enriched.get("receptionTime", ""),
|
||||
"handlerName": enriched.get("handlerName", ""),
|
||||
"labStorageCode": enriched.get("labStorageCode", ""),
|
||||
"sampleTypeName": enriched.get("sampleTypeName", ""),
|
||||
"receptionSourceLabel": enriched.get("receptionSourceLabel", ""),
|
||||
"motherName": enriched.get("motherName", ""),
|
||||
"newbornName": enriched.get("newbornName", ""),
|
||||
"protocolStatus": enriched.get("protocolStatus", ""),
|
||||
"protocolStatusLabel": enriched.get("protocolStatusLabel", ""),
|
||||
"cellProductCode": enriched.get("cellProductCode", ""),
|
||||
"cellProductName": enriched.get("cellProductName", ""),
|
||||
"cellProductTypeName": enriched.get("cellProductTypeName", ""),
|
||||
|
||||
@@ -27,6 +27,11 @@ from app.crud.protocol_donation_convert import (
|
||||
has_active_convert_link,
|
||||
upsert_convert_link_for_to_storage,
|
||||
)
|
||||
from app.utils.sample_special import (
|
||||
apply_sample_special_fields,
|
||||
sample_special_to_dict,
|
||||
validate_sample_special_raw,
|
||||
)
|
||||
from app.models.models import (
|
||||
BizCollectionProtocol,
|
||||
BizCollectionRegion,
|
||||
@@ -66,7 +71,7 @@ _DONATION_SAMPLE_CODE_SEQ_LEN = 4
|
||||
|
||||
|
||||
def _donation_sample_code_seq(code: str, *, date_str: str) -> Optional[int]:
|
||||
"""解析 KYJZ+YYYYMMDD+序号 中的序号;不匹配则返回 None。"""
|
||||
"""解析 KYJZ+YYYYMM+序号 中的序号;不匹配则返回 None。"""
|
||||
prefix = f"{_DONATION_SAMPLE_CODE_PREFIX}{date_str}"
|
||||
c = (code or "").strip()
|
||||
if not c.startswith(prefix):
|
||||
@@ -83,8 +88,8 @@ def next_donation_sample_code(
|
||||
tenant_no: str,
|
||||
extra_codes: Optional[List[str]] = None,
|
||||
) -> str:
|
||||
"""生成捐赠样本编码:KYJZ + YYYYMMDD + 4 位递增序号(0001 起)。"""
|
||||
date_str = datetime.now().strftime("%Y%m%d")
|
||||
"""生成捐赠样本编码:KYJZ + YYYYMM + 4 位递增序号(0001 起)。"""
|
||||
date_str = datetime.now().strftime("%Y%m")
|
||||
prefix = f"{_DONATION_SAMPLE_CODE_PREFIX}{date_str}"
|
||||
max_seq = 0
|
||||
|
||||
@@ -265,6 +270,7 @@ def _donation_to_dict(
|
||||
"expireDesc": d.expire_desc or "",
|
||||
"voidTime": _fmt_dt(d.void_time),
|
||||
"voidDesc": d.void_desc or "",
|
||||
"voidType": d.void_type or "",
|
||||
"toStorageTime": _fmt_dt(d.to_storage_time),
|
||||
"toStorageDesc": d.to_storage_desc or "",
|
||||
"tenantNo": d.tenant_no,
|
||||
@@ -364,6 +370,7 @@ def _sample_to_dict(s: BizResearchDonationSample) -> Dict[str, Any]:
|
||||
"detectStartDate": (s.detect_start_date or "").strip() if s.detect_start_date else "",
|
||||
"voidDate": (s.void_date or "").strip() if s.void_date else "",
|
||||
"storageExpireDate": (s.storage_expire_date or "").strip() if s.storage_expire_date else "",
|
||||
**sample_special_to_dict(s),
|
||||
"tenantNo": s.tenant_no,
|
||||
"orderNum": s.order_num if s.order_num is not None else 0,
|
||||
"remark": s.remark or "",
|
||||
@@ -698,6 +705,7 @@ def list_donations(
|
||||
donation_samples = sample_map.get(r.id, [])
|
||||
type_names: List[str] = []
|
||||
codes: List[str] = []
|
||||
sample_items: List[Dict[str, Any]] = []
|
||||
for s in donation_samples:
|
||||
type_name = sample_type_name_map.get(s.sample_type_id or "", "")
|
||||
if type_name:
|
||||
@@ -705,6 +713,16 @@ def list_donations(
|
||||
code = (s.sample_code or "").strip()
|
||||
if code:
|
||||
codes.append(code)
|
||||
sample_items.append(
|
||||
{
|
||||
"sampleTypeName": type_name,
|
||||
"sampleCode": code,
|
||||
"sampleStatus": (s.sample_status or "").strip(),
|
||||
"labStorageCode": lab_code_map.get(code, "") if code else "",
|
||||
**sample_special_to_dict(s),
|
||||
}
|
||||
)
|
||||
d["sampleItems"] = sample_items
|
||||
d["sampleTypeNames"] = ",".join(type_names)
|
||||
d["sampleCodes"] = ",".join(codes)
|
||||
d["labStorageCodes"] = ",".join((lab_code_map.get(c) or "") for c in codes)
|
||||
@@ -1239,8 +1257,8 @@ def submit_audit(
|
||||
|
||||
# 合法状态转换: {当前状态: {可转状态列表}}
|
||||
_VALID_TRANSITIONS: Dict[str, List[str]] = {
|
||||
"dsx": ["sxz", "yzf"],
|
||||
"sxz": ["ygq", "yzf", "zckc"],
|
||||
"dsx": ["sxz", "yzf", "sdfq"],
|
||||
"sxz": ["ygq", "yzf", "zckc", "sdfq"],
|
||||
}
|
||||
|
||||
|
||||
@@ -1251,6 +1269,7 @@ def change_status(
|
||||
new_status: str,
|
||||
desc: Optional[str] = None,
|
||||
time_val: Optional[Any] = None,
|
||||
void_type: Optional[str] = None,
|
||||
user_id: Optional[str] = None,
|
||||
tenant_no: str = "",
|
||||
) -> BizResearchDonation:
|
||||
@@ -1293,6 +1312,9 @@ def change_status(
|
||||
elif ns == "yzf":
|
||||
obj.void_time = effective_time
|
||||
obj.void_desc = (desc or "").strip() or None
|
||||
from app.crud.dict_data import normalize_void_type
|
||||
|
||||
obj.void_type = normalize_void_type(db, value=void_type or "", tenant_no=tenant_no)
|
||||
elif ns == "ygq":
|
||||
obj.expire_time = effective_time
|
||||
obj.expire_desc = (desc or "").strip() or None
|
||||
@@ -1493,6 +1515,8 @@ def convert_from_storage(
|
||||
detect_start_date=ss.detect_start_date,
|
||||
void_date=ss.void_date,
|
||||
storage_expire_date=ss.storage_expire_date,
|
||||
is_special=getattr(ss, "is_special", 0),
|
||||
special_remark=getattr(ss, "special_remark", None),
|
||||
tenant_no=tenant_no,
|
||||
order_num=idx,
|
||||
create_by=user_id,
|
||||
@@ -1735,6 +1759,8 @@ def convert_to_storage(
|
||||
detect_start_date=ss.detect_start_date,
|
||||
void_date=ss.void_date,
|
||||
storage_expire_date=ss.storage_expire_date,
|
||||
is_special=ss.is_special,
|
||||
special_remark=ss.special_remark,
|
||||
tenant_no=tenant_no,
|
||||
order_num=idx,
|
||||
create_by=user_id,
|
||||
@@ -1979,6 +2005,7 @@ def _create_samples(
|
||||
assigned_codes: List[str] = []
|
||||
for idx, raw_item in enumerate(samples or []):
|
||||
raw = _normalize_fields(raw_item)
|
||||
validate_sample_special_raw(raw, index=idx)
|
||||
code = (raw.get("sample_code") or "").strip()
|
||||
if not code and (raw.get("sample_type_id") or "").strip():
|
||||
code = next_donation_sample_code(
|
||||
@@ -2020,6 +2047,7 @@ def _create_samples(
|
||||
for k in _SAMPLE_INT_FIELDS:
|
||||
if k in raw:
|
||||
setattr(obj, k, raw[k])
|
||||
apply_sample_special_fields(obj, raw)
|
||||
db.add(obj)
|
||||
db.flush()
|
||||
result.append(obj)
|
||||
|
||||
@@ -9,6 +9,7 @@ from sqlalchemy import and_, or_
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from app.core.utils import format_date
|
||||
from app.utils.sample_special import sample_special_to_dict
|
||||
from app.models.models import (
|
||||
BizCellSampleType,
|
||||
BizCollectionHospital,
|
||||
@@ -226,8 +227,7 @@ def list_donation_sample_collections(
|
||||
status = (dsample.sample_status or "").strip() if dsample else ""
|
||||
region_id = (ci.region_id or "").strip() if ci else ""
|
||||
hospital_id = (ci.hospital_id or "").strip() if ci else ""
|
||||
items.append(
|
||||
_row_to_dict(
|
||||
item = _row_to_dict(
|
||||
donation_sample_id=dsample.id,
|
||||
research_donation_id=donation.id if donation else "",
|
||||
donation_no=(donation.donation_no or "") if donation else "",
|
||||
@@ -245,7 +245,8 @@ def list_donation_sample_collections(
|
||||
sample_collect_time=_fmt_dt(ci.sample_collect_time) if ci else "",
|
||||
maternal_blood_collect_time=_fmt_dt(ci.maternal_blood_collect_time) if ci else "",
|
||||
)
|
||||
)
|
||||
item.update(sample_special_to_dict(dsample))
|
||||
items.append(item)
|
||||
if items and tenant_no:
|
||||
from app.crud import sample_reception as reception_svc
|
||||
|
||||
|
||||
@@ -9,6 +9,7 @@ from sqlalchemy.orm import Session
|
||||
|
||||
from app.core.utils import generate_uuid
|
||||
from app.crud.collection_protocol import urls_to_attachment_list
|
||||
from app.utils.sample_special import sample_special_to_dict
|
||||
from app.crud import sample_reception_check_result as check_result_svc
|
||||
from app.crud import sample_production_reception as prod_reception_svc
|
||||
from app.models.models import (
|
||||
@@ -36,8 +37,8 @@ SAMPLE_RECEPTION_EDIT_ROLE = "质量主管"
|
||||
# 科研捐赠表默认 general_ci,样本接收等为 unicode_ci,跨表比较需统一
|
||||
_UNICODE_CI = "utf8mb4_unicode_ci"
|
||||
|
||||
# 协议/捐赠单已作废时不需样本接收
|
||||
_VOIDED_PROTOCOL_STATUS = "yzf"
|
||||
# 协议/捐赠单已作废或属地废弃时不需样本接收
|
||||
_INACTIVE_PROTOCOL_STATUSES = ("yzf", "sdfq")
|
||||
|
||||
|
||||
def _donation_sample_id_col(col):
|
||||
@@ -172,7 +173,7 @@ def _donation_sample_pending_query(db: Session, tenant_no: str, keyword: Optiona
|
||||
BizResearchDonationSample.del_flag == 0,
|
||||
BizResearchDonationSample.tenant_no == tenant_no,
|
||||
BizResearchDonation.tenant_no == tenant_no,
|
||||
BizResearchDonation.donation_status != _VOIDED_PROTOCOL_STATUS,
|
||||
BizResearchDonation.donation_status.notin_(_INACTIVE_PROTOCOL_STATUSES),
|
||||
~received_exists,
|
||||
)
|
||||
if keyword and keyword.strip():
|
||||
@@ -285,6 +286,7 @@ def _donation_rows_to_sample_list_items(
|
||||
),
|
||||
"carrierName": (transport.carrier_name if transport else "") or "",
|
||||
"carrierPhone": (transport.carrier_phone if transport else "") or "",
|
||||
**sample_special_to_dict(sample),
|
||||
}
|
||||
if reception_map and sample.id in reception_map:
|
||||
rec = reception_map[sample.id]
|
||||
@@ -324,7 +326,7 @@ def _sample_pending_query(db: Session, tenant_no: str, keyword: Optional[str] =
|
||||
BizProtocolSample.del_flag == 0,
|
||||
BizProtocolSample.tenant_no == tenant_no,
|
||||
BizCollectionProtocol.tenant_no == tenant_no,
|
||||
BizCollectionProtocol.protocol_status != _VOIDED_PROTOCOL_STATUS,
|
||||
BizCollectionProtocol.protocol_status.notin_(_INACTIVE_PROTOCOL_STATUSES),
|
||||
~received_exists,
|
||||
)
|
||||
if keyword and keyword.strip():
|
||||
@@ -444,6 +446,7 @@ def _rows_to_sample_list_items(
|
||||
),
|
||||
"carrierName": (transport.carrier_name if transport else "") or "",
|
||||
"carrierPhone": (transport.carrier_phone if transport else "") or "",
|
||||
**sample_special_to_dict(sample),
|
||||
"sourceType": "cell_storage",
|
||||
"sourceTypeLabel": "细胞存储",
|
||||
"paymentSummary": payment_summary_map.get(protocol.id) if protocol else None,
|
||||
|
||||
@@ -8,6 +8,7 @@ from sqlalchemy import func, or_
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from app.core.utils import generate_uuid
|
||||
from app.utils.sample_special import sample_special_to_dict
|
||||
from app.models.models import (
|
||||
BizCollectionProtocol,
|
||||
BizProductionWorkOrder,
|
||||
@@ -37,6 +38,7 @@ _PROTOCOL_STATUS_LABELS = {
|
||||
"sxz": "生效中",
|
||||
"ygq": "已过期",
|
||||
"yzf": "已作废",
|
||||
"sdfq": "属地废弃",
|
||||
"zky": "转科研",
|
||||
}
|
||||
_DONATION_STATUS_LABELS = {
|
||||
@@ -44,6 +46,7 @@ _DONATION_STATUS_LABELS = {
|
||||
"sxz": "生效中",
|
||||
"ygq": "已过期",
|
||||
"yzf": "已作废",
|
||||
"sdfq": "属地废弃",
|
||||
"zckc": "转细胞存储",
|
||||
}
|
||||
def _fmt_dt(t: Optional[datetime]) -> str:
|
||||
@@ -255,15 +258,27 @@ def _enrich_review_list_items(db: Session, items: List[Dict[str, Any]]) -> List[
|
||||
donation = donation_map.get(pid)
|
||||
if donation:
|
||||
st = donation.donation_status or ""
|
||||
vt = donation.void_type or ""
|
||||
item["protocolStatus"] = st
|
||||
item["protocolStatusLabel"] = _DONATION_STATUS_LABELS.get(st, st)
|
||||
item["voidType"] = vt
|
||||
from app.core.protocol_status_display import format_protocol_status_label
|
||||
|
||||
item["protocolStatusLabel"] = format_protocol_status_label(
|
||||
st, vt, kind="donation", db=db, tenant_no=donation.tenant_no
|
||||
)
|
||||
item["motherName"] = dparty_map.get(pid, "")
|
||||
else:
|
||||
proto = proto_map.get(pid)
|
||||
if proto:
|
||||
st = getattr(proto, "protocol_status", "") or ""
|
||||
vt = getattr(proto, "void_type", "") or ""
|
||||
item["protocolStatus"] = st
|
||||
item["protocolStatusLabel"] = _PROTOCOL_STATUS_LABELS.get(st, st)
|
||||
item["voidType"] = vt
|
||||
from app.core.protocol_status_display import format_protocol_status_label
|
||||
|
||||
item["protocolStatusLabel"] = format_protocol_status_label(
|
||||
st, vt, kind="protocol", db=db, tenant_no=proto.tenant_no
|
||||
)
|
||||
item["motherName"] = party_map.get(pid, "")
|
||||
return items
|
||||
|
||||
@@ -385,6 +400,7 @@ def _build_cell_storage_protocol_info(db: Session, rev: BizStorageReleaseReview)
|
||||
info["sampleTypeName"] = type_map.get(sample.sample_type_id or "", "")
|
||||
info["collectAmount"] = float(sample.collect_amount) if sample.collect_amount else None
|
||||
info["storageYears"] = sample.storage_years
|
||||
info.update(sample_special_to_dict(sample))
|
||||
if party:
|
||||
info["motherName"] = party.mother_name or ""
|
||||
info["motherPhone"] = party.mother_phone or ""
|
||||
@@ -442,6 +458,7 @@ def _build_research_donation_protocol_info(db: Session, rev: BizStorageReleaseRe
|
||||
info["sampleTypeName"] = type_map.get(dsample.sample_type_id or "", "")
|
||||
info["collectAmount"] = float(dsample.collect_amount) if dsample.collect_amount else None
|
||||
info["storageYears"] = dsample.storage_years
|
||||
info.update(sample_special_to_dict(dsample))
|
||||
if party:
|
||||
info["motherName"] = party.mother_name or ""
|
||||
info["motherPhone"] = party.mother_phone or ""
|
||||
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_work_order_py", "label": "qc_work_order.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L1"}, {"id": "crud_qc_work_order_resolve_outbound_biz_type_for_schedule", "label": "resolve_outbound_biz_type_for_schedule()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L96"}, {"id": "crud_qc_work_order_dec", "label": "_dec()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L137"}, {"id": "crud_qc_work_order_fmt_dt", "label": "_fmt_dt()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L143"}, {"id": "crud_qc_work_order_normalize_date_bound", "label": "_normalize_date_bound()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L147"}, {"id": "crud_qc_work_order_reception_source_label", "label": "_reception_source_label()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L154"}, {"id": "crud_qc_work_order_qc_biz_type_label", "label": "_qc_biz_type_label()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L159"}, {"id": "crud_qc_work_order_work_order_qc_biz_type", "label": "_work_order_qc_biz_type()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L164"}, {"id": "crud_qc_work_order_validate_cell_product_id", "label": "_validate_cell_product_id()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L171"}, {"id": "crud_qc_work_order_enrich_work_order_cell_products", "label": "_enrich_work_order_cell_products()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L183"}, {"id": "crud_qc_work_order_enrich_work_order_step_outputs", "label": "_enrich_work_order_step_outputs()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L212"}, {"id": "crud_qc_work_order_enrich_work_order_qc_targets", "label": "_enrich_work_order_qc_targets()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L251"}, {"id": "crud_qc_work_order_enrich_outbound_work_orders", "label": "_enrich_outbound_work_orders()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L258"}, {"id": "crud_qc_work_order_outbound_qc_work_order_ids_by_keyword", "label": "_outbound_qc_work_order_ids_by_keyword()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L379"}, {"id": "crud_qc_work_order_inbound_qc_work_order_ids_by_mother_name", "label": "_inbound_qc_work_order_ids_by_mother_name()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L426"}, {"id": "crud_qc_work_order_accept_conclusion_label", "label": "_accept_conclusion_label()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L492"}, {"id": "crud_qc_work_order_load_sample_type_name_map", "label": "_load_sample_type_name_map()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L497"}, {"id": "crud_qc_work_order_effective_reception_source", "label": "_effective_reception_source()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L509"}, {"id": "crud_qc_work_order_effective_donation_sample_id", "label": "_effective_donation_sample_id()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L518"}, {"id": "crud_qc_work_order_effective_protocol_sample_id", "label": "_effective_protocol_sample_id()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L527"}, {"id": "crud_qc_work_order_sample_type_name_for_item", "label": "_sample_type_name_for_item()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L535"}, {"id": "crud_qc_work_order_sample_type_name_for_reception", "label": "_sample_type_name_for_reception()", "file_type": "code", "source_file": "/Users/wuzLine truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_dict_data_py", "label": "dict_data.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_data.py", "source_location": "L1"}, {"id": "crud_dict_data_row_to_dict", "label": "_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_data.py", "source_location": "L15"}, {"id": "crud_dict_data_list_dict_data", "label": "list_dict_data()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_data.py", "source_location": "L29"}, {"id": "crud_dict_data_get_dict_data", "label": "get_dict_data()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_data.py", "source_location": "L67"}, {"id": "crud_dict_data_create_dict_data", "label": "create_dict_data()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_data.py", "source_location": "L75"}, {"id": "crud_dict_data_update_dict_data", "label": "update_dict_data()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_data.py", "source_location": "L107"}, {"id": "crud_dict_data_soft_delete_dict_data", "label": "soft_delete_dict_data()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_data.py", "source_location": "L136"}, {"id": "crud_dict_data_list_dict_data_options", "label": "list_dict_data_options()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_data.py", "source_location": "L150"}, {"id": "crud_dict_data_is_dict_value_valid", "label": "is_dict_value_valid()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_data.py", "source_location": "L162"}, {"id": "crud_dict_data_normalize_transfer_type", "label": "normalize_transfer_type()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_data.py", "source_location": "L184"}, {"id": "crud_dict_data_normalize_void_type", "label": "normalize_void_type()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_data.py", "source_location": "L200"}, {"id": "crud_dict_data_total_pages", "label": "total_pages()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_data.py", "source_location": "L216"}, {"id": "crud_dict_data_rationale_1", "label": "\u5b57\u5178\u6570\u636e CRUD\uff08sys_dict_data\uff09", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_data.py", "source_location": "L1"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_dict_data_py", "target": "math", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_data.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_dict_data_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_data.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_dict_data_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_data.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_dict_data_py", "target": "sqlalchemy", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_data.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_dict_data_py", "target": "sqlalchemy_orm", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_data.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_dict_data_py", "target": "app_core_utils", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_data.py", "source_location": "L11", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_dict_data_py", "target": "app_models_models", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_data.py", "source_location": "L12", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_dict_data_py", "target": "crud_dict_data_row_to_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_data.py", "source_location": "L15", "weight": 1.0}, {"source": "users_wuzilong_work_00codeLine truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "label": "models.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1"}, {"id": "models_models_userrole", "label": "UserRole", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L10"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "models_models_sysuser", "label": "SysUser", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L22"}, {"id": "base", "label": "Base", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "models_models_sysrole", "label": "SysRole", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L48"}, {"id": "models_models_sysuserrole", "label": "SysUserRole", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L68"}, {"id": "models_models_sysrolemenu", "label": "SysRoleMenu", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L87"}, {"id": "models_models_sysroledatascopedetail", "label": "SysRoleDataScopeDetail", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L106"}, {"id": "models_models_sysmenu", "label": "SysMenu", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L126"}, {"id": "models_models_sysdept", "label": "SysDept", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L152"}, {"id": "models_models_systenant", "label": "SysTenant", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L175"}, {"id": "models_models_syssite", "label": "SysSite", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L195"}, {"id": "models_models_syspost", "label": "SysPost", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L221"}, {"id": "models_models_sysuserpost", "label": "SysUserPost", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L241"}, {"id": "models_models_bizitemunit", "label": "BizItemUnit", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L260"}, {"id": "models_models_bizexpresscompany", "label": "BizExpressCompany", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L279"}, {"id": "models_models_bizcustomer", "label": "BizCustomer", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L299"}, {"id": "models_models_bizcellsampletype", "label": "BizCellSampleType", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L322"}, {"id": "models_models_bizcollectionregion", "label": "BizCollectionRegion", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L345"}, {"id": "models_models_bizcollectionhospital", "label": "BizCollectionHospital", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L363"}, {"id": "models_models_bizcollectionprotocolno", "label": "BizCollectionProtocolNo", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L382"}, {"id": "models_models_bizbiznosequence", "label": "BizBizNoSequence", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L404"}, {"id": "models_models_bizsamplecode", "label": "BizSampleCode", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L424"}, {"id": "models_models_sysdicttype", "label": "SysDictType", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L452"}, {"id": "models_models_sysethnic", "label": "SysEthnic", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L471"}, {"id": "models_models_sysdictdata", "label": "SysDictData", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location"Line truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_pre_transit_sample_py", "label": "pre_transit_sample.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/pre_transit_sample.py", "source_location": "L1"}, {"id": "crud_pre_transit_sample_is_uncollected_status", "label": "_is_uncollected_status()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/pre_transit_sample.py", "source_location": "L51"}, {"id": "crud_pre_transit_sample_is_in_transit_sample", "label": "_is_in_transit_sample()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/pre_transit_sample.py", "source_location": "L55"}, {"id": "crud_pre_transit_sample_cell_received_exists", "label": "_cell_received_exists()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/pre_transit_sample.py", "source_location": "L59"}, {"id": "crud_pre_transit_sample_donation_received_exists", "label": "_donation_received_exists()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/pre_transit_sample.py", "source_location": "L76"}, {"id": "crud_pre_transit_sample_apply_collection_keyword", "label": "_apply_collection_keyword()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/pre_transit_sample.py", "source_location": "L93"}, {"id": "crud_pre_transit_sample_apply_donation_keyword", "label": "_apply_donation_keyword()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/pre_transit_sample.py", "source_location": "L129"}, {"id": "crud_pre_transit_sample_apply_create_time_filter", "label": "_apply_create_time_filter()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/pre_transit_sample.py", "source_location": "L165"}, {"id": "crud_pre_transit_sample_apply_collection_sample_collect_time_filter", "label": "_apply_collection_sample_collect_time_filter()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/pre_transit_sample.py", "source_location": "L173"}, {"id": "crud_pre_transit_sample_apply_donation_sample_collect_time_filter", "label": "_apply_donation_sample_collect_time_filter()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/pre_transit_sample.py", "source_location": "L200"}, {"id": "crud_pre_transit_sample_earliest_eta", "label": "_earliest_eta()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/pre_transit_sample.py", "source_location": "L227"}, {"id": "crud_pre_transit_sample_build_sample_items", "label": "_build_sample_items()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/pre_transit_sample.py", "source_location": "L234"}, {"id": "crud_pre_transit_sample_summarize_in_transit_items", "label": "_summarize_in_transit_items()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/pre_transit_sample.py", "source_location": "L283"}, {"id": "crud_pre_transit_sample_summarize_pre_delivery", "label": "_summarize_pre_delivery()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/pre_transit_sample.py", "source_location": "L290"}, {"id": "crud_pre_transit_sample_list_in_transit_collection_ids", "label": "_list_in_transit_collection_ids()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/pre_transit_sample.py", "source_location": "L297"}, {"id": "crud_pre_transit_sample_list_in_transit_donation_ids", "label": "_list_in_transit_donation_ids()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/pre_transit_sample.py", "source_location": "L339"}, {"id": "crud_pre_transit_sample_list_pre_delivery_collection_ids", "label": "_list_pre_delivery_collection_ids()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/pre_transit_sample.py", "source_location": "L381"}, {"id": "crud_pre_transit_sample_list_pre_delivery_donation_ids", "label": "_list_pre_delivery_donation_ids()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/pre_transit_sample.py", "source_location": "L450"}, {"id": "crud_pre_transit_sample_sort_key_in_transit", "label": "_sort_key_in_transit()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/pre_transit_sample.py", "source_location": "L519"}, {"id": "crud_pre_transit_sample_sort_key_pre_delivery", "label": "_sort_key_pre_delivery()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/pre_transit_sample.py", "source_location": "L524"}, {"id": "crud_pre_transit_sample_hydrate_collection_rows", "label": "_hydrate_collection_rows()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/apLine truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_task_py", "label": "qc_task.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L1"}, {"id": "crud_qc_task_dec", "label": "_dec()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L37"}, {"id": "crud_qc_task_fmt_dt", "label": "_fmt_dt()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L43"}, {"id": "crud_qc_task_gen_task_no", "label": "_gen_task_no()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L47"}, {"id": "crud_qc_task_conclusion_label", "label": "_conclusion_label()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L60"}, {"id": "crud_qc_task_task_to_dict", "label": "_task_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L65"}, {"id": "crud_qc_task_task_work_order_context", "label": "_task_work_order_context()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L99"}, {"id": "crud_qc_task_merge_work_order_summary_into_task", "label": "_merge_work_order_summary_into_task()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L173"}, {"id": "crud_qc_task_enrich_mine_tasks_with_work_order_summaries", "label": "_enrich_mine_tasks_with_work_order_summaries()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L195"}, {"id": "crud_qc_task_enrich_tasks_reception_fields", "label": "_enrich_tasks_reception_fields()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L215"}, {"id": "crud_qc_task_task_row_to_dict", "label": "_task_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L323"}, {"id": "crud_qc_task_create_task_for_line", "label": "create_task_for_line()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L334"}, {"id": "crud_qc_task_list_tasks", "label": "list_tasks()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L381"}, {"id": "crud_qc_task_list_mine_tasks", "label": "list_mine_tasks()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L462"}, {"id": "crud_qc_task_assert_task_assignee", "label": "assert_task_assignee()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L554"}, {"id": "crud_qc_task_list_tasks_by_work_order", "label": "list_tasks_by_work_order()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L561"}, {"id": "crud_qc_task_list_tasks_by_work_order_ids", "label": "list_tasks_by_work_order_ids()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L568"}, {"id": "crud_qc_task_get_task", "label": "get_task()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L598"}, {"id": "crud_qc_task_get_task_detail", "label": "get_task_detail()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L607"}, {"id": "crud_qc_task_start_task", "label": "start_task()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L640"}, {"id": "crud_qc_task_set_task_remark", "label": "_set_task_remark()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L657"}, {"id": "crud_qc_task_complete_task", "label": "complete_task()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L661"}, {"id": "crud_qc_task_apply_task_result", "label": "apply_task_result()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L702"}, {"id": "crud_qc_task_update_task_attachments", "label": "update_task_attachments()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L754"}, {"id": "crud_qc_task_create_qc_task_manual", "label": "create_qc_task_manual()", "file_type": "code",Line truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_production_task_py", "label": "production_task.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py", "source_location": "L1"}, {"id": "crud_production_task_require_requisition_for_catalog_material", "label": "_require_requisition_for_catalog_material()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py", "source_location": "L53"}, {"id": "crud_production_task_production_conclusion_label", "label": "_production_conclusion_label()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py", "source_location": "L105"}, {"id": "crud_production_task_fmt_dt", "label": "_fmt_dt()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py", "source_location": "L112"}, {"id": "crud_production_task_normalize_date_bound", "label": "_normalize_date_bound()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py", "source_location": "L116"}, {"id": "crud_production_task_enrich_outbound_task_items", "label": "_enrich_outbound_task_items()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py", "source_location": "L123"}, {"id": "crud_production_task_generate_task_no", "label": "_generate_task_no()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py", "source_location": "L257"}, {"id": "crud_production_task_task_to_dict", "label": "_task_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py", "source_location": "L271"}, {"id": "crud_production_task_step_to_dict", "label": "_step_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py", "source_location": "L300"}, {"id": "crud_production_task_step_reagent_to_dict", "label": "_step_reagent_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py", "source_location": "L325"}, {"id": "crud_production_task_step_configured_reagent_to_dict", "label": "_step_configured_reagent_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py", "source_location": "L342"}, {"id": "crud_production_task_step_consumable_to_dict", "label": "_step_consumable_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py", "source_location": "L358"}, {"id": "crud_production_task_step_output_to_dict", "label": "_step_output_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py", "source_location": "L375"}, {"id": "crud_production_task_step_data_collection_to_dict", "label": "_step_data_collection_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py", "source_location": "L387"}, {"id": "crud_production_task_task_input_to_dict", "label": "_task_input_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py", "source_location": "L399"}, {"id": "crud_production_task_task_output_to_dict", "label": "_task_output_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py", "source_location": "L421"}, {"id": "crud_production_task_soft_delete_sub", "label": "_soft_delete_sub()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py", "source_location": "L446"}, {"id": "crud_production_task_resolve_sub_table_order_num", "label": "_resolve_sub_table_order_num()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py", "source_location": "L459"}, {"id": "crud_production_task_empty_step_sub_tables", "label": "_empty_step_sub_tables()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py", "source_location": "L468"}, {"id": "crud_production_task_batch_load_step_sub_tables", "label": "_batch_load_step_sub_tables()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py", "source_location": "L478"}, {"id": "crud_production_task_step_sub_tables_to_dict", "label": "_step_sub_tables_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py", "source_location": "L578"}, {"id": "crud_production_task_clone_step_reagents", "label": "_clone_step_reagents()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py", "source_locatiLine truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_storage_release_review_py", "label": "storage_release_review.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_release_review.py", "source_location": "L1"}, {"id": "crud_storage_release_review_fmt_dt", "label": "_fmt_dt()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_release_review.py", "source_location": "L52"}, {"id": "crud_storage_release_review_total_pages", "label": "total_pages()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_release_review.py", "source_location": "L56"}, {"id": "crud_storage_release_review_row_to_dict", "label": "_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_release_review.py", "source_location": "L62"}, {"id": "crud_storage_release_review_create_review_from_reception", "label": "create_review_from_reception()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_release_review.py", "source_location": "L90"}, {"id": "crud_storage_release_review_list_reviews", "label": "list_reviews()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_release_review.py", "source_location": "L128"}, {"id": "crud_storage_release_review_enrich_review_list_items", "label": "_enrich_review_list_items()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_release_review.py", "source_location": "L193"}, {"id": "crud_storage_release_review_get_user_name", "label": "_get_user_name()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_release_review.py", "source_location": "L286"}, {"id": "crud_storage_release_review_get_review_detail", "label": "get_review_detail()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_release_review.py", "source_location": "L291"}, {"id": "crud_storage_release_review_build_cell_storage_protocol_info", "label": "_build_cell_storage_protocol_info()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_release_review.py", "source_location": "L355"}, {"id": "crud_storage_release_review_build_research_donation_protocol_info", "label": "_build_research_donation_protocol_info()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_release_review.py", "source_location": "L413"}, {"id": "crud_storage_release_review_build_cell_storage_transport_info", "label": "_build_cell_storage_transport_info()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_release_review.py", "source_location": "L471"}, {"id": "crud_storage_release_review_build_research_donation_transport_info", "label": "_build_research_donation_transport_info()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_release_review.py", "source_location": "L505"}, {"id": "crud_storage_release_review_build_reception_info", "label": "_build_reception_info()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_release_review.py", "source_location": "L539"}, {"id": "crud_storage_release_review_build_gate_qc_info", "label": "_build_gate_qc_info()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_release_review.py", "source_location": "L562"}, {"id": "crud_storage_release_review_build_process_qc_info_list", "label": "_build_process_qc_info_list()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_release_review.py", "source_location": "L582"}, {"id": "crud_storage_release_review_build_production_info", "label": "_build_production_info()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_release_review.py", "source_location": "L593"}, {"id": "crud_storage_release_review_submit_review", "label": "submit_review()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_release_review.py", "source_location": "L611"}, {"id": "crud_storage_release_review_batch_submit_review", "label": "batch_submit_review()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_release_review.py", "source_location": "L646"}, {"id": "crud_storage_release_review_store_sample", "label": "store_sample()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_release_review.py", "source_location": "L675"}, {"id": "crud_storage_release_review_batch_store_samples", "label": "batch_store_samples()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_releLine truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_protocol_sample_collection_py", "label": "protocol_sample_collection.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/protocol_sample_collection.py", "source_location": "L1"}, {"id": "crud_protocol_sample_collection_total_pages", "label": "total_pages()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/protocol_sample_collection.py", "source_location": "L24"}, {"id": "crud_protocol_sample_collection_fmt_dt", "label": "_fmt_dt()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/protocol_sample_collection.py", "source_location": "L30"}, {"id": "crud_protocol_sample_collection_sample_status_label", "label": "_sample_status_label()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/protocol_sample_collection.py", "source_location": "L34"}, {"id": "crud_protocol_sample_collection_row_to_dict", "label": "_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/protocol_sample_collection.py", "source_location": "L43"}, {"id": "crud_protocol_sample_collection_base_query", "label": "_base_query()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/protocol_sample_collection.py", "source_location": "L82"}, {"id": "crud_protocol_sample_collection_apply_sample_status_filter", "label": "_apply_sample_status_filter()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/protocol_sample_collection.py", "source_location": "L118"}, {"id": "crud_protocol_sample_collection_list_protocol_sample_collections", "label": "list_protocol_sample_collections()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/protocol_sample_collection.py", "source_location": "L132"}, {"id": "crud_protocol_sample_collection_rationale_1", "label": "\u91c7\u96c6\u534f\u8bae\u6837\u672c\u91c7\u96c6\u4fe1\u606f\u5217\u8868 CRUD\uff08\u6837\u672c\u4fe1\u606f\u7ba1\u7406 \u00b7 \u6837\u672c\u91c7\u96c6\u4fe1\u606f Tab\uff09", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/protocol_sample_collection.py", "source_location": "L1"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_protocol_sample_collection_py", "target": "math", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/protocol_sample_collection.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_protocol_sample_collection_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/protocol_sample_collection.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_protocol_sample_collection_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/protocol_sample_collection.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_protocol_sample_collection_py", "target": "sqlalchemy", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/protocol_sample_collection.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_protocol_sample_collection_py", "target": "sqlalchemy_orm", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/protocol_sample_collection.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_protocol_sample_collection_py", "target": "app_core_utils", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/protocol_sample_collection.py", "source_location": "L11", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_protocol_sample_collection_py", "target": "app_utils_sample_special", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/protocol_sample_collection.py", "source_location": "L12", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_protocol_sample_collection_py", "target": "app_models_models", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/protocol_sample_collection.py", "source_location": "L13", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_protocol_sample_collection_py", "target": "crud_protocol_sample_collection_total_pLine truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_pre_transit_sample_py", "label": "pre_transit_sample.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/pre_transit_sample.py", "source_location": "L1"}, {"id": "crud_pre_transit_sample_is_uncollected_status", "label": "_is_uncollected_status()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/pre_transit_sample.py", "source_location": "L51"}, {"id": "crud_pre_transit_sample_is_in_transit_sample", "label": "_is_in_transit_sample()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/pre_transit_sample.py", "source_location": "L55"}, {"id": "crud_pre_transit_sample_cell_received_exists", "label": "_cell_received_exists()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/pre_transit_sample.py", "source_location": "L59"}, {"id": "crud_pre_transit_sample_donation_received_exists", "label": "_donation_received_exists()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/pre_transit_sample.py", "source_location": "L76"}, {"id": "crud_pre_transit_sample_apply_collection_keyword", "label": "_apply_collection_keyword()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/pre_transit_sample.py", "source_location": "L93"}, {"id": "crud_pre_transit_sample_apply_donation_keyword", "label": "_apply_donation_keyword()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/pre_transit_sample.py", "source_location": "L129"}, {"id": "crud_pre_transit_sample_apply_create_time_filter", "label": "_apply_create_time_filter()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/pre_transit_sample.py", "source_location": "L165"}, {"id": "crud_pre_transit_sample_apply_collection_sample_collect_time_filter", "label": "_apply_collection_sample_collect_time_filter()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/pre_transit_sample.py", "source_location": "L173"}, {"id": "crud_pre_transit_sample_apply_donation_sample_collect_time_filter", "label": "_apply_donation_sample_collect_time_filter()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/pre_transit_sample.py", "source_location": "L200"}, {"id": "crud_pre_transit_sample_earliest_eta", "label": "_earliest_eta()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/pre_transit_sample.py", "source_location": "L227"}, {"id": "crud_pre_transit_sample_build_sample_items", "label": "_build_sample_items()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/pre_transit_sample.py", "source_location": "L234"}, {"id": "crud_pre_transit_sample_summarize_in_transit_items", "label": "_summarize_in_transit_items()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/pre_transit_sample.py", "source_location": "L283"}, {"id": "crud_pre_transit_sample_summarize_pre_delivery", "label": "_summarize_pre_delivery()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/pre_transit_sample.py", "source_location": "L290"}, {"id": "crud_pre_transit_sample_list_in_transit_collection_ids", "label": "_list_in_transit_collection_ids()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/pre_transit_sample.py", "source_location": "L297"}, {"id": "crud_pre_transit_sample_list_in_transit_donation_ids", "label": "_list_in_transit_donation_ids()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/pre_transit_sample.py", "source_location": "L339"}, {"id": "crud_pre_transit_sample_list_pre_delivery_collection_ids", "label": "_list_pre_delivery_collection_ids()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/pre_transit_sample.py", "source_location": "L381"}, {"id": "crud_pre_transit_sample_list_pre_delivery_donation_ids", "label": "_list_pre_delivery_donation_ids()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/pre_transit_sample.py", "source_location": "L450"}, {"id": "crud_pre_transit_sample_sort_key_in_transit", "label": "_sort_key_in_transit()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/pre_transit_sample.py", "source_location": "L519"}, {"id": "crud_pre_transit_sample_sort_key_pre_delivery", "label": "_sort_key_pre_delivery()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/pre_transit_sample.py", "source_location": "L524"}, {"id": "crud_pre_transit_sample_hydrate_collection_rows", "label": "_hydrate_collection_rows()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/apLine truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_storage_release_review_py", "label": "storage_release_review.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_release_review.py", "source_location": "L1"}, {"id": "crud_storage_release_review_fmt_dt", "label": "_fmt_dt()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_release_review.py", "source_location": "L52"}, {"id": "crud_storage_release_review_total_pages", "label": "total_pages()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_release_review.py", "source_location": "L56"}, {"id": "crud_storage_release_review_row_to_dict", "label": "_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_release_review.py", "source_location": "L62"}, {"id": "crud_storage_release_review_create_review_from_reception", "label": "create_review_from_reception()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_release_review.py", "source_location": "L90"}, {"id": "crud_storage_release_review_list_reviews", "label": "list_reviews()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_release_review.py", "source_location": "L128"}, {"id": "crud_storage_release_review_enrich_review_list_items", "label": "_enrich_review_list_items()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_release_review.py", "source_location": "L193"}, {"id": "crud_storage_release_review_get_user_name", "label": "_get_user_name()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_release_review.py", "source_location": "L274"}, {"id": "crud_storage_release_review_get_review_detail", "label": "get_review_detail()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_release_review.py", "source_location": "L279"}, {"id": "crud_storage_release_review_build_cell_storage_protocol_info", "label": "_build_cell_storage_protocol_info()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_release_review.py", "source_location": "L343"}, {"id": "crud_storage_release_review_build_research_donation_protocol_info", "label": "_build_research_donation_protocol_info()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_release_review.py", "source_location": "L401"}, {"id": "crud_storage_release_review_build_cell_storage_transport_info", "label": "_build_cell_storage_transport_info()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_release_review.py", "source_location": "L459"}, {"id": "crud_storage_release_review_build_research_donation_transport_info", "label": "_build_research_donation_transport_info()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_release_review.py", "source_location": "L493"}, {"id": "crud_storage_release_review_build_reception_info", "label": "_build_reception_info()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_release_review.py", "source_location": "L527"}, {"id": "crud_storage_release_review_build_gate_qc_info", "label": "_build_gate_qc_info()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_release_review.py", "source_location": "L550"}, {"id": "crud_storage_release_review_build_process_qc_info_list", "label": "_build_process_qc_info_list()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_release_review.py", "source_location": "L570"}, {"id": "crud_storage_release_review_build_production_info", "label": "_build_production_info()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_release_review.py", "source_location": "L581"}, {"id": "crud_storage_release_review_submit_review", "label": "submit_review()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_release_review.py", "source_location": "L599"}, {"id": "crud_storage_release_review_batch_submit_review", "label": "batch_submit_review()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_release_review.py", "source_location": "L634"}, {"id": "crud_storage_release_review_store_sample", "label": "store_sample()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_release_review.py", "source_location": "L663"}, {"id": "crud_storage_release_review_batch_store_samples", "label": "batch_store_samples()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_releLine truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_production_task_py", "label": "production_task.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py", "source_location": "L1"}, {"id": "crud_production_task_require_requisition_for_catalog_material", "label": "_require_requisition_for_catalog_material()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py", "source_location": "L53"}, {"id": "crud_production_task_production_conclusion_label", "label": "_production_conclusion_label()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py", "source_location": "L105"}, {"id": "crud_production_task_fmt_dt", "label": "_fmt_dt()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py", "source_location": "L112"}, {"id": "crud_production_task_normalize_date_bound", "label": "_normalize_date_bound()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py", "source_location": "L116"}, {"id": "crud_production_task_enrich_outbound_task_items", "label": "_enrich_outbound_task_items()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py", "source_location": "L123"}, {"id": "crud_production_task_generate_task_no", "label": "_generate_task_no()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py", "source_location": "L257"}, {"id": "crud_production_task_task_to_dict", "label": "_task_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py", "source_location": "L271"}, {"id": "crud_production_task_step_to_dict", "label": "_step_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py", "source_location": "L300"}, {"id": "crud_production_task_step_reagent_to_dict", "label": "_step_reagent_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py", "source_location": "L325"}, {"id": "crud_production_task_step_configured_reagent_to_dict", "label": "_step_configured_reagent_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py", "source_location": "L342"}, {"id": "crud_production_task_step_consumable_to_dict", "label": "_step_consumable_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py", "source_location": "L358"}, {"id": "crud_production_task_step_output_to_dict", "label": "_step_output_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py", "source_location": "L375"}, {"id": "crud_production_task_step_data_collection_to_dict", "label": "_step_data_collection_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py", "source_location": "L387"}, {"id": "crud_production_task_task_input_to_dict", "label": "_task_input_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py", "source_location": "L399"}, {"id": "crud_production_task_task_output_to_dict", "label": "_task_output_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py", "source_location": "L421"}, {"id": "crud_production_task_soft_delete_sub", "label": "_soft_delete_sub()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py", "source_location": "L446"}, {"id": "crud_production_task_resolve_sub_table_order_num", "label": "_resolve_sub_table_order_num()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py", "source_location": "L459"}, {"id": "crud_production_task_empty_step_sub_tables", "label": "_empty_step_sub_tables()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py", "source_location": "L468"}, {"id": "crud_production_task_batch_load_step_sub_tables", "label": "_batch_load_step_sub_tables()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py", "source_location": "L478"}, {"id": "crud_production_task_step_sub_tables_to_dict", "label": "_step_sub_tables_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py", "source_location": "L578"}, {"id": "crud_production_task_clone_step_reagents", "label": "_clone_step_reagents()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py", "source_locatiLine truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_api_research_donation_py", "label": "research_donation.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/research_donation.py", "source_location": "L1"}, {"id": "api_research_donation_get_tenant_no", "label": "_get_tenant_no()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/research_donation.py", "source_location": "L18"}, {"id": "api_research_donation_get_current_user_id", "label": "_get_current_user_id()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/research_donation.py", "source_location": "L28"}, {"id": "api_research_donation_donationcreatebody", "label": "DonationCreateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/research_donation.py", "source_location": "L40"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "api_research_donation_donationupdatebody", "label": "DonationUpdateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/research_donation.py", "source_location": "L61"}, {"id": "api_research_donation_batchdeletebody", "label": "BatchDeleteBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/research_donation.py", "source_location": "L82"}, {"id": "api_research_donation_auditsubmitbody", "label": "AuditSubmitBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/research_donation.py", "source_location": "L88"}, {"id": "api_research_donation_statuschangebody", "label": "StatusChangeBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/research_donation.py", "source_location": "L95"}, {"id": "api_research_donation_convertfromstoragebody", "label": "ConvertFromStorageBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/research_donation.py", "source_location": "L104"}, {"id": "api_research_donation_list_research_donations", "label": "list_research_donations()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/research_donation.py", "source_location": "L116"}, {"id": "api_research_donation_list_research_donation_audits", "label": "list_research_donation_audits()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/research_donation.py", "source_location": "L151"}, {"id": "api_research_donation_next_research_donation_sample_code", "label": "next_research_donation_sample_code()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/research_donation.py", "source_location": "L180"}, {"id": "api_research_donation_get_research_donation_detail", "label": "get_research_donation_detail()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/research_donation.py", "source_location": "L197"}, {"id": "api_research_donation_create_research_donation", "label": "create_research_donation()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/research_donation.py", "source_location": "L215"}, {"id": "api_research_donation_update_research_donation", "label": "update_research_donation()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/research_donation.py", "source_location": "L247"}, {"id": "api_research_donation_delete_research_donation", "label": "delete_research_donation()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/research_donation.py", "source_location": "L278"}, {"id": "api_research_donation_batch_delete_research_donations", "label": "batch_delete_research_donations()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/research_donation.py", "source_location": "L303"}, {"id": "api_research_donation_submit_donation_audit", "label": "submit_donation_audit()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/research_donation.py", "source_location": "L328"}, {"id": "api_research_donation_change_donation_status", "label": "change_donation_status()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/research_donation.py", "source_location": "L361"}, {"id": "api_research_donation_convert_from_storage", "label": "convert_from_storage()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/research_donation.py", "source_location": "L394"}, {"id": "api_research_donation_convert_to_storage", "label": "convert_to_storage()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/research_donation.py", "source_location": "L422"}, {"id": "api_research_donation_rationale_1", "label": "\u79d1\u7814\u6350\u8d60\u7ba1Line truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "label": "collection_protocol.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1"}, {"id": "crud_collection_protocol_get_protocol_nos_used_in_protocols", "label": "get_protocol_nos_used_in_protocols()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L69"}, {"id": "crud_collection_protocol_get_sample_codes_used_in_protocol_samples", "label": "get_sample_codes_used_in_protocol_samples()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L103"}, {"id": "crud_collection_protocol_validate_sample_codes_not_used", "label": "validate_sample_codes_not_used()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L137"}, {"id": "crud_collection_protocol_total_pages", "label": "total_pages()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L170"}, {"id": "crud_collection_protocol_fmt_dt", "label": "_fmt_dt()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L176"}, {"id": "crud_collection_protocol_dec", "label": "_dec()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L180"}, {"id": "crud_collection_protocol_optional_decimal", "label": "_optional_decimal()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L188"}, {"id": "crud_collection_protocol_today_yyyymmdd", "label": "_today_yyyymmdd()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L194"}, {"id": "crud_collection_protocol_normalize_yyyymmdd_date", "label": "_normalize_yyyymmdd_date()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L198"}, {"id": "crud_collection_protocol_normalize_fields", "label": "_normalize_fields()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L217"}, {"id": "crud_collection_protocol_pop_attachment_urls", "label": "_pop_attachment_urls()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L228"}, {"id": "crud_collection_protocol_attachments_to_urls", "label": "attachments_to_urls()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L239"}, {"id": "crud_collection_protocol_normalize_attachment_url_key", "label": "_normalize_attachment_url_key()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L258"}, {"id": "crud_collection_protocol_format_attachment_file_size", "label": "_format_attachment_file_size()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L267"}, {"id": "crud_collection_protocol_lookup_attachment_by_url", "label": "_lookup_attachment_by_url()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L275"}, {"id": "crud_collection_protocol_urls_to_attachment_list", "label": "urls_to_attachment_list()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L299"}, {"id": "crud_collection_protocol_user_nick_name_map", "label": "_user_nick_name_map()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L331"}, {"id": "crud_collection_protocol_protocol_to_dict", "label": "_protocol_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L339"}, {"id": "crud_collection_protocol_payment_to_dict", "label": "_payment_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L364"}, {"id": "crud_collection_protocol_detail_to_dict", "label": "_detail_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L385"}, {"id": "crud_collection_protocol_audit_to_dict", "label": "_audit_to_dict()", "file_type": "code", "sourceLine truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_research_donation_sample_collection_py", "label": "research_donation_sample_collection.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation_sample_collection.py", "source_location": "L1"}, {"id": "crud_research_donation_sample_collection_total_pages", "label": "total_pages()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation_sample_collection.py", "source_location": "L26"}, {"id": "crud_research_donation_sample_collection_fmt_dt", "label": "_fmt_dt()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation_sample_collection.py", "source_location": "L32"}, {"id": "crud_research_donation_sample_collection_sample_status_label", "label": "_sample_status_label()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation_sample_collection.py", "source_location": "L36"}, {"id": "crud_research_donation_sample_collection_row_to_dict", "label": "_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation_sample_collection.py", "source_location": "L45"}, {"id": "crud_research_donation_sample_collection_base_query", "label": "_base_query()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation_sample_collection.py", "source_location": "L84"}, {"id": "crud_research_donation_sample_collection_apply_sample_status_filter", "label": "_apply_sample_status_filter()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation_sample_collection.py", "source_location": "L120"}, {"id": "crud_research_donation_sample_collection_list_donation_sample_collections", "label": "list_donation_sample_collections()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation_sample_collection.py", "source_location": "L134"}, {"id": "crud_research_donation_sample_collection_rationale_1", "label": "\u79d1\u7814\u6350\u8d60\u6837\u672c\u91c7\u96c6\u4fe1\u606f\u5217\u8868 CRUD\uff08\u6837\u672c\u4fe1\u606f\u7ba1\u7406 \u00b7 \u6837\u672c\u91c7\u96c6\u4fe1\u606f\uff09", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation_sample_collection.py", "source_location": "L1"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_research_donation_sample_collection_py", "target": "math", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation_sample_collection.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_research_donation_sample_collection_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation_sample_collection.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_research_donation_sample_collection_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation_sample_collection.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_research_donation_sample_collection_py", "target": "sqlalchemy", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation_sample_collection.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_research_donation_sample_collection_py", "target": "sqlalchemy_orm", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation_sample_collection.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_research_donation_sample_collection_py", "target": "app_core_utils", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation_sample_collection.py", "source_location": "L11", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_research_donation_sample_collection_py", "target": "app_utils_sample_special", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation_sample_collection.py", "source_location": "L12", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_research_donation_sample_collection_py", "target": "app_models_models", "relation": "imports_from", "confideLine truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_api_qc_py", "label": "qc.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L1"}, {"id": "api_qc_thirdpartycompanybody", "label": "ThirdPartyCompanyBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L63"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "api_qc_thirdpartycompanyupdatebody", "label": "ThirdPartyCompanyUpdateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L81"}, {"id": "api_qc_list_qc_third_party_companies", "label": "list_qc_third_party_companies()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L100"}, {"id": "api_qc_list_qc_third_party_company_options", "label": "list_qc_third_party_company_options()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L122"}, {"id": "api_qc_create_qc_third_party_company", "label": "create_qc_third_party_company()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L136"}, {"id": "api_qc_update_qc_third_party_company", "label": "update_qc_third_party_company()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L171"}, {"id": "api_qc_delete_qc_third_party_company", "label": "delete_qc_third_party_company()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L208"}, {"id": "api_qc_thirdpartyitembody", "label": "ThirdPartyItemBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L228"}, {"id": "api_qc_thirdpartyitemupdatebody", "label": "ThirdPartyItemUpdateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L240"}, {"id": "api_qc_list_qc_third_party_items", "label": "list_qc_third_party_items()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L253"}, {"id": "api_qc_list_qc_third_party_items_active", "label": "list_qc_third_party_items_active()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L282"}, {"id": "api_qc_create_qc_third_party_item", "label": "create_qc_third_party_item()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L297"}, {"id": "api_qc_update_qc_third_party_item", "label": "update_qc_third_party_item()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L326"}, {"id": "api_qc_delete_qc_third_party_item", "label": "delete_qc_third_party_item()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L357"}, {"id": "api_qc_labtestitembody", "label": "LabTestItemBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L377"}, {"id": "api_qc_labtestitemupdatebody", "label": "LabTestItemUpdateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L388"}, {"id": "api_qc_itemparambody", "label": "ItemParamBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L402"}, {"id": "api_qc_taskresultbody", "label": "TaskResultBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L407"}, {"id": "api_qc_taskcompletewithresultbody", "label": "TaskCompleteWithResultBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L412"}, {"id": "api_qc_list_qc_lab_test_items", "label": "list_qc_lab_test_items()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L422"}, {"id": "api_qc_list_qc_lab_test_items_active", "label": "list_qc_lab_test_items_active()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L444"}, {"id": "api_qc_create_qc_lab_test_item", "label": "create_qc_lab_test_item()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L458"}, {"id": "api_qc_update_qc_lab_test_item", "label": "update_qc_lab_test_item()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L486"}, {"id": "apiLine truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_api_material_py", "label": "material.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/material.py", "source_location": "L1"}, {"id": "api_material_materialbody", "label": "MaterialBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/material.py", "source_location": "L27"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "api_material_materialupdatebody", "label": "MaterialUpdateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/material.py", "source_location": "L41"}, {"id": "api_material_stockinbody", "label": "StockInBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/material.py", "source_location": "L55"}, {"id": "api_material_batchstockinitem", "label": "BatchStockInItem", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/material.py", "source_location": "L70"}, {"id": "api_material_batchstockinbody", "label": "BatchStockInBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/material.py", "source_location": "L85"}, {"id": "api_material_batchstockoutitem", "label": "BatchStockOutItem", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/material.py", "source_location": "L92"}, {"id": "api_material_batchstockoutbody", "label": "BatchStockOutBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/material.py", "source_location": "L99"}, {"id": "api_material_batchdiscarditem", "label": "BatchDiscardItem", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/material.py", "source_location": "L108"}, {"id": "api_material_batchdiscardbody", "label": "BatchDiscardBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/material.py", "source_location": "L116"}, {"id": "api_material_materialbatchupdatebody", "label": "MaterialBatchUpdateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/material.py", "source_location": "L124"}, {"id": "api_material_stockcheckcreatebody", "label": "StockCheckCreateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/material.py", "source_location": "L144"}, {"id": "api_material_stockcheckunusedlineitem", "label": "StockCheckUnusedLineItem", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/material.py", "source_location": "L151"}, {"id": "api_material_stockcheckunusedlinesbody", "label": "StockCheckUnusedLinesBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/material.py", "source_location": "L171"}, {"id": "api_material_list_material_batches", "label": "list_material_batches()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/material.py", "source_location": "L180"}, {"id": "api_material_material_batch_options", "label": "material_batch_options()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/material.py", "source_location": "L211"}, {"id": "api_material_update_material_batch", "label": "update_material_batch()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/material.py", "source_location": "L234"}, {"id": "api_material_delete_material_batch", "label": "delete_material_batch()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/material.py", "source_location": "L263"}, {"id": "api_material_list_materials", "label": "list_materials()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/material.py", "source_location": "L283"}, {"id": "api_material_material_options", "label": "material_options()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/material.py", "source_location": "L306"}, {"id": "api_material_create_material", "label": "create_material()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/material.py", "source_location": "L318"}, {"id": "api_material_update_material", "label": "update_material()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/material.py", "source_location": "L338"}, {"id": "api_material_delete_material", "label": "delete_material()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/material.py", "source_location": "L359"}, {"id": "api_material_batch_stock_in_material", "label": "batch_stock_in_material()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/material.py", "source_location": "L376"}, {"id": "api_material_batchLine truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_material_stock_batch_py", "label": "material_stock_batch.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_stock_batch.py", "source_location": "L1"}, {"id": "crud_material_stock_batch_fmt_date", "label": "_fmt_date()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_stock_batch.py", "source_location": "L19"}, {"id": "crud_material_stock_batch_parse_date", "label": "_parse_date()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_stock_batch.py", "source_location": "L25"}, {"id": "crud_material_stock_batch_parse_expire_date", "label": "_parse_expire_date()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_stock_batch.py", "source_location": "L39"}, {"id": "crud_material_stock_batch_opt_str", "label": "_opt_str()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_stock_batch.py", "source_location": "L50"}, {"id": "crud_material_stock_batch_opt_decimal", "label": "_opt_decimal()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_stock_batch.py", "source_location": "L54"}, {"id": "crud_material_stock_batch_opt_stock_in_date", "label": "_opt_stock_in_date()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_stock_batch.py", "source_location": "L66"}, {"id": "crud_material_stock_batch_opt_stock_in_qty", "label": "_opt_stock_in_qty()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_stock_batch.py", "source_location": "L75"}, {"id": "crud_material_stock_batch_gen_stock_in_no", "label": "_gen_stock_in_no()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_stock_batch.py", "source_location": "L87"}, {"id": "crud_material_stock_batch_resolve_stock_in_no", "label": "_resolve_stock_in_no()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_stock_batch.py", "source_location": "L96"}, {"id": "crud_material_stock_batch_require_str", "label": "_require_str()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_stock_batch.py", "source_location": "L116"}, {"id": "crud_material_stock_batch_require_decimal", "label": "_require_decimal()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_stock_batch.py", "source_location": "L123"}, {"id": "crud_material_stock_batch_stock_in_no_exists", "label": "stock_in_no_exists()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_stock_batch.py", "source_location": "L135"}, {"id": "crud_material_stock_batch_batch_row_to_dict", "label": "_batch_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_stock_batch.py", "source_location": "L151"}, {"id": "crud_material_stock_batch_usage_batch_snapshots", "label": "_usage_batch_snapshots()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_stock_batch.py", "source_location": "L184"}, {"id": "crud_material_stock_batch_get_material_for_update", "label": "_get_material_for_update()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_stock_batch.py", "source_location": "L205"}, {"id": "crud_material_stock_batch_list_batches", "label": "list_batches()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_stock_batch.py", "source_location": "L223"}, {"id": "crud_material_stock_batch_batch_options", "label": "batch_options()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_stock_batch.py", "source_location": "L291"}, {"id": "crud_material_stock_batch_create_batch_and_usage", "label": "_create_batch_and_usage()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_stock_batch.py", "source_location": "L364"}, {"id": "crud_material_stock_batch_stock_in_one", "label": "stock_in_one()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_stock_batch.py", "source_location": "L453"}, {"id": "crud_material_stock_batch_batch_stock_in", "label": "batch_stock_in()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_stock_batch.py", "source_location": "L494"}, {"id": "crud_material_stock_batch_stock_out_batch", "label": "_stock_out_batch()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_stock_batch.py", "source_location": "L551"}, {"id": "crud_material_stock_batch_batch_stocLine truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_cell_product_py", "label": "cell_product.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/cell_product.py", "source_location": "L1"}, {"id": "crud_cell_product_apply_cell_product_status_change", "label": "_apply_cell_product_status_change()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/cell_product.py", "source_location": "L32"}, {"id": "crud_cell_product_row_to_dict", "label": "_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/cell_product.py", "source_location": "L87"}, {"id": "crud_cell_product_build_facility_path_label", "label": "_build_facility_path_label()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/cell_product.py", "source_location": "L121"}, {"id": "crud_cell_product_enrich_product_dicts", "label": "_enrich_product_dicts()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/cell_product.py", "source_location": "L136"}, {"id": "crud_cell_product_product_to_response", "label": "product_to_response()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/cell_product.py", "source_location": "L272"}, {"id": "crud_cell_product_list_cell_products", "label": "list_cell_products()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/cell_product.py", "source_location": "L277"}, {"id": "crud_cell_product_get_cell_product", "label": "get_cell_product()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/cell_product.py", "source_location": "L344"}, {"id": "crud_cell_product_create_cell_product", "label": "create_cell_product()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/cell_product.py", "source_location": "L358"}, {"id": "crud_cell_product_update_cell_product", "label": "update_cell_product()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/cell_product.py", "source_location": "L431"}, {"id": "crud_cell_product_delete_cell_product", "label": "delete_cell_product()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/cell_product.py", "source_location": "L531"}, {"id": "crud_cell_product_next_code_start_seq", "label": "_next_code_start_seq()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/cell_product.py", "source_location": "L548"}, {"id": "crud_cell_product_get_next_code", "label": "get_next_code()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/cell_product.py", "source_location": "L569"}, {"id": "crud_cell_product_normalize_passage_product_base", "label": "normalize_passage_product_base()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/cell_product.py", "source_location": "L580"}, {"id": "crud_cell_product_get_max_passage_product_seq", "label": "get_max_passage_product_seq()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/cell_product.py", "source_location": "L591"}, {"id": "crud_cell_product_get_max_passage_product_seq_map", "label": "get_max_passage_product_seq_map()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/cell_product.py", "source_location": "L625"}, {"id": "crud_cell_product_get_max_product_suffix_seq", "label": "get_max_product_suffix_seq()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/cell_product.py", "source_location": "L643"}, {"id": "crud_cell_product_product_code_exists", "label": "product_code_exists()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/cell_product.py", "source_location": "L675"}, {"id": "crud_cell_product_normalize_product_code_base", "label": "normalize_product_code_base()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/cell_product.py", "source_location": "L694"}, {"id": "crud_cell_product_build_split_product_codes", "label": "build_split_product_codes()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/cell_product.py", "source_location": "L705"}, {"id": "crud_cell_product_reserve_next_codes", "label": "reserve_next_codes()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/cell_product.py", "source_location": "L712"}, {"id": "crud_cell_product_validate_batch_items", "label": "_validate_batch_items()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/cell_product.py", "source_location": "L722"}, {"id": "crud_cell_product_create_cell_products_by_quantity", "label": "create_cell_products_by_quantity()", "file_type": "code"Line truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_sample_reception_py", "label": "sample_reception.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception.py", "source_location": "L1"}, {"id": "crud_sample_reception_donation_sample_id_col", "label": "_donation_sample_id_col()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception.py", "source_location": "L44"}, {"id": "crud_sample_reception_fmt_dt", "label": "_fmt_dt()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception.py", "source_location": "L49"}, {"id": "crud_sample_reception_normalize_date_bound", "label": "_normalize_date_bound()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception.py", "source_location": "L53"}, {"id": "crud_sample_reception_dec", "label": "_dec()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception.py", "source_location": "L60"}, {"id": "crud_sample_reception_reception_to_dict", "label": "_reception_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception.py", "source_location": "L66"}, {"id": "crud_sample_reception_sample_detail_rows_query", "label": "_sample_detail_rows_query()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception.py", "source_location": "L89"}, {"id": "crud_sample_reception_donation_sample_detail_rows_query", "label": "_donation_sample_detail_rows_query()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception.py", "source_location": "L123"}, {"id": "crud_sample_reception_donation_sample_pending_query", "label": "_donation_sample_pending_query()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception.py", "source_location": "L157"}, {"id": "crud_sample_reception_donation_rows_to_sample_list_items", "label": "_donation_rows_to_sample_list_items()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception.py", "source_location": "L195"}, {"id": "crud_sample_reception_sample_pending_query", "label": "_sample_pending_query()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception.py", "source_location": "L310"}, {"id": "crud_sample_reception_rows_to_sample_list_items", "label": "_rows_to_sample_list_items()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception.py", "source_location": "L348"}, {"id": "crud_sample_reception_list_pending_protocol_samples", "label": "list_pending_protocol_samples()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception.py", "source_location": "L473"}, {"id": "crud_sample_reception_list_received_protocol_samples", "label": "list_received_protocol_samples()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception.py", "source_location": "L546"}, {"id": "crud_sample_reception_finalize_reception_detail", "label": "_finalize_reception_detail()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception.py", "source_location": "L685"}, {"id": "crud_sample_reception_get_reception_by_id", "label": "get_reception_by_id()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception.py", "source_location": "L691"}, {"id": "crud_sample_reception_create_sample_reception", "label": "create_sample_reception()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception.py", "source_location": "L759"}, {"id": "crud_sample_reception_can_edit_sample_reception", "label": "_can_edit_sample_reception()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception.py", "source_location": "L1021"}, {"id": "crud_sample_reception_update_sample_reception", "label": "update_sample_reception()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception.py", "source_location": "L1036"}, {"id": "crud_sample_reception_attach_production_reception", "label": "_attach_production_reception()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception.py", "source_location": "L1152"}, {"id": "crud_sample_reception_reception_detail_item", "label": "_reception_detail_item()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception.py", "source_location": "L1170"}, {"id": "crud_sample_reception_reception_detail_item_with_production", "label": "_reception_detail_item_with_production(Line truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_work_order_py", "label": "qc_work_order.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L1"}, {"id": "crud_qc_work_order_resolve_outbound_biz_type_for_schedule", "label": "resolve_outbound_biz_type_for_schedule()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L96"}, {"id": "crud_qc_work_order_dec", "label": "_dec()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L137"}, {"id": "crud_qc_work_order_fmt_dt", "label": "_fmt_dt()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L143"}, {"id": "crud_qc_work_order_normalize_date_bound", "label": "_normalize_date_bound()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L147"}, {"id": "crud_qc_work_order_reception_source_label", "label": "_reception_source_label()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L154"}, {"id": "crud_qc_work_order_qc_biz_type_label", "label": "_qc_biz_type_label()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L159"}, {"id": "crud_qc_work_order_work_order_qc_biz_type", "label": "_work_order_qc_biz_type()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L164"}, {"id": "crud_qc_work_order_validate_cell_product_id", "label": "_validate_cell_product_id()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L171"}, {"id": "crud_qc_work_order_enrich_work_order_cell_products", "label": "_enrich_work_order_cell_products()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L183"}, {"id": "crud_qc_work_order_enrich_work_order_step_outputs", "label": "_enrich_work_order_step_outputs()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L212"}, {"id": "crud_qc_work_order_enrich_work_order_qc_targets", "label": "_enrich_work_order_qc_targets()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L251"}, {"id": "crud_qc_work_order_enrich_outbound_work_orders", "label": "_enrich_outbound_work_orders()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L258"}, {"id": "crud_qc_work_order_outbound_qc_work_order_ids_by_keyword", "label": "_outbound_qc_work_order_ids_by_keyword()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L379"}, {"id": "crud_qc_work_order_inbound_qc_work_order_ids_by_mother_name", "label": "_inbound_qc_work_order_ids_by_mother_name()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L426"}, {"id": "crud_qc_work_order_accept_conclusion_label", "label": "_accept_conclusion_label()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L492"}, {"id": "crud_qc_work_order_load_sample_type_name_map", "label": "_load_sample_type_name_map()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L497"}, {"id": "crud_qc_work_order_effective_reception_source", "label": "_effective_reception_source()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L509"}, {"id": "crud_qc_work_order_effective_donation_sample_id", "label": "_effective_donation_sample_id()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L518"}, {"id": "crud_qc_work_order_effective_protocol_sample_id", "label": "_effective_protocol_sample_id()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L527"}, {"id": "crud_qc_work_order_sample_type_name_for_item", "label": "_sample_type_name_for_item()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L535"}, {"id": "crud_qc_work_order_sample_type_name_for_reception", "label": "_sample_type_name_for_reception()", "file_type": "code", "source_file": "/Users/wuzLine truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_material_stock_batch_py", "label": "material_stock_batch.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_stock_batch.py", "source_location": "L1"}, {"id": "crud_material_stock_batch_fmt_date", "label": "_fmt_date()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_stock_batch.py", "source_location": "L19"}, {"id": "crud_material_stock_batch_parse_date", "label": "_parse_date()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_stock_batch.py", "source_location": "L25"}, {"id": "crud_material_stock_batch_parse_expire_date", "label": "_parse_expire_date()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_stock_batch.py", "source_location": "L39"}, {"id": "crud_material_stock_batch_opt_str", "label": "_opt_str()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_stock_batch.py", "source_location": "L50"}, {"id": "crud_material_stock_batch_opt_decimal", "label": "_opt_decimal()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_stock_batch.py", "source_location": "L54"}, {"id": "crud_material_stock_batch_opt_stock_in_date", "label": "_opt_stock_in_date()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_stock_batch.py", "source_location": "L66"}, {"id": "crud_material_stock_batch_opt_stock_in_qty", "label": "_opt_stock_in_qty()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_stock_batch.py", "source_location": "L75"}, {"id": "crud_material_stock_batch_gen_stock_in_no", "label": "_gen_stock_in_no()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_stock_batch.py", "source_location": "L87"}, {"id": "crud_material_stock_batch_resolve_stock_in_no", "label": "_resolve_stock_in_no()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_stock_batch.py", "source_location": "L96"}, {"id": "crud_material_stock_batch_require_str", "label": "_require_str()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_stock_batch.py", "source_location": "L116"}, {"id": "crud_material_stock_batch_require_decimal", "label": "_require_decimal()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_stock_batch.py", "source_location": "L123"}, {"id": "crud_material_stock_batch_stock_in_no_exists", "label": "stock_in_no_exists()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_stock_batch.py", "source_location": "L135"}, {"id": "crud_material_stock_batch_batch_row_to_dict", "label": "_batch_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_stock_batch.py", "source_location": "L151"}, {"id": "crud_material_stock_batch_usage_batch_snapshots", "label": "_usage_batch_snapshots()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_stock_batch.py", "source_location": "L184"}, {"id": "crud_material_stock_batch_get_material_for_update", "label": "_get_material_for_update()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_stock_batch.py", "source_location": "L205"}, {"id": "crud_material_stock_batch_list_batches", "label": "list_batches()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_stock_batch.py", "source_location": "L223"}, {"id": "crud_material_stock_batch_batch_options", "label": "batch_options()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_stock_batch.py", "source_location": "L291"}, {"id": "crud_material_stock_batch_create_batch_and_usage", "label": "_create_batch_and_usage()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_stock_batch.py", "source_location": "L364"}, {"id": "crud_material_stock_batch_stock_in_one", "label": "stock_in_one()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_stock_batch.py", "source_location": "L455"}, {"id": "crud_material_stock_batch_batch_stock_in", "label": "batch_stock_in()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_stock_batch.py", "source_location": "L498"}, {"id": "crud_material_stock_batch_stock_out_batch", "label": "_stock_out_batch()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_stock_batch.py", "source_location": "L557"}, {"id": "crud_material_stock_batch_batch_stocLine truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_work_order_py", "label": "qc_work_order.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L1"}, {"id": "crud_qc_work_order_resolve_outbound_biz_type_for_schedule", "label": "resolve_outbound_biz_type_for_schedule()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L96"}, {"id": "crud_qc_work_order_dec", "label": "_dec()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L137"}, {"id": "crud_qc_work_order_fmt_dt", "label": "_fmt_dt()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L143"}, {"id": "crud_qc_work_order_normalize_date_bound", "label": "_normalize_date_bound()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L147"}, {"id": "crud_qc_work_order_reception_source_label", "label": "_reception_source_label()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L154"}, {"id": "crud_qc_work_order_qc_biz_type_label", "label": "_qc_biz_type_label()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L159"}, {"id": "crud_qc_work_order_work_order_qc_biz_type", "label": "_work_order_qc_biz_type()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L164"}, {"id": "crud_qc_work_order_validate_cell_product_id", "label": "_validate_cell_product_id()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L171"}, {"id": "crud_qc_work_order_enrich_work_order_cell_products", "label": "_enrich_work_order_cell_products()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L183"}, {"id": "crud_qc_work_order_enrich_work_order_step_outputs", "label": "_enrich_work_order_step_outputs()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L212"}, {"id": "crud_qc_work_order_enrich_work_order_qc_targets", "label": "_enrich_work_order_qc_targets()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L251"}, {"id": "crud_qc_work_order_enrich_outbound_work_orders", "label": "_enrich_outbound_work_orders()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L258"}, {"id": "crud_qc_work_order_outbound_qc_work_order_ids_by_keyword", "label": "_outbound_qc_work_order_ids_by_keyword()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L379"}, {"id": "crud_qc_work_order_inbound_qc_work_order_ids_by_mother_name", "label": "_inbound_qc_work_order_ids_by_mother_name()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L426"}, {"id": "crud_qc_work_order_accept_conclusion_label", "label": "_accept_conclusion_label()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L492"}, {"id": "crud_qc_work_order_load_sample_type_name_map", "label": "_load_sample_type_name_map()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L497"}, {"id": "crud_qc_work_order_effective_reception_source", "label": "_effective_reception_source()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L509"}, {"id": "crud_qc_work_order_effective_donation_sample_id", "label": "_effective_donation_sample_id()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L518"}, {"id": "crud_qc_work_order_effective_protocol_sample_id", "label": "_effective_protocol_sample_id()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L527"}, {"id": "crud_qc_work_order_sample_type_name_for_item", "label": "_sample_type_name_for_item()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L535"}, {"id": "crud_qc_work_order_sample_type_name_for_reception", "label": "_sample_type_name_for_reception()", "file_type": "code", "source_file": "/Users/wuzLine truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_storage_release_review_py", "label": "storage_release_review.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_release_review.py", "source_location": "L1"}, {"id": "crud_storage_release_review_fmt_dt", "label": "_fmt_dt()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_release_review.py", "source_location": "L50"}, {"id": "crud_storage_release_review_total_pages", "label": "total_pages()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_release_review.py", "source_location": "L54"}, {"id": "crud_storage_release_review_row_to_dict", "label": "_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_release_review.py", "source_location": "L60"}, {"id": "crud_storage_release_review_create_review_from_reception", "label": "create_review_from_reception()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_release_review.py", "source_location": "L88"}, {"id": "crud_storage_release_review_list_reviews", "label": "list_reviews()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_release_review.py", "source_location": "L126"}, {"id": "crud_storage_release_review_enrich_review_list_items", "label": "_enrich_review_list_items()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_release_review.py", "source_location": "L191"}, {"id": "crud_storage_release_review_get_user_name", "label": "_get_user_name()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_release_review.py", "source_location": "L272"}, {"id": "crud_storage_release_review_get_review_detail", "label": "get_review_detail()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_release_review.py", "source_location": "L277"}, {"id": "crud_storage_release_review_build_cell_storage_protocol_info", "label": "_build_cell_storage_protocol_info()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_release_review.py", "source_location": "L341"}, {"id": "crud_storage_release_review_build_research_donation_protocol_info", "label": "_build_research_donation_protocol_info()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_release_review.py", "source_location": "L399"}, {"id": "crud_storage_release_review_build_cell_storage_transport_info", "label": "_build_cell_storage_transport_info()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_release_review.py", "source_location": "L457"}, {"id": "crud_storage_release_review_build_research_donation_transport_info", "label": "_build_research_donation_transport_info()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_release_review.py", "source_location": "L491"}, {"id": "crud_storage_release_review_build_reception_info", "label": "_build_reception_info()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_release_review.py", "source_location": "L525"}, {"id": "crud_storage_release_review_build_gate_qc_info", "label": "_build_gate_qc_info()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_release_review.py", "source_location": "L548"}, {"id": "crud_storage_release_review_build_process_qc_info_list", "label": "_build_process_qc_info_list()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_release_review.py", "source_location": "L568"}, {"id": "crud_storage_release_review_build_production_info", "label": "_build_production_info()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_release_review.py", "source_location": "L579"}, {"id": "crud_storage_release_review_submit_review", "label": "submit_review()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_release_review.py", "source_location": "L597"}, {"id": "crud_storage_release_review_batch_submit_review", "label": "batch_submit_review()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_release_review.py", "source_location": "L632"}, {"id": "crud_storage_release_review_store_sample", "label": "store_sample()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_release_review.py", "source_location": "L661"}, {"id": "crud_storage_release_review_batch_store_samples", "label": "batch_store_samples()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_releLine truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_utils_sample_special_py", "label": "sample_special.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/utils/sample_special.py", "source_location": "L1"}, {"id": "utils_sample_special_truthy_flag", "label": "_truthy_flag()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/utils/sample_special.py", "source_location": "L7"}, {"id": "utils_sample_special_sample_special_to_dict", "label": "sample_special_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/utils/sample_special.py", "source_location": "L15"}, {"id": "utils_sample_special_validate_sample_special_raw", "label": "validate_sample_special_raw()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/utils/sample_special.py", "source_location": "L24"}, {"id": "utils_sample_special_apply_sample_special_fields", "label": "apply_sample_special_fields()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/utils/sample_special.py", "source_location": "L34"}, {"id": "utils_sample_special_apply_inbound_sample_special_mark_fields", "label": "apply_inbound_sample_special_mark_fields()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/utils/sample_special.py", "source_location": "L41"}, {"id": "utils_sample_special_apply_special_to_item_from_samples", "label": "apply_special_to_item_from_samples()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/utils/sample_special.py", "source_location": "L52"}, {"id": "utils_sample_special_rationale_42", "label": "\u8d28\u68c0\u7b49\u573a\u666f\uff1a\u53d6\u6d88\u52fe\u9009\u65f6\u4fdd\u7559 special_remark\uff0c\u4ec5\u6e05\u9664 is_special \u6807\u8bb0\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/utils/sample_special.py", "source_location": "L42"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_utils_sample_special_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/utils/sample_special.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_utils_sample_special_py", "target": "utils_sample_special_truthy_flag", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/utils/sample_special.py", "source_location": "L7", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_utils_sample_special_py", "target": "utils_sample_special_sample_special_to_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/utils/sample_special.py", "source_location": "L15", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_utils_sample_special_py", "target": "utils_sample_special_validate_sample_special_raw", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/utils/sample_special.py", "source_location": "L24", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_utils_sample_special_py", "target": "utils_sample_special_apply_sample_special_fields", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/utils/sample_special.py", "source_location": "L34", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_utils_sample_special_py", "target": "utils_sample_special_apply_inbound_sample_special_mark_fields", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/utils/sample_special.py", "source_location": "L41", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_utils_sample_special_py", "target": "utils_sample_special_apply_special_to_item_from_samples", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/utils/sample_special.py", "source_location": "L52", "weight": 1.0}, {"source": "utils_sample_special_validate_sample_special_raw", "target": "utils_sample_special_truthy_flag", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/utils/sample_special.py", "source_location": "L25", "weight": 1.0}, {"source": "utils_sample_special_apply_sample_special_fields", "target": "utils_sample_special_truthy_flag", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/utils/sample_special.py", "source_location": "L35", "weight": 1.0}, {"source": "utils_sample_special_apply_inbound_sample_special_mark_fields", "target": "utils_sample_special_truthy_flag", "relation": "calls", "confidence": "EXTRACTED", "source_Line truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_work_order_py", "label": "qc_work_order.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L1"}, {"id": "crud_qc_work_order_resolve_outbound_biz_type_for_schedule", "label": "resolve_outbound_biz_type_for_schedule()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L95"}, {"id": "crud_qc_work_order_dec", "label": "_dec()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L136"}, {"id": "crud_qc_work_order_fmt_dt", "label": "_fmt_dt()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L142"}, {"id": "crud_qc_work_order_normalize_date_bound", "label": "_normalize_date_bound()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L146"}, {"id": "crud_qc_work_order_reception_source_label", "label": "_reception_source_label()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L153"}, {"id": "crud_qc_work_order_qc_biz_type_label", "label": "_qc_biz_type_label()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L158"}, {"id": "crud_qc_work_order_work_order_qc_biz_type", "label": "_work_order_qc_biz_type()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L163"}, {"id": "crud_qc_work_order_validate_cell_product_id", "label": "_validate_cell_product_id()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L170"}, {"id": "crud_qc_work_order_enrich_work_order_cell_products", "label": "_enrich_work_order_cell_products()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L182"}, {"id": "crud_qc_work_order_enrich_work_order_step_outputs", "label": "_enrich_work_order_step_outputs()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L211"}, {"id": "crud_qc_work_order_enrich_work_order_qc_targets", "label": "_enrich_work_order_qc_targets()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L250"}, {"id": "crud_qc_work_order_enrich_outbound_work_orders", "label": "_enrich_outbound_work_orders()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L257"}, {"id": "crud_qc_work_order_outbound_qc_work_order_ids_by_keyword", "label": "_outbound_qc_work_order_ids_by_keyword()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L378"}, {"id": "crud_qc_work_order_inbound_qc_work_order_ids_by_mother_name", "label": "_inbound_qc_work_order_ids_by_mother_name()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L425"}, {"id": "crud_qc_work_order_accept_conclusion_label", "label": "_accept_conclusion_label()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L491"}, {"id": "crud_qc_work_order_load_sample_type_name_map", "label": "_load_sample_type_name_map()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L496"}, {"id": "crud_qc_work_order_effective_reception_source", "label": "_effective_reception_source()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L508"}, {"id": "crud_qc_work_order_effective_donation_sample_id", "label": "_effective_donation_sample_id()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L517"}, {"id": "crud_qc_work_order_effective_protocol_sample_id", "label": "_effective_protocol_sample_id()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L526"}, {"id": "crud_qc_work_order_sample_type_name_for_item", "label": "_sample_type_name_for_item()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L534"}, {"id": "crud_qc_work_order_sample_type_name_for_reception", "label": "_sample_type_name_for_reception()", "file_type": "code", "source_file": "/Users/wuzLine truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_sample_reception_py", "label": "sample_reception.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception.py", "source_location": "L1"}, {"id": "crud_sample_reception_donation_sample_id_col", "label": "_donation_sample_id_col()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception.py", "source_location": "L44"}, {"id": "crud_sample_reception_fmt_dt", "label": "_fmt_dt()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception.py", "source_location": "L49"}, {"id": "crud_sample_reception_normalize_date_bound", "label": "_normalize_date_bound()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception.py", "source_location": "L53"}, {"id": "crud_sample_reception_dec", "label": "_dec()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception.py", "source_location": "L60"}, {"id": "crud_sample_reception_reception_to_dict", "label": "_reception_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception.py", "source_location": "L66"}, {"id": "crud_sample_reception_sample_detail_rows_query", "label": "_sample_detail_rows_query()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception.py", "source_location": "L89"}, {"id": "crud_sample_reception_donation_sample_detail_rows_query", "label": "_donation_sample_detail_rows_query()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception.py", "source_location": "L123"}, {"id": "crud_sample_reception_donation_sample_pending_query", "label": "_donation_sample_pending_query()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception.py", "source_location": "L157"}, {"id": "crud_sample_reception_donation_rows_to_sample_list_items", "label": "_donation_rows_to_sample_list_items()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception.py", "source_location": "L195"}, {"id": "crud_sample_reception_sample_pending_query", "label": "_sample_pending_query()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception.py", "source_location": "L310"}, {"id": "crud_sample_reception_rows_to_sample_list_items", "label": "_rows_to_sample_list_items()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception.py", "source_location": "L348"}, {"id": "crud_sample_reception_list_pending_protocol_samples", "label": "list_pending_protocol_samples()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception.py", "source_location": "L473"}, {"id": "crud_sample_reception_list_received_protocol_samples", "label": "list_received_protocol_samples()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception.py", "source_location": "L546"}, {"id": "crud_sample_reception_finalize_reception_detail", "label": "_finalize_reception_detail()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception.py", "source_location": "L685"}, {"id": "crud_sample_reception_get_reception_by_id", "label": "get_reception_by_id()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception.py", "source_location": "L691"}, {"id": "crud_sample_reception_create_sample_reception", "label": "create_sample_reception()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception.py", "source_location": "L759"}, {"id": "crud_sample_reception_can_edit_sample_reception", "label": "_can_edit_sample_reception()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception.py", "source_location": "L1021"}, {"id": "crud_sample_reception_update_sample_reception", "label": "update_sample_reception()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception.py", "source_location": "L1036"}, {"id": "crud_sample_reception_attach_production_reception", "label": "_attach_production_reception()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception.py", "source_location": "L1152"}, {"id": "crud_sample_reception_reception_detail_item", "label": "_reception_detail_item()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception.py", "source_location": "L1170"}, {"id": "crud_sample_reception_reception_detail_item_with_production", "label": "_reception_detail_item_with_production(Line truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_models_research_donation_py", "label": "research_donation.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/research_donation.py", "source_location": "L1"}, {"id": "models_research_donation_bizresearchdonation", "label": "BizResearchDonation", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/research_donation.py", "source_location": "L9"}, {"id": "base", "label": "Base", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "models_research_donation_bizresearchdonationaudit", "label": "BizResearchDonationAudit", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/research_donation.py", "source_location": "L43"}, {"id": "models_research_donation_bizresearchdonationparty", "label": "BizResearchDonationParty", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/research_donation.py", "source_location": "L64"}, {"id": "models_research_donation_bizresearchdonationcollection", "label": "BizResearchDonationCollection", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/research_donation.py", "source_location": "L104"}, {"id": "models_research_donation_bizresearchdonationsample", "label": "BizResearchDonationSample", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/research_donation.py", "source_location": "L128"}, {"id": "models_research_donation_bizresearchdonationsampletransport", "label": "BizResearchDonationSampleTransport", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/research_donation.py", "source_location": "L159"}, {"id": "models_research_donation_bizprotocoldonationconvert", "label": "BizProtocolDonationConvert", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/research_donation.py", "source_location": "L187"}, {"id": "models_research_donation_rationale_10", "label": "\u79d1\u7814\u6350\u8d60\u4e3b\u8868 biz_research_donation", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/research_donation.py", "source_location": "L10"}, {"id": "models_research_donation_rationale_44", "label": "\u79d1\u7814\u6350\u8d60\u5ba1\u6838\u8bb0\u5f55 biz_research_donation_audit", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/research_donation.py", "source_location": "L44"}, {"id": "models_research_donation_rationale_65", "label": "\u79d1\u7814\u6350\u8d60\u5f53\u4e8b\u4eba\u4fe1\u606f biz_research_donation_party", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/research_donation.py", "source_location": "L65"}, {"id": "models_research_donation_rationale_105", "label": "\u79d1\u7814\u6350\u8d60\u91c7\u96c6\u4fe1\u606f biz_research_donation_collection", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/research_donation.py", "source_location": "L105"}, {"id": "models_research_donation_rationale_129", "label": "\u79d1\u7814\u6350\u8d60\u6837\u672c\u4fe1\u606f biz_research_donation_sample\uff08\u65e0\u91d1\u989d\u5b57\u6bb5\uff09", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/research_donation.py", "source_location": "L129"}, {"id": "models_research_donation_rationale_160", "label": "\u79d1\u7814\u6350\u8d60\u6837\u672c\u8fd0\u8f93 biz_research_donation_sample_transport", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/research_donation.py", "source_location": "L160"}, {"id": "models_research_donation_rationale_188", "label": "\u7ec6\u80de\u5b58\u50a8\u534f\u8bae\u4e0e\u79d1\u7814\u6350\u8d60\u8f6c\u79fb\u5173\u8054 biz_protocol_donation_convert", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/research_donation.py", "source_location": "L188"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_models_research_donation_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/research_donation.py", "source_location": "L2", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_research_donation_py", "target": "sqlalchemy", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/research_donation.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_research_donation_py", "target": "app_models_base", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/research_donation.py", "source_location": "L6", "weLine truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "label": "models.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1"}, {"id": "models_models_userrole", "label": "UserRole", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L10"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "models_models_sysuser", "label": "SysUser", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L22"}, {"id": "base", "label": "Base", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "models_models_sysrole", "label": "SysRole", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L48"}, {"id": "models_models_sysuserrole", "label": "SysUserRole", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L68"}, {"id": "models_models_sysrolemenu", "label": "SysRoleMenu", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L87"}, {"id": "models_models_sysroledatascopedetail", "label": "SysRoleDataScopeDetail", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L106"}, {"id": "models_models_sysmenu", "label": "SysMenu", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L126"}, {"id": "models_models_sysdept", "label": "SysDept", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L152"}, {"id": "models_models_systenant", "label": "SysTenant", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L175"}, {"id": "models_models_syssite", "label": "SysSite", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L195"}, {"id": "models_models_syspost", "label": "SysPost", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L221"}, {"id": "models_models_sysuserpost", "label": "SysUserPost", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L241"}, {"id": "models_models_bizitemunit", "label": "BizItemUnit", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L260"}, {"id": "models_models_bizexpresscompany", "label": "BizExpressCompany", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L279"}, {"id": "models_models_bizcustomer", "label": "BizCustomer", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L299"}, {"id": "models_models_bizcellsampletype", "label": "BizCellSampleType", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L322"}, {"id": "models_models_bizcollectionregion", "label": "BizCollectionRegion", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L345"}, {"id": "models_models_bizcollectionhospital", "label": "BizCollectionHospital", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L363"}, {"id": "models_models_bizcollectionprotocolno", "label": "BizCollectionProtocolNo", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L382"}, {"id": "models_models_bizbiznosequence", "label": "BizBizNoSequence", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L404"}, {"id": "models_models_bizsamplecode", "label": "BizSampleCode", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L424"}, {"id": "models_models_sysdicttype", "label": "SysDictType", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L452"}, {"id": "models_models_sysethnic", "label": "SysEthnic", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L471"}, {"id": "models_models_sysdictdata", "label": "SysDictData", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location"Line truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_utils_sample_special_py", "label": "sample_special.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/utils/sample_special.py", "source_location": "L1"}, {"id": "utils_sample_special_truthy_flag", "label": "_truthy_flag()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/utils/sample_special.py", "source_location": "L7"}, {"id": "utils_sample_special_sample_special_to_dict", "label": "sample_special_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/utils/sample_special.py", "source_location": "L15"}, {"id": "utils_sample_special_validate_sample_special_raw", "label": "validate_sample_special_raw()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/utils/sample_special.py", "source_location": "L24"}, {"id": "utils_sample_special_apply_sample_special_fields", "label": "apply_sample_special_fields()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/utils/sample_special.py", "source_location": "L34"}, {"id": "utils_sample_special_apply_special_to_item_from_samples", "label": "apply_special_to_item_from_samples()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/utils/sample_special.py", "source_location": "L41"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_utils_sample_special_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/utils/sample_special.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_utils_sample_special_py", "target": "utils_sample_special_truthy_flag", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/utils/sample_special.py", "source_location": "L7", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_utils_sample_special_py", "target": "utils_sample_special_sample_special_to_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/utils/sample_special.py", "source_location": "L15", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_utils_sample_special_py", "target": "utils_sample_special_validate_sample_special_raw", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/utils/sample_special.py", "source_location": "L24", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_utils_sample_special_py", "target": "utils_sample_special_apply_sample_special_fields", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/utils/sample_special.py", "source_location": "L34", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_utils_sample_special_py", "target": "utils_sample_special_apply_special_to_item_from_samples", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/utils/sample_special.py", "source_location": "L41", "weight": 1.0}, {"source": "utils_sample_special_validate_sample_special_raw", "target": "utils_sample_special_truthy_flag", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/utils/sample_special.py", "source_location": "L25", "weight": 1.0}, {"source": "utils_sample_special_apply_sample_special_fields", "target": "utils_sample_special_truthy_flag", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/utils/sample_special.py", "source_location": "L35", "weight": 1.0}, {"source": "utils_sample_special_apply_special_to_item_from_samples", "target": "utils_sample_special_sample_special_to_dict", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/utils/sample_special.py", "source_location": "L55", "weight": 1.0}], "raw_calls": [{"caller_nid": "utils_sample_special_truthy_flag", "callee": "isinstance", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/utils/sample_special.py", "source_location": "L10"}, {"caller_nid": "utils_sample_special_truthy_flag", "callee": "lower", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/utils/sample_special.py", "source_location": "L11"}, {"caller_nid": "utils_sample_special_truthy_flag", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/utils/sample_special.py", "source_location": "L11"}, {"caller_nid": "utils_sample_special_sample_special_to_dict", "callee": "bool", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/utils/sample_special.py", "source_location": "L19"}, {"caller_nid": "utils_sample_special_sample_specialLine truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_models_research_donation_py", "label": "research_donation.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/research_donation.py", "source_location": "L1"}, {"id": "models_research_donation_bizresearchdonation", "label": "BizResearchDonation", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/research_donation.py", "source_location": "L9"}, {"id": "base", "label": "Base", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "models_research_donation_bizresearchdonationaudit", "label": "BizResearchDonationAudit", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/research_donation.py", "source_location": "L42"}, {"id": "models_research_donation_bizresearchdonationparty", "label": "BizResearchDonationParty", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/research_donation.py", "source_location": "L63"}, {"id": "models_research_donation_bizresearchdonationcollection", "label": "BizResearchDonationCollection", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/research_donation.py", "source_location": "L103"}, {"id": "models_research_donation_bizresearchdonationsample", "label": "BizResearchDonationSample", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/research_donation.py", "source_location": "L127"}, {"id": "models_research_donation_bizresearchdonationsampletransport", "label": "BizResearchDonationSampleTransport", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/research_donation.py", "source_location": "L158"}, {"id": "models_research_donation_bizprotocoldonationconvert", "label": "BizProtocolDonationConvert", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/research_donation.py", "source_location": "L186"}, {"id": "models_research_donation_rationale_10", "label": "\u79d1\u7814\u6350\u8d60\u4e3b\u8868 biz_research_donation", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/research_donation.py", "source_location": "L10"}, {"id": "models_research_donation_rationale_43", "label": "\u79d1\u7814\u6350\u8d60\u5ba1\u6838\u8bb0\u5f55 biz_research_donation_audit", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/research_donation.py", "source_location": "L43"}, {"id": "models_research_donation_rationale_64", "label": "\u79d1\u7814\u6350\u8d60\u5f53\u4e8b\u4eba\u4fe1\u606f biz_research_donation_party", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/research_donation.py", "source_location": "L64"}, {"id": "models_research_donation_rationale_104", "label": "\u79d1\u7814\u6350\u8d60\u91c7\u96c6\u4fe1\u606f biz_research_donation_collection", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/research_donation.py", "source_location": "L104"}, {"id": "models_research_donation_rationale_128", "label": "\u79d1\u7814\u6350\u8d60\u6837\u672c\u4fe1\u606f biz_research_donation_sample\uff08\u65e0\u91d1\u989d\u5b57\u6bb5\uff09", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/research_donation.py", "source_location": "L128"}, {"id": "models_research_donation_rationale_159", "label": "\u79d1\u7814\u6350\u8d60\u6837\u672c\u8fd0\u8f93 biz_research_donation_sample_transport", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/research_donation.py", "source_location": "L159"}, {"id": "models_research_donation_rationale_187", "label": "\u7ec6\u80de\u5b58\u50a8\u534f\u8bae\u4e0e\u79d1\u7814\u6350\u8d60\u8f6c\u79fb\u5173\u8054 biz_protocol_donation_convert", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/research_donation.py", "source_location": "L187"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_models_research_donation_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/research_donation.py", "source_location": "L2", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_research_donation_py", "target": "sqlalchemy", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/research_donation.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_research_donation_py", "target": "app_models_base", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/research_donation.py", "source_location": "L6", "weLine truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_models_research_donation_py", "label": "research_donation.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/research_donation.py", "source_location": "L1"}, {"id": "models_research_donation_bizresearchdonation", "label": "BizResearchDonation", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/research_donation.py", "source_location": "L9"}, {"id": "base", "label": "Base", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "models_research_donation_bizresearchdonationaudit", "label": "BizResearchDonationAudit", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/research_donation.py", "source_location": "L42"}, {"id": "models_research_donation_bizresearchdonationparty", "label": "BizResearchDonationParty", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/research_donation.py", "source_location": "L63"}, {"id": "models_research_donation_bizresearchdonationcollection", "label": "BizResearchDonationCollection", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/research_donation.py", "source_location": "L103"}, {"id": "models_research_donation_bizresearchdonationsample", "label": "BizResearchDonationSample", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/research_donation.py", "source_location": "L127"}, {"id": "models_research_donation_bizresearchdonationsampletransport", "label": "BizResearchDonationSampleTransport", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/research_donation.py", "source_location": "L158"}, {"id": "models_research_donation_bizprotocoldonationconvert", "label": "BizProtocolDonationConvert", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/research_donation.py", "source_location": "L186"}, {"id": "models_research_donation_rationale_10", "label": "\u79d1\u7814\u6350\u8d60\u4e3b\u8868 biz_research_donation", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/research_donation.py", "source_location": "L10"}, {"id": "models_research_donation_rationale_43", "label": "\u79d1\u7814\u6350\u8d60\u5ba1\u6838\u8bb0\u5f55 biz_research_donation_audit", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/research_donation.py", "source_location": "L43"}, {"id": "models_research_donation_rationale_64", "label": "\u79d1\u7814\u6350\u8d60\u5f53\u4e8b\u4eba\u4fe1\u606f biz_research_donation_party", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/research_donation.py", "source_location": "L64"}, {"id": "models_research_donation_rationale_104", "label": "\u79d1\u7814\u6350\u8d60\u91c7\u96c6\u4fe1\u606f biz_research_donation_collection", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/research_donation.py", "source_location": "L104"}, {"id": "models_research_donation_rationale_128", "label": "\u79d1\u7814\u6350\u8d60\u6837\u672c\u4fe1\u606f biz_research_donation_sample\uff08\u65e0\u91d1\u989d\u5b57\u6bb5\uff09", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/research_donation.py", "source_location": "L128"}, {"id": "models_research_donation_rationale_159", "label": "\u79d1\u7814\u6350\u8d60\u6837\u672c\u8fd0\u8f93 biz_research_donation_sample_transport", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/research_donation.py", "source_location": "L159"}, {"id": "models_research_donation_rationale_187", "label": "\u7ec6\u80de\u5b58\u50a8\u534f\u8bae\u4e0e\u79d1\u7814\u6350\u8d60\u8f6c\u79fb\u5173\u8054 biz_protocol_donation_convert", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/research_donation.py", "source_location": "L187"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_models_research_donation_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/research_donation.py", "source_location": "L2", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_research_donation_py", "target": "sqlalchemy", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/research_donation.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_research_donation_py", "target": "app_models_base", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/research_donation.py", "source_location": "L6", "weLine truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_api_material_py", "label": "material.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/material.py", "source_location": "L1"}, {"id": "api_material_resolve_operator_name", "label": "_resolve_operator_name()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/material.py", "source_location": "L25"}, {"id": "api_material_materialbody", "label": "MaterialBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/material.py", "source_location": "L44"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "api_material_materialupdatebody", "label": "MaterialUpdateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/material.py", "source_location": "L58"}, {"id": "api_material_stockinbody", "label": "StockInBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/material.py", "source_location": "L72"}, {"id": "api_material_batchstockinitem", "label": "BatchStockInItem", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/material.py", "source_location": "L88"}, {"id": "api_material_batchstockinbody", "label": "BatchStockInBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/material.py", "source_location": "L103"}, {"id": "api_material_batchstockoutitem", "label": "BatchStockOutItem", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/material.py", "source_location": "L111"}, {"id": "api_material_batchstockoutbody", "label": "BatchStockOutBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/material.py", "source_location": "L118"}, {"id": "api_material_batchdiscarditem", "label": "BatchDiscardItem", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/material.py", "source_location": "L128"}, {"id": "api_material_batchdiscardbody", "label": "BatchDiscardBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/material.py", "source_location": "L136"}, {"id": "api_material_materialbatchupdatebody", "label": "MaterialBatchUpdateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/material.py", "source_location": "L145"}, {"id": "api_material_stockcheckcreatebody", "label": "StockCheckCreateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/material.py", "source_location": "L165"}, {"id": "api_material_stockcheckunusedlineitem", "label": "StockCheckUnusedLineItem", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/material.py", "source_location": "L172"}, {"id": "api_material_stockcheckunusedlinesbody", "label": "StockCheckUnusedLinesBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/material.py", "source_location": "L192"}, {"id": "api_material_list_material_batches", "label": "list_material_batches()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/material.py", "source_location": "L201"}, {"id": "api_material_material_batch_options", "label": "material_batch_options()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/material.py", "source_location": "L232"}, {"id": "api_material_update_material_batch", "label": "update_material_batch()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/material.py", "source_location": "L255"}, {"id": "api_material_delete_material_batch", "label": "delete_material_batch()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/material.py", "source_location": "L284"}, {"id": "api_material_list_materials", "label": "list_materials()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/material.py", "source_location": "L304"}, {"id": "api_material_material_options", "label": "material_options()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/material.py", "source_location": "L327"}, {"id": "api_material_create_material", "label": "create_material()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/material.py", "source_location": "L339"}, {"id": "api_material_update_material", "label": "update_material()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/material.py", "source_location": "L359"}, {"id": "api_material_delete_material", "label": "delete_material()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/material.py", "source_location": "L380"}, {"id": "api_material_batch_Line truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_inbound_sample_special_py", "label": "inbound_sample_special.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/inbound_sample_special.py", "source_location": "L1"}, {"id": "crud_inbound_sample_special_update_inbound_sample_special_mark", "label": "update_inbound_sample_special_mark()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/inbound_sample_special.py", "source_location": "L17"}, {"id": "crud_inbound_sample_special_rationale_1", "label": "\u5165\u5e93\u6837\u672c\uff08\u91c7\u96c6\u534f\u8bae / \u79d1\u7814\u6350\u8d60\uff09\u00b7 \u7279\u6b8a\u6807\u8bb0\u7ef4\u62a4\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/inbound_sample_special.py", "source_location": "L1"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_inbound_sample_special_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/inbound_sample_special.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_inbound_sample_special_py", "target": "sqlalchemy_orm", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/inbound_sample_special.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_inbound_sample_special_py", "target": "app_models_models", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/inbound_sample_special.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_inbound_sample_special_py", "target": "app_models_research_donation", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/inbound_sample_special.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_inbound_sample_special_py", "target": "app_utils_sample_special", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/inbound_sample_special.py", "source_location": "L10", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_inbound_sample_special_py", "target": "crud_inbound_sample_special_update_inbound_sample_special_mark", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/inbound_sample_special.py", "source_location": "L17", "weight": 1.0}, {"source": "crud_inbound_sample_special_rationale_1", "target": "users_wuzilong_work_00code_zkxw_backend_app_crud_inbound_sample_special_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/inbound_sample_special.py", "source_location": "L1", "weight": 1.0}], "raw_calls": [{"caller_nid": "crud_inbound_sample_special_update_inbound_sample_special_mark", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/inbound_sample_special.py", "source_location": "L27"}, {"caller_nid": "crud_inbound_sample_special_update_inbound_sample_special_mark", "callee": "ValueError", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/inbound_sample_special.py", "source_location": "L29"}, {"caller_nid": "crud_inbound_sample_special_update_inbound_sample_special_mark", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/inbound_sample_special.py", "source_location": "L31"}, {"caller_nid": "crud_inbound_sample_special_update_inbound_sample_special_mark", "callee": "validate_sample_special_raw", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/inbound_sample_special.py", "source_location": "L33"}, {"caller_nid": "crud_inbound_sample_special_update_inbound_sample_special_mark", "callee": "first", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/inbound_sample_special.py", "source_location": "L37"}, {"caller_nid": "crud_inbound_sample_special_update_inbound_sample_special_mark", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/inbound_sample_special.py", "source_location": "L37"}, {"caller_nid": "crud_inbound_sample_special_update_inbound_sample_special_mark", "callee": "query", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/inbound_sample_special.py", "source_location": "L37"}, {"caller_nid": "crud_inbound_sample_special_update_inbound_sample_special_mark", "callee": "ValueError", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/inbound_sample_special.py", "source_location": "L46"}, {"caller_nid": "crud_inbound_sample_special_updaLine truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_research_donation_py", "label": "research_donation.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L1"}, {"id": "crud_research_donation_total_pages", "label": "total_pages()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L58"}, {"id": "crud_research_donation_donation_sample_code_seq", "label": "_donation_sample_code_seq()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L68"}, {"id": "crud_research_donation_next_donation_sample_code", "label": "next_donation_sample_code()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L80"}, {"id": "crud_research_donation_fmt_dt", "label": "_fmt_dt()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L141"}, {"id": "crud_research_donation_normalize_date_bound", "label": "_normalize_date_bound()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L145"}, {"id": "crud_research_donation_dec", "label": "_dec()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L152"}, {"id": "crud_research_donation_optional_decimal", "label": "_optional_decimal()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L160"}, {"id": "crud_research_donation_normalize_fields", "label": "_normalize_fields()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L172"}, {"id": "crud_research_donation_merge_comma_separated_urls", "label": "_merge_comma_separated_urls()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L183"}, {"id": "crud_research_donation_resolve_donation_payload", "label": "_resolve_donation_payload()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L199"}, {"id": "crud_research_donation_user_nick_name_map", "label": "_user_nick_name_map()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L217"}, {"id": "crud_research_donation_load_unit_name_map", "label": "_load_unit_name_map()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L225"}, {"id": "crud_research_donation_donation_to_dict", "label": "_donation_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L244"}, {"id": "crud_research_donation_audit_to_dict", "label": "_audit_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L278"}, {"id": "crud_research_donation_party_to_dict", "label": "_party_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L300"}, {"id": "crud_research_donation_collection_to_dict", "label": "_collection_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L334"}, {"id": "crud_research_donation_sample_to_dict", "label": "_sample_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L352"}, {"id": "crud_research_donation_transport_to_dict", "label": "_transport_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L375"}, {"id": "crud_research_donation_get_party", "label": "get_party()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L400"}, {"id": "crud_research_donation_get_collection", "label": "get_collection()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L416"}, {"id": "crud_research_donation_list_samples", "label": "list_samples()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L432"}, {"id": "crud_research_donation_list_sample_transports", "label": "list_sample_transports()", "file_type": "code", "source_file": "/UsLine truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_work_order_py", "label": "qc_work_order.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L1"}, {"id": "crud_qc_work_order_resolve_outbound_biz_type_for_schedule", "label": "resolve_outbound_biz_type_for_schedule()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L95"}, {"id": "crud_qc_work_order_dec", "label": "_dec()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L136"}, {"id": "crud_qc_work_order_fmt_dt", "label": "_fmt_dt()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L142"}, {"id": "crud_qc_work_order_normalize_date_bound", "label": "_normalize_date_bound()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L146"}, {"id": "crud_qc_work_order_reception_source_label", "label": "_reception_source_label()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L153"}, {"id": "crud_qc_work_order_qc_biz_type_label", "label": "_qc_biz_type_label()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L158"}, {"id": "crud_qc_work_order_work_order_qc_biz_type", "label": "_work_order_qc_biz_type()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L163"}, {"id": "crud_qc_work_order_validate_cell_product_id", "label": "_validate_cell_product_id()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L170"}, {"id": "crud_qc_work_order_enrich_work_order_cell_products", "label": "_enrich_work_order_cell_products()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L182"}, {"id": "crud_qc_work_order_enrich_work_order_step_outputs", "label": "_enrich_work_order_step_outputs()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L211"}, {"id": "crud_qc_work_order_enrich_work_order_qc_targets", "label": "_enrich_work_order_qc_targets()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L250"}, {"id": "crud_qc_work_order_enrich_outbound_work_orders", "label": "_enrich_outbound_work_orders()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L257"}, {"id": "crud_qc_work_order_outbound_qc_work_order_ids_by_keyword", "label": "_outbound_qc_work_order_ids_by_keyword()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L378"}, {"id": "crud_qc_work_order_inbound_qc_work_order_ids_by_mother_name", "label": "_inbound_qc_work_order_ids_by_mother_name()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L425"}, {"id": "crud_qc_work_order_accept_conclusion_label", "label": "_accept_conclusion_label()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L491"}, {"id": "crud_qc_work_order_load_sample_type_name_map", "label": "_load_sample_type_name_map()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L496"}, {"id": "crud_qc_work_order_effective_reception_source", "label": "_effective_reception_source()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L508"}, {"id": "crud_qc_work_order_effective_donation_sample_id", "label": "_effective_donation_sample_id()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L517"}, {"id": "crud_qc_work_order_effective_protocol_sample_id", "label": "_effective_protocol_sample_id()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L526"}, {"id": "crud_qc_work_order_sample_type_name_for_item", "label": "_sample_type_name_for_item()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L534"}, {"id": "crud_qc_work_order_sample_type_name_for_reception", "label": "_sample_type_name_for_reception()", "file_type": "code", "source_file": "/Users/wuzLine truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_task_py", "label": "qc_task.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L1"}, {"id": "crud_qc_task_dec", "label": "_dec()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L38"}, {"id": "crud_qc_task_fmt_dt", "label": "_fmt_dt()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L44"}, {"id": "crud_qc_task_gen_task_no", "label": "_gen_task_no()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L48"}, {"id": "crud_qc_task_conclusion_label", "label": "_conclusion_label()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L61"}, {"id": "crud_qc_task_task_to_dict", "label": "_task_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L66"}, {"id": "crud_qc_task_task_work_order_context", "label": "_task_work_order_context()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L100"}, {"id": "crud_qc_task_merge_work_order_summary_into_task", "label": "_merge_work_order_summary_into_task()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L176"}, {"id": "crud_qc_task_enrich_mine_tasks_with_work_order_summaries", "label": "_enrich_mine_tasks_with_work_order_summaries()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L200"}, {"id": "crud_qc_task_enrich_tasks_reception_fields", "label": "_enrich_tasks_reception_fields()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L220"}, {"id": "crud_qc_task_task_row_to_dict", "label": "_task_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L367"}, {"id": "crud_qc_task_create_task_for_line", "label": "create_task_for_line()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L378"}, {"id": "crud_qc_task_list_tasks", "label": "list_tasks()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L425"}, {"id": "crud_qc_task_list_mine_tasks", "label": "list_mine_tasks()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L506"}, {"id": "crud_qc_task_assert_task_assignee", "label": "assert_task_assignee()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L598"}, {"id": "crud_qc_task_list_tasks_by_work_order", "label": "list_tasks_by_work_order()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L605"}, {"id": "crud_qc_task_list_tasks_by_work_order_ids", "label": "list_tasks_by_work_order_ids()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L612"}, {"id": "crud_qc_task_get_task", "label": "get_task()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L642"}, {"id": "crud_qc_task_get_task_detail", "label": "get_task_detail()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L651"}, {"id": "crud_qc_task_start_task", "label": "start_task()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L684"}, {"id": "crud_qc_task_set_task_remark", "label": "_set_task_remark()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L701"}, {"id": "crud_qc_task_complete_task", "label": "complete_task()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L705"}, {"id": "crud_qc_task_apply_task_result", "label": "apply_task_result()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L746"}, {"id": "crud_qc_task_update_task_attachments", "label": "update_task_attachments()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L798"}, {"id": "crud_qc_task_create_qc_task_manual", "label": "create_qc_task_manual()", "file_type": "code"Line truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_api_production_py", "label": "production.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/production.py", "source_location": "L1"}, {"id": "api_production_legacy_material_write_gone", "label": "_legacy_material_write_gone()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/production.py", "source_location": "L75"}, {"id": "api_production_get_tenant_no", "label": "_get_tenant_no()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/production.py", "source_location": "L79"}, {"id": "api_production_get_current_user_id", "label": "_get_current_user_id()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/production.py", "source_location": "L87"}, {"id": "api_production_consumablecreatebody", "label": "ConsumableCreateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/production.py", "source_location": "L96"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "api_production_consumableupdatebody", "label": "ConsumableUpdateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/production.py", "source_location": "L110"}, {"id": "api_production_list_consumables", "label": "list_consumables()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/production.py", "source_location": "L125"}, {"id": "api_production_list_all_consumables", "label": "list_all_consumables()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/production.py", "source_location": "L139"}, {"id": "api_production_create_consumable", "label": "create_consumable()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/production.py", "source_location": "L149"}, {"id": "api_production_update_consumable", "label": "update_consumable()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/production.py", "source_location": "L158"}, {"id": "api_production_delete_consumable", "label": "delete_consumable()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/production.py", "source_location": "L168"}, {"id": "api_production_stockinbody", "label": "StockInBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/production.py", "source_location": "L176"}, {"id": "api_production_stockoutbody", "label": "StockOutBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/production.py", "source_location": "L182"}, {"id": "api_production_batchstockinitem", "label": "BatchStockInItem", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/production.py", "source_location": "L190"}, {"id": "api_production_batchstockinbody", "label": "BatchStockInBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/production.py", "source_location": "L197"}, {"id": "api_production_batchstockoutitem", "label": "BatchStockOutItem", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/production.py", "source_location": "L203"}, {"id": "api_production_batchstockoutbody", "label": "BatchStockOutBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/production.py", "source_location": "L209"}, {"id": "api_production_consumable_stock_in", "label": "consumable_stock_in()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/production.py", "source_location": "L218"}, {"id": "api_production_consumable_stock_out", "label": "consumable_stock_out()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/production.py", "source_location": "L240"}, {"id": "api_production_consumable_batch_stock_in", "label": "consumable_batch_stock_in()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/production.py", "source_location": "L264"}, {"id": "api_production_consumable_batch_stock_out", "label": "consumable_batch_stock_out()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/production.py", "source_location": "L282"}, {"id": "api_production_list_consumable_stock_logs", "label": "list_consumable_stock_logs()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/production.py", "source_location": "L301"}, {"id": "api_production_list_all_consumable_stock_logs", "label": "list_all_consumable_stock_logs()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/production.py", "source_location": "L320"}, {"id": "api_production_reagentcreatebody", "label": "ReagentCreateBody"Line truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_task_py", "label": "qc_task.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L1"}, {"id": "crud_qc_task_dec", "label": "_dec()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L38"}, {"id": "crud_qc_task_fmt_dt", "label": "_fmt_dt()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L44"}, {"id": "crud_qc_task_gen_task_no", "label": "_gen_task_no()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L48"}, {"id": "crud_qc_task_conclusion_label", "label": "_conclusion_label()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L61"}, {"id": "crud_qc_task_task_to_dict", "label": "_task_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L66"}, {"id": "crud_qc_task_task_work_order_context", "label": "_task_work_order_context()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L100"}, {"id": "crud_qc_task_merge_work_order_summary_into_task", "label": "_merge_work_order_summary_into_task()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L176"}, {"id": "crud_qc_task_enrich_mine_tasks_with_work_order_summaries", "label": "_enrich_mine_tasks_with_work_order_summaries()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L200"}, {"id": "crud_qc_task_enrich_tasks_reception_fields", "label": "_enrich_tasks_reception_fields()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L220"}, {"id": "crud_qc_task_task_row_to_dict", "label": "_task_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L336"}, {"id": "crud_qc_task_create_task_for_line", "label": "create_task_for_line()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L347"}, {"id": "crud_qc_task_list_tasks", "label": "list_tasks()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L394"}, {"id": "crud_qc_task_list_mine_tasks", "label": "list_mine_tasks()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L475"}, {"id": "crud_qc_task_assert_task_assignee", "label": "assert_task_assignee()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L567"}, {"id": "crud_qc_task_list_tasks_by_work_order", "label": "list_tasks_by_work_order()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L574"}, {"id": "crud_qc_task_list_tasks_by_work_order_ids", "label": "list_tasks_by_work_order_ids()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L581"}, {"id": "crud_qc_task_get_task", "label": "get_task()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L611"}, {"id": "crud_qc_task_get_task_detail", "label": "get_task_detail()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L620"}, {"id": "crud_qc_task_start_task", "label": "start_task()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L653"}, {"id": "crud_qc_task_set_task_remark", "label": "_set_task_remark()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L670"}, {"id": "crud_qc_task_complete_task", "label": "complete_task()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L674"}, {"id": "crud_qc_task_apply_task_result", "label": "apply_task_result()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L715"}, {"id": "crud_qc_task_update_task_attachments", "label": "update_task_attachments()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L767"}, {"id": "crud_qc_task_create_qc_task_manual", "label": "create_qc_task_manual()", "file_type": "code"Line truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_research_donation_py", "label": "research_donation.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L1"}, {"id": "crud_research_donation_total_pages", "label": "total_pages()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L63"}, {"id": "crud_research_donation_donation_sample_code_seq", "label": "_donation_sample_code_seq()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L73"}, {"id": "crud_research_donation_next_donation_sample_code", "label": "next_donation_sample_code()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L85"}, {"id": "crud_research_donation_fmt_dt", "label": "_fmt_dt()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L146"}, {"id": "crud_research_donation_normalize_date_bound", "label": "_normalize_date_bound()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L150"}, {"id": "crud_research_donation_dec", "label": "_dec()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L157"}, {"id": "crud_research_donation_optional_decimal", "label": "_optional_decimal()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L165"}, {"id": "crud_research_donation_normalize_fields", "label": "_normalize_fields()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L177"}, {"id": "crud_research_donation_merge_comma_separated_urls", "label": "_merge_comma_separated_urls()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L188"}, {"id": "crud_research_donation_resolve_donation_payload", "label": "_resolve_donation_payload()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L204"}, {"id": "crud_research_donation_user_nick_name_map", "label": "_user_nick_name_map()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L222"}, {"id": "crud_research_donation_load_unit_name_map", "label": "_load_unit_name_map()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L230"}, {"id": "crud_research_donation_donation_to_dict", "label": "_donation_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L249"}, {"id": "crud_research_donation_audit_to_dict", "label": "_audit_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L284"}, {"id": "crud_research_donation_party_to_dict", "label": "_party_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L306"}, {"id": "crud_research_donation_collection_to_dict", "label": "_collection_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L340"}, {"id": "crud_research_donation_sample_to_dict", "label": "_sample_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L358"}, {"id": "crud_research_donation_transport_to_dict", "label": "_transport_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L382"}, {"id": "crud_research_donation_get_party", "label": "get_party()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L407"}, {"id": "crud_research_donation_get_collection", "label": "get_collection()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L423"}, {"id": "crud_research_donation_list_samples", "label": "list_samples()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L439"}, {"id": "crud_research_donation_list_sample_transports", "label": "list_sample_transports()", "file_type": "code", "source_file": "/UsLine truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_py", "label": "collection_protocol.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L1"}, {"id": "crud_collection_protocol_get_protocol_nos_used_in_protocols", "label": "get_protocol_nos_used_in_protocols()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L69"}, {"id": "crud_collection_protocol_get_sample_codes_used_in_protocol_samples", "label": "get_sample_codes_used_in_protocol_samples()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L103"}, {"id": "crud_collection_protocol_validate_sample_codes_not_used", "label": "validate_sample_codes_not_used()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L137"}, {"id": "crud_collection_protocol_total_pages", "label": "total_pages()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L170"}, {"id": "crud_collection_protocol_fmt_dt", "label": "_fmt_dt()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L176"}, {"id": "crud_collection_protocol_dec", "label": "_dec()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L180"}, {"id": "crud_collection_protocol_optional_decimal", "label": "_optional_decimal()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L188"}, {"id": "crud_collection_protocol_today_yyyymmdd", "label": "_today_yyyymmdd()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L194"}, {"id": "crud_collection_protocol_normalize_yyyymmdd_date", "label": "_normalize_yyyymmdd_date()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L198"}, {"id": "crud_collection_protocol_normalize_fields", "label": "_normalize_fields()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L217"}, {"id": "crud_collection_protocol_pop_attachment_urls", "label": "_pop_attachment_urls()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L228"}, {"id": "crud_collection_protocol_attachments_to_urls", "label": "attachments_to_urls()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L239"}, {"id": "crud_collection_protocol_normalize_attachment_url_key", "label": "_normalize_attachment_url_key()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L258"}, {"id": "crud_collection_protocol_format_attachment_file_size", "label": "_format_attachment_file_size()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L267"}, {"id": "crud_collection_protocol_lookup_attachment_by_url", "label": "_lookup_attachment_by_url()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L275"}, {"id": "crud_collection_protocol_urls_to_attachment_list", "label": "urls_to_attachment_list()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L299"}, {"id": "crud_collection_protocol_user_nick_name_map", "label": "_user_nick_name_map()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L331"}, {"id": "crud_collection_protocol_protocol_to_dict", "label": "_protocol_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L339"}, {"id": "crud_collection_protocol_payment_to_dict", "label": "_payment_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L365"}, {"id": "crud_collection_protocol_detail_to_dict", "label": "_detail_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py", "source_location": "L386"}, {"id": "crud_collection_protocol_audit_to_dict", "label": "_audit_to_dict()", "file_type": "code", "sourceLine truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_task_py", "label": "qc_task.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L1"}, {"id": "crud_qc_task_dec", "label": "_dec()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L38"}, {"id": "crud_qc_task_fmt_dt", "label": "_fmt_dt()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L44"}, {"id": "crud_qc_task_gen_task_no", "label": "_gen_task_no()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L48"}, {"id": "crud_qc_task_conclusion_label", "label": "_conclusion_label()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L61"}, {"id": "crud_qc_task_task_to_dict", "label": "_task_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L66"}, {"id": "crud_qc_task_task_work_order_context", "label": "_task_work_order_context()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L100"}, {"id": "crud_qc_task_merge_work_order_summary_into_task", "label": "_merge_work_order_summary_into_task()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L176"}, {"id": "crud_qc_task_enrich_mine_tasks_with_work_order_summaries", "label": "_enrich_mine_tasks_with_work_order_summaries()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L200"}, {"id": "crud_qc_task_enrich_tasks_reception_fields", "label": "_enrich_tasks_reception_fields()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L220"}, {"id": "crud_qc_task_task_row_to_dict", "label": "_task_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L336"}, {"id": "crud_qc_task_create_task_for_line", "label": "create_task_for_line()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L347"}, {"id": "crud_qc_task_list_tasks", "label": "list_tasks()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L394"}, {"id": "crud_qc_task_list_mine_tasks", "label": "list_mine_tasks()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L475"}, {"id": "crud_qc_task_assert_task_assignee", "label": "assert_task_assignee()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L567"}, {"id": "crud_qc_task_list_tasks_by_work_order", "label": "list_tasks_by_work_order()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L574"}, {"id": "crud_qc_task_list_tasks_by_work_order_ids", "label": "list_tasks_by_work_order_ids()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L581"}, {"id": "crud_qc_task_get_task", "label": "get_task()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L611"}, {"id": "crud_qc_task_get_task_detail", "label": "get_task_detail()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L620"}, {"id": "crud_qc_task_start_task", "label": "start_task()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L653"}, {"id": "crud_qc_task_set_task_remark", "label": "_set_task_remark()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L670"}, {"id": "crud_qc_task_complete_task", "label": "complete_task()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L674"}, {"id": "crud_qc_task_apply_task_result", "label": "apply_task_result()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L715"}, {"id": "crud_qc_task_update_task_attachments", "label": "update_task_attachments()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L767"}, {"id": "crud_qc_task_create_qc_task_manual", "label": "create_qc_task_manual()", "file_type": "code"Line truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_api_collection_protocol_py", "label": "collection_protocol.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/collection_protocol.py", "source_location": "L1"}, {"id": "api_collection_protocol_get_tenant_no", "label": "_get_tenant_no()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/collection_protocol.py", "source_location": "L29"}, {"id": "api_collection_protocol_get_current_user_id", "label": "_get_current_user_id()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/collection_protocol.py", "source_location": "L39"}, {"id": "api_collection_protocol_protocol_accessible", "label": "_protocol_accessible()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/collection_protocol.py", "source_location": "L46"}, {"id": "api_collection_protocol_parse_datetime_fields", "label": "_parse_datetime_fields()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/collection_protocol.py", "source_location": "L68"}, {"id": "api_collection_protocol_ensure_customer_for_mother", "label": "_ensure_customer_for_mother()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/collection_protocol.py", "source_location": "L82"}, {"id": "api_collection_protocol_list_collection_protocols", "label": "list_collection_protocols()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/collection_protocol.py", "source_location": "L131"}, {"id": "api_collection_protocol_get_collection_protocol_detail", "label": "get_collection_protocol_detail()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/collection_protocol.py", "source_location": "L162"}, {"id": "api_collection_protocol_protocolcreatebody", "label": "ProtocolCreateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/collection_protocol.py", "source_location": "L176"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "api_collection_protocol_protocolupdatebody", "label": "ProtocolUpdateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/collection_protocol.py", "source_location": "L195"}, {"id": "api_collection_protocol_resolve_protocol_attachments", "label": "_resolve_protocol_attachments()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/collection_protocol.py", "source_location": "L222"}, {"id": "api_collection_protocol_persist_protocol_sub_resources", "label": "_persist_protocol_sub_resources()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/collection_protocol.py", "source_location": "L232"}, {"id": "api_collection_protocol_create_collection_protocol", "label": "create_collection_protocol()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/collection_protocol.py", "source_location": "L268"}, {"id": "api_collection_protocol_update_collection_protocol", "label": "update_collection_protocol()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/collection_protocol.py", "source_location": "L311"}, {"id": "api_collection_protocol_delete_collection_protocol", "label": "delete_collection_protocol()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/collection_protocol.py", "source_location": "L361"}, {"id": "api_collection_protocol_list_collection_protocol_audits", "label": "list_collection_protocol_audits()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/collection_protocol.py", "source_location": "L388"}, {"id": "api_collection_protocol_auditcreatebody", "label": "AuditCreateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/collection_protocol.py", "source_location": "L412"}, {"id": "api_collection_protocol_submit_collection_protocol_audit", "label": "submit_collection_protocol_audit()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/collection_protocol.py", "source_location": "L420"}, {"id": "api_collection_protocol_list_payment_details", "label": "list_payment_details()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/collection_protocol.py", "source_location": "L449"}, {"id": "api_collection_protocol_batchdetailidsbody", "label": "BatchDetailIdsBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/collection_protocol.py", "source_location": "L477"}, {"id": "api_collection_protocol_paymentdetaildraftbody", "label": "PaymentDetailDraftBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/Line truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_research_donation_py", "label": "research_donation.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L1"}, {"id": "crud_research_donation_total_pages", "label": "total_pages()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L63"}, {"id": "crud_research_donation_donation_sample_code_seq", "label": "_donation_sample_code_seq()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L73"}, {"id": "crud_research_donation_next_donation_sample_code", "label": "next_donation_sample_code()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L85"}, {"id": "crud_research_donation_fmt_dt", "label": "_fmt_dt()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L146"}, {"id": "crud_research_donation_normalize_date_bound", "label": "_normalize_date_bound()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L150"}, {"id": "crud_research_donation_dec", "label": "_dec()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L157"}, {"id": "crud_research_donation_optional_decimal", "label": "_optional_decimal()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L165"}, {"id": "crud_research_donation_normalize_fields", "label": "_normalize_fields()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L177"}, {"id": "crud_research_donation_merge_comma_separated_urls", "label": "_merge_comma_separated_urls()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L188"}, {"id": "crud_research_donation_resolve_donation_payload", "label": "_resolve_donation_payload()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L204"}, {"id": "crud_research_donation_user_nick_name_map", "label": "_user_nick_name_map()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L222"}, {"id": "crud_research_donation_load_unit_name_map", "label": "_load_unit_name_map()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L230"}, {"id": "crud_research_donation_donation_to_dict", "label": "_donation_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L249"}, {"id": "crud_research_donation_audit_to_dict", "label": "_audit_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L283"}, {"id": "crud_research_donation_party_to_dict", "label": "_party_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L305"}, {"id": "crud_research_donation_collection_to_dict", "label": "_collection_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L339"}, {"id": "crud_research_donation_sample_to_dict", "label": "_sample_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L357"}, {"id": "crud_research_donation_transport_to_dict", "label": "_transport_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L381"}, {"id": "crud_research_donation_get_party", "label": "get_party()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L406"}, {"id": "crud_research_donation_get_collection", "label": "get_collection()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L422"}, {"id": "crud_research_donation_list_samples", "label": "list_samples()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L438"}, {"id": "crud_research_donation_list_sample_transports", "label": "list_sample_transports()", "file_type": "code", "source_file": "/UsLine truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_models_material_py", "label": "material.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/material.py", "source_location": "L1"}, {"id": "models_material_bizmaterial", "label": "BizMaterial", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/material.py", "source_location": "L8"}, {"id": "base", "label": "Base", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "models_material_bizmaterialstockbatch", "label": "BizMaterialStockBatch", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/material.py", "source_location": "L32"}, {"id": "models_material_bizmaterialusage", "label": "BizMaterialUsage", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/material.py", "source_location": "L62"}, {"id": "models_material_bizmaterialstockcheck", "label": "BizMaterialStockCheck", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/material.py", "source_location": "L105"}, {"id": "models_material_bizmaterialstockcheckbatchline", "label": "BizMaterialStockCheckBatchLine", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/material.py", "source_location": "L124"}, {"id": "models_material_bizmaterialstockcheckunusedline", "label": "BizMaterialStockCheckUnusedLine", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/material.py", "source_location": "L155"}, {"id": "models_material_bizmaterialstocklog", "label": "BizMaterialStockLog", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/material.py", "source_location": "L186"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_models_material_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/material.py", "source_location": "L1", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_material_py", "target": "sqlalchemy", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/material.py", "source_location": "L3", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_material_py", "target": "app_core_database", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/material.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_material_py", "target": "models_material_bizmaterial", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/material.py", "source_location": "L8", "weight": 1.0}, {"source": "models_material_bizmaterial", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/material.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_material_py", "target": "models_material_bizmaterialstockbatch", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/material.py", "source_location": "L32", "weight": 1.0}, {"source": "models_material_bizmaterialstockbatch", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/material.py", "source_location": "L32", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_material_py", "target": "models_material_bizmaterialusage", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/material.py", "source_location": "L62", "weight": 1.0}, {"source": "models_material_bizmaterialusage", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/material.py", "source_location": "L62", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_material_py", "target": "models_material_bizmaterialstockcheck", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/material.py", "source_location": "L105", "weight": 1.0}, {"source": "models_material_bizmaterialstockcheck", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/material.py", "source_location": "L105", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_material_py", "target": "models_material_bizmaterialstockcheckbatchline", "relation": "contains",Line truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_core_protocol_status_display_py", "label": "protocol_status_display.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/protocol_status_display.py", "source_location": "L1"}, {"id": "core_protocol_status_display_resolve_void_type_label", "label": "resolve_void_type_label()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/protocol_status_display.py", "source_location": "L35"}, {"id": "core_protocol_status_display_format_protocol_status_label", "label": "format_protocol_status_label()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/protocol_status_display.py", "source_location": "L59"}, {"id": "core_protocol_status_display_build_void_type_label_map", "label": "build_void_type_label_map()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/protocol_status_display.py", "source_location": "L78"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_core_protocol_status_display_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/protocol_status_display.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_protocol_status_display_py", "target": "sqlalchemy_orm", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/protocol_status_display.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_protocol_status_display_py", "target": "app_models_models", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/protocol_status_display.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_protocol_status_display_py", "target": "core_protocol_status_display_resolve_void_type_label", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/protocol_status_display.py", "source_location": "L35", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_protocol_status_display_py", "target": "core_protocol_status_display_format_protocol_status_label", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/protocol_status_display.py", "source_location": "L59", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_protocol_status_display_py", "target": "core_protocol_status_display_build_void_type_label_map", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/protocol_status_display.py", "source_location": "L78", "weight": 1.0}, {"source": "core_protocol_status_display_format_protocol_status_label", "target": "core_protocol_status_display_resolve_void_type_label", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/protocol_status_display.py", "source_location": "L72", "weight": 1.0}], "raw_calls": [{"caller_nid": "core_protocol_status_display_resolve_void_type_label", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/protocol_status_display.py", "source_location": "L40"}, {"caller_nid": "core_protocol_status_display_resolve_void_type_label", "callee": "first", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/protocol_status_display.py", "source_location": "L45"}, {"caller_nid": "core_protocol_status_display_resolve_void_type_label", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/protocol_status_display.py", "source_location": "L45"}, {"caller_nid": "core_protocol_status_display_resolve_void_type_label", "callee": "query", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/protocol_status_display.py", "source_location": "L45"}, {"caller_nid": "core_protocol_status_display_resolve_void_type_label", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/protocol_status_display.py", "source_location": "L54"}, {"caller_nid": "core_protocol_status_display_resolve_void_type_label", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/protocol_status_display.py", "source_location": "L55"}, {"caller_nid": "core_protocol_status_display_resolve_void_type_label", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/protocol_status_display.py", "source_location": "L56"}, {"caller_nid": "core_protocol_status_display_format_protocol_status_label", "callee": "strip", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/protocol_status_displLine truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_material_usage_py", "label": "material_usage.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_usage.py", "source_location": "L1"}, {"id": "crud_material_usage_parse_receiver_purpose_from_remark", "label": "_parse_receiver_purpose_from_remark()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_usage.py", "source_location": "L14"}, {"id": "crud_material_usage_resolve_receiver_purpose", "label": "_resolve_receiver_purpose()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_usage.py", "source_location": "L25"}, {"id": "crud_material_usage_display_remark", "label": "_display_remark()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_usage.py", "source_location": "L35"}, {"id": "crud_material_usage_user_nick_name_map", "label": "_user_nick_name_map()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_usage.py", "source_location": "L50"}, {"id": "crud_material_usage_receiver_display_map", "label": "_receiver_display_map()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_usage.py", "source_location": "L58"}, {"id": "crud_material_usage_usage_unit_label", "label": "_usage_unit_label()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_usage.py", "source_location": "L69"}, {"id": "crud_material_usage_stock_in_date_for_row", "label": "_stock_in_date_for_row()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_usage.py", "source_location": "L78"}, {"id": "crud_material_usage_unit_price_for_row", "label": "_unit_price_for_row()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_usage.py", "source_location": "L84"}, {"id": "crud_material_usage_amount_for_row", "label": "_amount_for_row()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_usage.py", "source_location": "L92"}, {"id": "crud_material_usage_row_to_dict", "label": "_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_usage.py", "source_location": "L108"}, {"id": "crud_material_usage_batch_map", "label": "_batch_map()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_usage.py", "source_location": "L160"}, {"id": "crud_material_usage_list_usages_query", "label": "_list_usages_query()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_usage.py", "source_location": "L172"}, {"id": "crud_material_usage_paginate_usages", "label": "_paginate_usages()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_usage.py", "source_location": "L226"}, {"id": "crud_material_usage_list_usages", "label": "list_usages()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_usage.py", "source_location": "L257"}, {"id": "crud_material_usage_fmt_date_val", "label": "_fmt_date_val()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_usage.py", "source_location": "L285"}, {"id": "crud_material_usage_list_stock_check_requisitions", "label": "list_stock_check_requisitions()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_usage.py", "source_location": "L293"}, {"id": "crud_material_usage_mark_requisition_fully_used", "label": "mark_requisition_fully_used()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_usage.py", "source_location": "L382"}, {"id": "crud_material_usage_rationale_302", "label": "\u76d8\u70b9\u767b\u8bb0\u5f39\u7a97\uff1a\u5f85\u5904\u7406\u9886\u7528\u8bb0\u5f55\uff08\u672a\u6807\u8bb0\u5df2\u4f7f\u7528\u5b8c\uff09\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_usage.py", "source_location": "L302"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_material_usage_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_usage.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_material_usage_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_usage.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_material_usage_py", "target": "sqlalchemy", "relation": "imports_Line truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_research_donation_py", "label": "research_donation.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L1"}, {"id": "crud_research_donation_total_pages", "label": "total_pages()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L63"}, {"id": "crud_research_donation_donation_sample_code_seq", "label": "_donation_sample_code_seq()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L73"}, {"id": "crud_research_donation_next_donation_sample_code", "label": "next_donation_sample_code()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L85"}, {"id": "crud_research_donation_fmt_dt", "label": "_fmt_dt()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L146"}, {"id": "crud_research_donation_normalize_date_bound", "label": "_normalize_date_bound()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L150"}, {"id": "crud_research_donation_dec", "label": "_dec()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L157"}, {"id": "crud_research_donation_optional_decimal", "label": "_optional_decimal()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L165"}, {"id": "crud_research_donation_normalize_fields", "label": "_normalize_fields()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L177"}, {"id": "crud_research_donation_merge_comma_separated_urls", "label": "_merge_comma_separated_urls()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L188"}, {"id": "crud_research_donation_resolve_donation_payload", "label": "_resolve_donation_payload()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L204"}, {"id": "crud_research_donation_user_nick_name_map", "label": "_user_nick_name_map()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L222"}, {"id": "crud_research_donation_load_unit_name_map", "label": "_load_unit_name_map()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L230"}, {"id": "crud_research_donation_donation_to_dict", "label": "_donation_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L249"}, {"id": "crud_research_donation_audit_to_dict", "label": "_audit_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L283"}, {"id": "crud_research_donation_party_to_dict", "label": "_party_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L305"}, {"id": "crud_research_donation_collection_to_dict", "label": "_collection_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L339"}, {"id": "crud_research_donation_sample_to_dict", "label": "_sample_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L357"}, {"id": "crud_research_donation_transport_to_dict", "label": "_transport_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L381"}, {"id": "crud_research_donation_get_party", "label": "get_party()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L406"}, {"id": "crud_research_donation_get_collection", "label": "get_collection()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L422"}, {"id": "crud_research_donation_list_samples", "label": "list_samples()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L438"}, {"id": "crud_research_donation_list_sample_transports", "label": "list_sample_transports()", "file_type": "code", "source_file": "/UsLine truncated
|
||||
@@ -79,6 +79,7 @@ class BizMaterialUsage(Base):
|
||||
stock_before = Column(Numeric(18, 4), nullable=True, comment="变动前物资汇总库存")
|
||||
stock_after = Column(Numeric(18, 4), nullable=False, comment="变动后库存量")
|
||||
receiver = Column(String(64), nullable=True, comment="领用人(手动出库)")
|
||||
operator_name = Column(String(100), nullable=True, comment="经办人姓名")
|
||||
purpose = Column(String(512), nullable=True, comment="用途/事由(手动出库或废弃原因)")
|
||||
requisition_status = Column(
|
||||
String(16),
|
||||
|
||||
@@ -750,6 +750,7 @@ class BizCollectionProtocol(Base):
|
||||
expire_desc = Column(String(512), nullable=True, comment="协议过期描述")
|
||||
void_time = Column(DateTime, nullable=True, comment="协议作废时间")
|
||||
void_desc = Column(String(512), nullable=True, comment="协议作废描述")
|
||||
void_type = Column(String(32), nullable=True, comment="协议作废类型(字典 xyzflx)")
|
||||
to_research_time = Column(DateTime, nullable=True, comment="协议转科研时间")
|
||||
to_research_desc = Column(String(512), nullable=True, comment="协议转科研描述")
|
||||
collector_user_id = Column(String(64), nullable=True, comment="采集专员用户ID")
|
||||
@@ -1013,6 +1014,8 @@ class BizProtocolSample(Base):
|
||||
detect_start_date = Column(CHAR(8), nullable=True, comment="检测开始日期YYYYMMDD")
|
||||
void_date = Column(CHAR(8), nullable=True, comment="作废日期YYYYMMDD")
|
||||
storage_expire_date = Column(CHAR(8), nullable=True, comment="存储到期日期YYYYMMDD")
|
||||
is_special = Column(SmallInteger, nullable=False, default=0, comment="是否特殊样本:0否 1是")
|
||||
special_remark = Column(String(256), nullable=True, comment="特殊说明")
|
||||
tenant_no = Column(String(64), nullable=False, default="zkxw", comment="租户编号")
|
||||
order_num = Column(Integer, nullable=True, comment="排序号")
|
||||
remark = Column(String(512), nullable=True, comment="备注")
|
||||
|
||||
@@ -13,7 +13,7 @@ class BizResearchDonation(Base):
|
||||
|
||||
id = Column(String(64), primary_key=True, comment="主键ID")
|
||||
donation_no = Column(String(64), nullable=False, comment="捐赠协议编号")
|
||||
donation_status = Column(String(16), nullable=False, default="dsx", comment="状态 dsx/sxz/ygq/yzf/zckc")
|
||||
donation_status = Column(String(16), nullable=False, default="dsx", comment="状态 dsx/sxz/ygq/yzf/sdfq/zckc")
|
||||
donation_date = Column(String(8), nullable=True, comment="捐赠日期YYYYMMDD")
|
||||
source_type = Column(String(20), nullable=False, default="direct", comment="来源类型 direct/from_storage")
|
||||
source_protocol_id = Column(String(64), nullable=True, comment="来源协议ID")
|
||||
@@ -26,6 +26,7 @@ class BizResearchDonation(Base):
|
||||
expire_desc = Column(String(512), nullable=True, comment="过期描述")
|
||||
void_time = Column(DateTime, nullable=True, comment="作废时间")
|
||||
void_desc = Column(String(512), nullable=True, comment="作废描述")
|
||||
void_type = Column(String(32), nullable=True, comment="作废类型(字典 xyzflx)")
|
||||
to_storage_time = Column(DateTime, nullable=True, comment="转存储时间")
|
||||
to_storage_desc = Column(String(512), nullable=True, comment="转存储描述")
|
||||
tenant_no = Column(String(64), nullable=False, default="zkxw", comment="租户编号")
|
||||
@@ -142,6 +143,8 @@ class BizResearchDonationSample(Base):
|
||||
detect_start_date = Column(String(8), nullable=True, comment="检测开始日期YYYYMMDD")
|
||||
void_date = Column(String(8), nullable=True, comment="作废日期YYYYMMDD")
|
||||
storage_expire_date = Column(String(8), nullable=True, comment="存储到期日期YYYYMMDD")
|
||||
is_special = Column(SmallInteger, nullable=False, default=0, comment="是否特殊样本:0否 1是")
|
||||
special_remark = Column(String(256), nullable=True, comment="特殊说明")
|
||||
tenant_no = Column(String(64), nullable=False, default="zkxw", comment="租户编号")
|
||||
order_num = Column(Integer, nullable=True, comment="排序号")
|
||||
remark = Column(String(512), nullable=True, comment="备注")
|
||||
|
||||
@@ -0,0 +1,66 @@
|
||||
"""协议/捐赠样本 · 特殊标记字段工具。"""
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import Any, Dict, Optional
|
||||
|
||||
|
||||
def _truthy_flag(value: Any) -> bool:
|
||||
if value is True or value == 1:
|
||||
return True
|
||||
if isinstance(value, str):
|
||||
return value.strip().lower() in ("1", "true", "yes")
|
||||
return False
|
||||
|
||||
|
||||
def sample_special_to_dict(sample: Any) -> Dict[str, Any]:
|
||||
if sample is None:
|
||||
return {"isSpecial": False, "specialRemark": ""}
|
||||
return {
|
||||
"isSpecial": bool(getattr(sample, "is_special", 0)),
|
||||
"specialRemark": (getattr(sample, "special_remark", None) or "").strip(),
|
||||
}
|
||||
|
||||
|
||||
def validate_sample_special_raw(raw: dict, *, index: Optional[int] = None) -> None:
|
||||
is_special = _truthy_flag(raw.get("is_special"))
|
||||
remark = (raw.get("special_remark") or "").strip()
|
||||
prefix = f"样本第{index + 1}行:" if index is not None else ""
|
||||
if is_special and not remark:
|
||||
raise ValueError(f"{prefix}特殊样本须填写特殊说明")
|
||||
if len(remark) > 256:
|
||||
raise ValueError(f"{prefix}特殊说明不能超过256个字符")
|
||||
|
||||
|
||||
def apply_sample_special_fields(obj: Any, raw: dict) -> None:
|
||||
is_special = _truthy_flag(raw.get("is_special"))
|
||||
remark = (raw.get("special_remark") or "").strip()
|
||||
obj.is_special = 1 if is_special else 0
|
||||
obj.special_remark = remark if is_special and remark else None
|
||||
|
||||
|
||||
def apply_inbound_sample_special_mark_fields(obj: Any, raw: dict) -> None:
|
||||
"""质检等场景:取消勾选时保留 special_remark,仅清除 is_special 标记。"""
|
||||
is_special = _truthy_flag(raw.get("is_special"))
|
||||
remark = (raw.get("special_remark") or "").strip()
|
||||
obj.is_special = 1 if is_special else 0
|
||||
if is_special:
|
||||
obj.special_remark = remark if remark else None
|
||||
elif remark:
|
||||
obj.special_remark = remark
|
||||
|
||||
|
||||
def apply_special_to_item_from_samples(
|
||||
item: Dict[str, Any],
|
||||
*,
|
||||
source: str,
|
||||
protocol_sample_id: str,
|
||||
donation_sample_id: str,
|
||||
protocol_samples: Dict[str, Any],
|
||||
donation_samples: Dict[str, Any],
|
||||
) -> None:
|
||||
sample = None
|
||||
if source == "research_donation":
|
||||
sample = donation_samples.get(donation_sample_id or "")
|
||||
else:
|
||||
sample = protocol_samples.get(protocol_sample_id or "")
|
||||
item.update(sample_special_to_dict(sample))
|
||||
File diff suppressed because it is too large.
Load diff
+21392
-17826
File diff suppressed because it is too large.
Load diff
@@ -1,11 +1,11 @@
|
||||
# Graph Report - app (2026-06-30)
|
||||
# Graph Report - app (2026-07-01)
|
||||
|
||||
## Corpus Check
|
||||
- Large corpus: 214 files · ~260,355 words. Semantic extraction will be expensive (many Claude tokens). Consider running on a subfolder, or use --no-semantic to run AST-only.
|
||||
- Large corpus: 217 files · ~262,549 words. Semantic extraction will be expensive (many Claude tokens). Consider running on a subfolder, or use --no-semantic to run AST-only.
|
||||
|
||||
## Summary
|
||||
- 4447 nodes · 23842 edges · 52 communities detected
|
||||
- Extraction: 32% EXTRACTED · 68% INFERRED · 0% AMBIGUOUS · INFERRED: 16206 edges (avg confidence: 0.59)
|
||||
- 4481 nodes · 24087 edges · 45 communities detected
|
||||
- Extraction: 32% EXTRACTED · 68% INFERRED · 0% AMBIGUOUS · INFERRED: 16400 edges (avg confidence: 0.59)
|
||||
- Token cost: 0 input · 0 output
|
||||
|
||||
## Community Hubs (Navigation)
|
||||
@@ -48,26 +48,19 @@
|
||||
- [[_COMMUNITY_Community 36|Community 36]]
|
||||
- [[_COMMUNITY_Community 37|Community 37]]
|
||||
- [[_COMMUNITY_Community 38|Community 38]]
|
||||
- [[_COMMUNITY_Community 39|Community 39]]
|
||||
- [[_COMMUNITY_Community 40|Community 40]]
|
||||
- [[_COMMUNITY_Community 41|Community 41]]
|
||||
- [[_COMMUNITY_Community 42|Community 42]]
|
||||
- [[_COMMUNITY_Community 43|Community 43]]
|
||||
- [[_COMMUNITY_Community 44|Community 44]]
|
||||
- [[_COMMUNITY_Community 45|Community 45]]
|
||||
- [[_COMMUNITY_Community 48|Community 48]]
|
||||
- [[_COMMUNITY_Community 49|Community 49]]
|
||||
- [[_COMMUNITY_Community 50|Community 50]]
|
||||
- [[_COMMUNITY_Community 51|Community 51]]
|
||||
- [[_COMMUNITY_Community 52|Community 52]]
|
||||
- [[_COMMUNITY_Community 53|Community 53]]
|
||||
- [[_COMMUNITY_Community 46|Community 46]]
|
||||
|
||||
## God Nodes (most connected - your core abstractions)
|
||||
1. `success_response()` - 668 edges
|
||||
2. `error_response()` - 552 edges
|
||||
3. `SysUser` - 480 edges
|
||||
4. `BizProductionMaterial` - 311 edges
|
||||
5. `BizQcTaskResult` - 310 edges
|
||||
1. `success_response()` - 670 edges
|
||||
2. `error_response()` - 554 edges
|
||||
3. `SysUser` - 500 edges
|
||||
4. `BizQcTaskResult` - 314 edges
|
||||
5. `BizProductionMaterial` - 311 edges
|
||||
6. `BizProductionMaterialUsage` - 306 edges
|
||||
7. `BizQcMaterialUsage` - 303 edges
|
||||
8. `BizQcMaterial` - 294 edges
|
||||
@@ -90,252 +83,224 @@
|
||||
|
||||
### Community 0 - "Community 0"
|
||||
Cohesion: 0.01
|
||||
Nodes (880): attachment_download_url(), create_dept(), create_dict_data(), create_dict_type(), create_express_company(), create_item_unit(), create_menu(), create_post() (+872 more)
|
||||
Nodes (869): attachment_download_url(), create_dept(), create_dict_data(), create_dict_type(), create_express_company(), create_item_unit(), create_menu(), create_post() (+861 more)
|
||||
|
||||
### Community 1 - "Community 1"
|
||||
Cohesion: 0.01
|
||||
Nodes (568): AttachmentDownloadUrlBody, DeptCreateBody, DeptUpdateBody, DictDataCreateBody, DictDataUpdateBody, DictTypeCreateBody, DictTypeUpdateBody, ExpressCompanyCreateBody (+560 more)
|
||||
Nodes (573): AttachmentDownloadUrlBody, DeptCreateBody, DeptUpdateBody, DictDataCreateBody, DictDataUpdateBody, DictTypeCreateBody, DictTypeUpdateBody, ExpressCompanyCreateBody (+565 more)
|
||||
|
||||
### Community 2 - "Community 2"
|
||||
Cohesion: 0.08
|
||||
Nodes (355): 环境检测 — 检测项维护 + 登记管理 API, 保险公司及险种价格管理 API(保险公司 + 开票信息 + 险种价格), AccessLogCreateBody, AccessLogUpdateBody, CleanRoomCreateBody, CleanRoomUpdateBody, ExhibitionAppointmentCreateBody, ExhibitionAppointmentUpdateBody (+347 more)
|
||||
Cohesion: 0.01
|
||||
Nodes (469): list_ethnics_for_select(), get_designer_data(), apply_data_scope(), _get_child_dept_ids(), get_user_dept_id(), _resolve_user_role_scopes(), generate_uuid(), ApiRequestLogCRUD (+461 more)
|
||||
|
||||
### Community 3 - "Community 3"
|
||||
Cohesion: 0.01
|
||||
Nodes (275): _normalize_date_bound(), _persist_protocol_sub_resources(), list_ethnics_for_select(), apply_data_scope(), _get_child_dept_ids(), get_user_dept_id(), _resolve_user_role_scopes(), format_date() (+267 more)
|
||||
Cohesion: 0.08
|
||||
Nodes (385): 环境检测 — 检测项维护 + 登记管理 API, 保险公司及险种价格管理 API(保险公司 + 开票信息 + 险种价格), AccessLogCreateBody, AccessLogUpdateBody, CleanRoomCreateBody, CleanRoomUpdateBody, ExhibitionAppointmentCreateBody, ExhibitionAppointmentUpdateBody (+377 more)
|
||||
|
||||
### Community 4 - "Community 4"
|
||||
Cohesion: 0.01
|
||||
Nodes (289): generate_uuid(), batch_stock_in(), batch_stock_out(), consumable_code_exists(), create_consumable(), _dec(), get_consumable(), _is_enabled_status() (+281 more)
|
||||
Nodes (333): _normalize_date_bound(), _persist_protocol_sub_resources(), batch_delete_research_donations(), change_donation_status(), convert_from_storage(), convert_to_storage(), create_research_donation(), delete_research_donation() (+325 more)
|
||||
|
||||
### Community 5 - "Community 5"
|
||||
Cohesion: 0.05
|
||||
Nodes (229): CellSampleTypeCreateBody, CellSampleTypeUpdateBody, CollectionRegionCreateBody, CollectionRegionUpdateBody, CustomerCreateBody, CustomerUpdateBody, HospitalCreateBody, HospitalUpdateBody (+221 more)
|
||||
Cohesion: 0.07
|
||||
Nodes (262): CellSampleTypeCreateBody, CellSampleTypeUpdateBody, CollectionRegionCreateBody, CollectionRegionUpdateBody, CustomerCreateBody, CustomerUpdateBody, HospitalCreateBody, HospitalUpdateBody (+254 more)
|
||||
|
||||
### Community 6 - "Community 6"
|
||||
Cohesion: 0.02
|
||||
Nodes (201): eq_unicode(), like_unicode(), MySQL 字符串比较/模糊匹配时统一排序规则,避免 Illegal mix of collations。, 跨表字符串等值比较(JOIN / WHERE)时统一为 utf8mb4_unicode_ci。, 将列显式设为 utf8mb4_unicode_ci。, unicode_ci(), batch_review(), _dec() (+193 more)
|
||||
Nodes (230): eq_unicode(), like_unicode(), MySQL 字符串比较/模糊匹配时统一排序规则,避免 Illegal mix of collations。, 跨表字符串等值比较(JOIN / WHERE)时统一为 utf8mb4_unicode_ci。, 将列显式设为 utf8mb4_unicode_ci。, unicode_ci(), build_void_type_label_map(), format_protocol_status_label() (+222 more)
|
||||
|
||||
### Community 7 - "Community 7"
|
||||
Cohesion: 0.12
|
||||
Nodes (193): BatchStockInBody, BatchStockInItem, BatchStockOutBody, BatchStockOutItem, ConsumableCreateBody, ConsumablePackCreateBody, ConsumablePackUpdateBody, ConsumableUpdateBody (+185 more)
|
||||
Cohesion: 0.02
|
||||
Nodes (199): _code_exists(), create_material(), _dec(), _fmt_dt(), get_material(), get_material_entity(), get_my_usages(), _is_enabled_status() (+191 more)
|
||||
|
||||
### Community 8 - "Community 8"
|
||||
Cohesion: 0.02
|
||||
Nodes (113): get_designer_data(), _error_json(), 数据库异常:返回 JSON 并保留 CORS 头,避免浏览器只报跨域错误, 未捕获异常:统一 JSON 500,确保跨域场景下仍有 Access-Control-Allow-Origin, sqlalchemy_exception_handler(), unhandled_exception_handler(), BaseHTTPMiddleware, ApiCryptoError (+105 more)
|
||||
Cohesion: 0.03
|
||||
Nodes (127): _jwt_user_payload(), Web 端登录用 RSA 公钥(PKCS#1 v1.5,与 JSEncrypt 一致), Web 端登录:账号为 sys_user.user_no,密码为 sys_user.password(bcrypt)。, refresh_token(), web_login(), web_login_rsa_public_key(), create_access_token(), create_refresh_token() (+119 more)
|
||||
|
||||
### Community 9 - "Community 9"
|
||||
Cohesion: 0.02
|
||||
Nodes (143): _jwt_user_payload(), logout(), Web 端登录用 RSA 公钥(PKCS#1 v1.5,与 JSEncrypt 一致), Web 端登录:账号为 sys_user.user_no,密码为 sys_user.password(bcrypt)。, 登出:吊销 Redis 会话(若已配置 REDIS_HOST)。, refresh_token(), web_login(), web_login_rsa_public_key() (+135 more)
|
||||
Cohesion: 0.03
|
||||
Nodes (128): get_next_cell_product_code(), _ancestor_link_from_cell_product_input(), _ancestor_sample_chain_link(), _apply_cell_product_status_change(), _build_ancestor_chain(), _build_descendant_chain(), _build_facility_path_label(), build_split_product_codes() (+120 more)
|
||||
|
||||
### Community 10 - "Community 10"
|
||||
Cohesion: 0.03
|
||||
Nodes (147): batch_discard(), batch_options(), _batch_row_to_dict(), batch_stock_in(), batch_stock_out(), _create_batch_and_usage(), delete_batch(), _discard_batch() (+139 more)
|
||||
Nodes (73): _error_json(), lifespan(), 数据库异常:返回 JSON 并保留 CORS 头,避免浏览器只报跨域错误, 未捕获异常:统一 JSON 500,确保跨域场景下仍有 Access-Control-Allow-Origin, sqlalchemy_exception_handler(), unhandled_exception_handler(), BaseHTTPMiddleware, ApiCryptoError (+65 more)
|
||||
|
||||
### Community 11 - "Community 11"
|
||||
Cohesion: 0.04
|
||||
Nodes (105): _body_to_payload(), _get_current_user_id(), get_production_reception_by_sample_code(), get_production_reception_detail(), _get_tenant_no(), post_production_reception(), put_production_reception(), _resolve_reception_id() (+97 more)
|
||||
Cohesion: 0.34
|
||||
Nodes (73): BatchStockInBody, BatchStockInItem, BatchStockOutBody, BatchStockOutItem, ConsumableCreateBody, ConsumablePackCreateBody, ConsumablePackUpdateBody, ConsumableUpdateBody (+65 more)
|
||||
|
||||
### Community 12 - "Community 12"
|
||||
Cohesion: 0.04
|
||||
Nodes (108): complete_application(), create_basic_experiment_sale_schedules(), create_infusion_plan(), create_schedule(), _create_schedule_products(), _format_yyyy_mm_dd(), _generate_application_no(), get_application() (+100 more)
|
||||
Cohesion: 0.06
|
||||
Nodes (62): complete_application(), create_basic_experiment_sale_schedules(), create_infusion_plan(), create_schedule(), _create_schedule_products(), _format_yyyy_mm_dd(), _generate_application_no(), get_application() (+54 more)
|
||||
|
||||
### Community 13 - "Community 13"
|
||||
Cohesion: 0.06
|
||||
Nodes (64): aggregate_slot_stats_by_facility(), _apply_slot_select_base_filters(), _apply_slot_select_query_filters(), batch_create_slots(), _build_node_path_cache(), _build_slot_keyword_sql_filters(), clear_slots_by_facility_node(), collect_descendant_ids() (+56 more)
|
||||
Cohesion: 0.07
|
||||
Nodes (58): aggregate_slot_stats_by_facility(), _apply_slot_select_base_filters(), _apply_slot_select_query_filters(), batch_create_slots(), _build_node_path_cache(), _build_slot_keyword_sql_filters(), collect_descendant_ids(), _collect_slot_host_node_ids() (+50 more)
|
||||
|
||||
### Community 14 - "Community 14"
|
||||
Cohesion: 0.07
|
||||
Nodes (57): get_next_cell_product_code(), _ancestor_link_from_cell_product_input(), _ancestor_sample_chain_link(), _apply_cell_product_status_change(), _build_ancestor_chain(), _build_descendant_chain(), _build_facility_path_label(), build_split_product_codes() (+49 more)
|
||||
|
||||
### Community 15 - "Community 15"
|
||||
Cohesion: 0.07
|
||||
Nodes (31): create_cell_sample_type(), get_cell_sample_type(), list_cell_sample_types(), 细胞样本类型 CRUD(biz_cell_sample_type), _row_to_dict(), soft_delete_cell_sample_type(), type_code_exists(), update_cell_sample_type() (+23 more)
|
||||
|
||||
### Community 16 - "Community 16"
|
||||
Cohesion: 0.11
|
||||
Nodes (35): batch_create_sterilize_logs(), batch_create_wash_logs(), batch_discard_garments(), batch_soft_delete_garments(), _count_map(), create_garment(), create_sterilize_log(), create_wash_log() (+27 more)
|
||||
|
||||
### Community 17 - "Community 17"
|
||||
### Community 15 - "Community 15"
|
||||
Cohesion: 0.12
|
||||
Nodes (10): get_wechat_pay_client(), get_wechat_pay_v2(), 微信支付工具模块 支持微信支付 V3 API 文档参考: https://pay.weixin.qq.com/docs/v3/apis/index.ht, 统一下单接口 (V3) Args: out_trade_no: 商户订单号 total, 小程序调起支付的二次签名参数(与公众号 JSAPI 规则一致), 统一下单 (V2 API) Args: out_trade_no: 商户订单号 tot, 生成签名 V3 (SHA256 with RSA), wechat_pay() (+2 more)
|
||||
|
||||
### Community 16 - "Community 16"
|
||||
Cohesion: 0.18
|
||||
Nodes (18): company_code_exists(), create_company(), get_company(), list_companies(), list_company_options(), _row_to_dict(), soft_delete_company(), update_company() (+10 more)
|
||||
|
||||
### Community 17 - "Community 17"
|
||||
Cohesion: 0.21
|
||||
Nodes (15): batch_generate_protocol_nos(), batch_issue_protocol_nos(), batch_revoke_protocol_nos(), create_protocol_no(), get_protocol_no(), list_protocol_nos(), _parse_issued_time(), protocol_no_exists() (+7 more)
|
||||
|
||||
### Community 18 - "Community 18"
|
||||
Cohesion: 0.15
|
||||
Nodes (20): _access_log_to_dict(), _calc_duration_minutes(), create_access_log(), create_clean_room(), create_uv_disinfect_log(), get_access_log(), get_clean_room(), get_uv_disinfect_log() (+12 more)
|
||||
Cohesion: 0.22
|
||||
Nodes (14): batch_generate_sample_codes(), batch_issue_sample_codes(), batch_revoke_sample_codes(), create_sample_code(), get_sample_code(), list_sample_codes(), _parse_issued_time(), 样本编码池 CRUD(biz_sample_code) (+6 more)
|
||||
|
||||
### Community 19 - "Community 19"
|
||||
Cohesion: 0.2
|
||||
Nodes (19): _code_exists(), create_material(), _dec(), _fmt_dt(), get_material(), get_material_entity(), get_my_usages(), _is_enabled_status() (+11 more)
|
||||
|
||||
### Community 20 - "Community 20"
|
||||
Cohesion: 0.22
|
||||
Nodes (13): create_collection_region(), create_hospital(), get_collection_region(), get_hospital(), _hospital_names_by_region_ids(), _hospital_to_dict(), list_collection_regions(), list_hospitals() (+5 more)
|
||||
|
||||
### Community 21 - "Community 21"
|
||||
Cohesion: 0.25
|
||||
Nodes (13): batch_issue_protocol_nos(), batch_revoke_protocol_nos(), create_protocol_no(), get_protocol_no(), list_protocol_nos(), _parse_issued_time(), protocol_no_exists(), 采集协议号池 CRUD(biz_collection_protocol_no) (+5 more)
|
||||
|
||||
### Community 22 - "Community 22"
|
||||
Cohesion: 0.26
|
||||
Nodes (12): batch_issue_sample_codes(), batch_revoke_sample_codes(), create_sample_code(), get_sample_code(), list_sample_codes(), _parse_issued_time(), 样本编码池 CRUD(biz_sample_code), _resolve_issued_user_display_name() (+4 more)
|
||||
|
||||
### Community 23 - "Community 23"
|
||||
### Community 20 - "Community 20"
|
||||
Cohesion: 0.27
|
||||
Nodes (12): create_equipment(), _dec(), equipment_code_exists(), equipment_is_referenced(), get_equipment(), list_equipments(), _norm_status(), _parse_date() (+4 more)
|
||||
|
||||
### Community 24 - "Community 24"
|
||||
### Community 21 - "Community 21"
|
||||
Cohesion: 0.24
|
||||
Nodes (9): 微信消息通知服务 支持微信小程序模板消息推送 使用方式: from app.core.wechat_message import Wech, 发送模板消息 Args: openid: 用户openid templ, send_delivery_notice(), send_delivery_warning(), send_order_status(), send_payment_success(), send_refund_result(), send_urge_notification() (+1 more)
|
||||
|
||||
### Community 25 - "Community 25"
|
||||
Cohesion: 0.27
|
||||
Nodes (11): create_consumable_pack(), get_consumable_pack(), get_pack_detail(), _item_row_to_dict(), list_all_packs(), list_consumable_packs(), pack_code_exists(), 耗材包 CRUD(biz_consumable_pack + biz_consumable_pack_item) (+3 more)
|
||||
|
||||
### Community 26 - "Community 26"
|
||||
### Community 22 - "Community 22"
|
||||
Cohesion: 0.24
|
||||
Nodes (12): appointment_no_exists(), create_exhibition_appointment(), _format_visit_date(), _generate_appointment_no(), get_exhibition_appointment(), list_exhibition_appointments(), 展览预约 CRUD(biz_exhibition_appointment), 生成预约编号:YYYYMMDD + 6位序号(如 20260515000001) (+4 more)
|
||||
|
||||
### Community 27 - "Community 27"
|
||||
### Community 23 - "Community 23"
|
||||
Cohesion: 0.24
|
||||
Nodes (11): deduct_for_step(), _display_remark(), list_stock_logs(), _parse_receiver_purpose_from_remark(), 试剂变动记录 CRUD(biz_reagent_stock_log), 撤销步骤此前 step_save 扣减,便于重新填报。, 扣减试剂库存并生成变动记录。调用方控制事务,本函数不 commit。, _resolve_receiver_purpose() (+3 more)
|
||||
|
||||
### Community 28 - "Community 28"
|
||||
Cohesion: 0.23
|
||||
Nodes (10): create_dict_data(), get_dict_data(), is_dict_value_valid(), list_dict_data(), list_dict_data_options(), normalize_transfer_type(), 字典数据 CRUD(sys_dict_data), _row_to_dict() (+2 more)
|
||||
|
||||
### Community 29 - "Community 29"
|
||||
Cohesion: 0.24
|
||||
Nodes (11): deduct_for_step(), _display_remark(), list_stock_logs(), _parse_receiver_purpose_from_remark(), 耗材变动记录 CRUD(biz_consumable_stock_log), 撤销步骤此前 step_save 扣减,便于重新填报。, 扣减耗材库存并生成变动记录。调用方控制事务,本函数不 commit。, _resolve_receiver_purpose() (+3 more)
|
||||
|
||||
### Community 30 - "Community 30"
|
||||
Cohesion: 0.27
|
||||
Nodes (11): _build_tree(), _cascade_soft_delete(), _collect_with_ancestors(), create_dept(), get_dept(), list_depts(), list_depts_tree(), 保留匹配节点及其全部上级,供关键词检索后仍能正确组树。 (+3 more)
|
||||
|
||||
### Community 31 - "Community 31"
|
||||
### Community 24 - "Community 24"
|
||||
Cohesion: 0.32
|
||||
Nodes (11): create_env_detect_record(), _generate_record_no(), get_env_detect_record(), _join_csv(), list_env_detect_records(), _resolve_inspector_snapshots(), _resolve_item_snapshot(), _row_to_dict() (+3 more)
|
||||
|
||||
### Community 32 - "Community 32"
|
||||
### Community 25 - "Community 25"
|
||||
Cohesion: 0.24
|
||||
Nodes (11): deduct_for_step(), _display_remark(), list_stock_logs(), _parse_receiver_purpose_from_remark(), 耗材变动记录 CRUD(biz_consumable_stock_log), 撤销步骤此前 step_save 扣减,便于重新填报。, 扣减耗材库存并生成变动记录。调用方控制事务,本函数不 commit。, _resolve_receiver_purpose() (+3 more)
|
||||
|
||||
### Community 26 - "Community 26"
|
||||
Cohesion: 0.27
|
||||
Nodes (11): _build_tree(), _cascade_soft_delete(), _collect_with_ancestors(), create_dept(), get_dept(), list_depts(), list_depts_tree(), 保留匹配节点及其全部上级,供关键词检索后仍能正确组树。 (+3 more)
|
||||
|
||||
### Community 27 - "Community 27"
|
||||
Cohesion: 0.29
|
||||
Nodes (9): _build_tree(), _cascade_soft_delete(), create_menu(), get_menu(), list_menus(), list_menus_tree(), _row_to_dict(), soft_delete_menu() (+1 more)
|
||||
|
||||
### Community 33 - "Community 33"
|
||||
### Community 28 - "Community 28"
|
||||
Cohesion: 0.27
|
||||
Nodes (8): create_customer(), get_customer(), id_card_taken(), list_customers(), 客户 CRUD(biz_customer), _row_to_dict(), soft_delete_customer(), update_customer()
|
||||
|
||||
### Community 29 - "Community 29"
|
||||
Cohesion: 0.38
|
||||
Nodes (9): create_check_item(), get_check_item(), item_code_exists(), list_active_check_items(), list_check_items(), _order_query(), _row_to_dict(), soft_delete_check_item() (+1 more)
|
||||
|
||||
### Community 34 - "Community 34"
|
||||
### Community 30 - "Community 30"
|
||||
Cohesion: 0.38
|
||||
Nodes (9): create_env_detect_item(), get_env_detect_item(), item_code_exists(), list_active_env_detect_items(), list_env_detect_items(), _order_query(), _row_to_dict(), soft_delete_env_detect_item() (+1 more)
|
||||
|
||||
### Community 35 - "Community 35"
|
||||
### Community 31 - "Community 31"
|
||||
Cohesion: 0.31
|
||||
Nodes (8): create_item_unit(), get_item_unit(), list_item_units(), 物品单位 CRUD(biz_item_unit), _row_to_dict(), soft_delete_item_unit(), unit_code_exists(), update_item_unit()
|
||||
|
||||
### Community 36 - "Community 36"
|
||||
Cohesion: 0.31
|
||||
Nodes (8): create_output_type(), get_output_type(), list_output_types(), 工艺产出物类型 CRUD(biz_output_type), _row_to_dict(), soft_delete_output_type(), type_code_exists(), update_output_type()
|
||||
|
||||
### Community 37 - "Community 37"
|
||||
Cohesion: 0.36
|
||||
Nodes (7): create_tenant(), get_tenant(), list_tenants(), _row_to_dict(), soft_delete_tenant(), tenant_no_exists(), update_tenant()
|
||||
|
||||
### Community 38 - "Community 38"
|
||||
Cohesion: 0.36
|
||||
Nodes (7): create_site(), get_site(), list_sites(), _row_to_dict(), site_code_exists(), soft_delete_site(), update_site()
|
||||
|
||||
### Community 39 - "Community 39"
|
||||
### Community 32 - "Community 32"
|
||||
Cohesion: 0.29
|
||||
Nodes (2): BaseModel, SoftDeleteModel
|
||||
|
||||
### Community 40 - "Community 40"
|
||||
### Community 33 - "Community 33"
|
||||
Cohesion: 0.38
|
||||
Nodes (6): derive_legacy_status_from_three(), derive_three_status_from_legacy(), 阶段A兼容:从旧 status 推导三字段。 约束:旧 status 本身混合了支付/配送/订单生命周期,因此只能尽力推断; 若业务侧已有更精确, 阶段A兼容:从三字段反推旧 status(用于旧前端/旧筛选参数兼容)。, ThreeStatus, _to_decimal()
|
||||
|
||||
### Community 41 - "Community 41"
|
||||
### Community 34 - "Community 34"
|
||||
Cohesion: 0.5
|
||||
Nodes (3): BaseSettings, Config, Settings
|
||||
|
||||
### Community 42 - "Community 42"
|
||||
### Community 35 - "Community 35"
|
||||
Cohesion: 0.5
|
||||
Nodes (2): _auto_fill_create_dept_id(), ORM before_insert 钩子:当 create_dept_id 为空时,自动从请求上下文填充当前用户部门 ID
|
||||
|
||||
### Community 43 - "Community 43"
|
||||
### Community 36 - "Community 36"
|
||||
Cohesion: 0.67
|
||||
Nodes (2): get_menu_list(), 运营端菜单接口(与 web-admin 前端静态路由 sqxp.ts 对齐,5 个一级菜单分组)
|
||||
|
||||
### Community 44 - "Community 44"
|
||||
### Community 37 - "Community 37"
|
||||
Cohesion: 1.0
|
||||
Nodes (1): 请求级别的用户上下文变量 通过 contextvars 在请求处理链路中传递当前用户信息, 供 SQLAlchemy 事件监听器等底层机制使用,避免逐层手动传
|
||||
|
||||
### Community 45 - "Community 45"
|
||||
### Community 38 - "Community 38"
|
||||
Cohesion: 1.0
|
||||
Nodes (1): API 路由包(骨架:公共鉴权 + 静态菜单 + 运营端占位)
|
||||
|
||||
### Community 48 - "Community 48"
|
||||
### Community 41 - "Community 41"
|
||||
Cohesion: 1.0
|
||||
Nodes (1): 发送订单状态通知 Args: openid: 用户openid ord
|
||||
|
||||
### Community 49 - "Community 49"
|
||||
### Community 42 - "Community 42"
|
||||
Cohesion: 1.0
|
||||
Nodes (1): 发送支付成功通知 Args: openid: 用户openid ord
|
||||
|
||||
### Community 50 - "Community 50"
|
||||
### Community 43 - "Community 43"
|
||||
Cohesion: 1.0
|
||||
Nodes (1): 发送配送通知 Args: openid: 配送员openid task
|
||||
|
||||
### Community 51 - "Community 51"
|
||||
### Community 44 - "Community 44"
|
||||
Cohesion: 1.0
|
||||
Nodes (1): 发送配送时效预警 Args: openid: 配送员openid ta
|
||||
|
||||
### Community 52 - "Community 52"
|
||||
### Community 45 - "Community 45"
|
||||
Cohesion: 1.0
|
||||
Nodes (1): 发送退款结果通知 Args: openid: 用户openid ord
|
||||
|
||||
### Community 53 - "Community 53"
|
||||
### Community 46 - "Community 46"
|
||||
Cohesion: 1.0
|
||||
Nodes (1): 发送催单通知给配送员 Args: deliver_openid: 配送员openid
|
||||
|
||||
## Knowledge Gaps
|
||||
- **132 isolated node(s):** `刷新会话 TTL(refreshToken 续期;已登录用户每次 API 校验通过后滑动续期)`, `写入 refreshToken(用于 one-time 使用/吊销)`, `根据 token 获取当前用户(包含 Redis 会话校验;会话滑动续期)`, `登录凭据 RSA 解密(与前端 JSEncrypt PKCS#1 v1.5 兼容)。`, `加载 RSA 密钥对:优先环境变量,否则使用内置固定默认密钥。` (+127 more)
|
||||
- **130 isolated node(s):** `刷新会话 TTL(refreshToken 续期;已登录用户每次 API 校验通过后滑动续期)`, `写入 refreshToken(用于 one-time 使用/吊销)`, `根据 token 获取当前用户(包含 Redis 会话校验;会话滑动续期)`, `登录凭据 RSA 解密(与前端 JSEncrypt PKCS#1 v1.5 兼容)。`, `加载 RSA 密钥对:优先环境变量,否则使用内置固定默认密钥。` (+125 more)
|
||||
These have ≤1 connection - possible missing edges or undocumented components.
|
||||
- **Thin community `Community 39`** (8 nodes): `BaseModel`, `.to_dict()`, `get_active()`, `base.py`, `SoftDeleteModel`, `.restore()`, `.soft_delete()`, `__tablename__()`
|
||||
- **Thin community `Community 32`** (8 nodes): `BaseModel`, `.to_dict()`, `get_active()`, `base.py`, `SoftDeleteModel`, `.restore()`, `.soft_delete()`, `__tablename__()`
|
||||
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
||||
- **Thin community `Community 42`** (4 nodes): `_auto_fill_create_dept_id()`, `get_db()`, `database.py`, `ORM before_insert 钩子:当 create_dept_id 为空时,自动从请求上下文填充当前用户部门 ID`
|
||||
- **Thin community `Community 35`** (4 nodes): `_auto_fill_create_dept_id()`, `get_db()`, `database.py`, `ORM before_insert 钩子:当 create_dept_id 为空时,自动从请求上下文填充当前用户部门 ID`
|
||||
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
||||
- **Thin community `Community 43`** (3 nodes): `get_menu_list()`, `menu.py`, `运营端菜单接口(与 web-admin 前端静态路由 sqxp.ts 对齐,5 个一级菜单分组)`
|
||||
- **Thin community `Community 36`** (3 nodes): `get_menu_list()`, `menu.py`, `运营端菜单接口(与 web-admin 前端静态路由 sqxp.ts 对齐,5 个一级菜单分组)`
|
||||
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
||||
- **Thin community `Community 44`** (2 nodes): `context.py`, `请求级别的用户上下文变量 通过 contextvars 在请求处理链路中传递当前用户信息, 供 SQLAlchemy 事件监听器等底层机制使用,避免逐层手动传`
|
||||
- **Thin community `Community 37`** (2 nodes): `context.py`, `请求级别的用户上下文变量 通过 contextvars 在请求处理链路中传递当前用户信息, 供 SQLAlchemy 事件监听器等底层机制使用,避免逐层手动传`
|
||||
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
||||
- **Thin community `Community 45`** (2 nodes): `__init__.py`, `API 路由包(骨架:公共鉴权 + 静态菜单 + 运营端占位)`
|
||||
- **Thin community `Community 38`** (2 nodes): `__init__.py`, `API 路由包(骨架:公共鉴权 + 静态菜单 + 运营端占位)`
|
||||
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
||||
- **Thin community `Community 48`** (1 nodes): `发送订单状态通知 Args: openid: 用户openid ord`
|
||||
- **Thin community `Community 41`** (1 nodes): `发送订单状态通知 Args: openid: 用户openid ord`
|
||||
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
||||
- **Thin community `Community 49`** (1 nodes): `发送支付成功通知 Args: openid: 用户openid ord`
|
||||
- **Thin community `Community 42`** (1 nodes): `发送支付成功通知 Args: openid: 用户openid ord`
|
||||
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
||||
- **Thin community `Community 50`** (1 nodes): `发送配送通知 Args: openid: 配送员openid task`
|
||||
- **Thin community `Community 43`** (1 nodes): `发送配送通知 Args: openid: 配送员openid task`
|
||||
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
||||
- **Thin community `Community 51`** (1 nodes): `发送配送时效预警 Args: openid: 配送员openid ta`
|
||||
- **Thin community `Community 44`** (1 nodes): `发送配送时效预警 Args: openid: 配送员openid ta`
|
||||
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
||||
- **Thin community `Community 52`** (1 nodes): `发送退款结果通知 Args: openid: 用户openid ord`
|
||||
- **Thin community `Community 45`** (1 nodes): `发送退款结果通知 Args: openid: 用户openid ord`
|
||||
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
||||
- **Thin community `Community 53`** (1 nodes): `发送催单通知给配送员 Args: deliver_openid: 配送员openid`
|
||||
- **Thin community `Community 46`** (1 nodes): `发送催单通知给配送员 Args: deliver_openid: 配送员openid`
|
||||
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
||||
|
||||
## Suggested Questions
|
||||
_Questions this graph is uniquely positioned to answer:_
|
||||
|
||||
- **Why does `SysUser` connect `Community 1` to `Community 2`, `Community 3`, `Community 5`, `Community 6`, `Community 7`, `Community 9`, `Community 10`, `Community 21`, `Community 22`, `Community 27`, `Community 29`?**
|
||||
_High betweenness centrality (0.121) - this node is a cross-community bridge._
|
||||
- **Why does `generate_uuid()` connect `Community 4` to `Community 0`, `Community 3`, `Community 5`, `Community 6`, `Community 7`, `Community 8`, `Community 9`, `Community 10`, `Community 11`, `Community 12`, `Community 13`, `Community 14`, `Community 15`, `Community 16`, `Community 18`, `Community 19`, `Community 20`, `Community 21`, `Community 22`, `Community 23`, `Community 25`, `Community 26`, `Community 27`, `Community 28`, `Community 29`, `Community 30`, `Community 31`, `Community 32`, `Community 33`, `Community 34`, `Community 35`, `Community 36`, `Community 37`, `Community 38`?**
|
||||
_High betweenness centrality (0.060) - this node is a cross-community bridge._
|
||||
- **Why does `success_response()` connect `Community 0` to `Community 1`, `Community 3`, `Community 5`, `Community 8`, `Community 9`, `Community 11`, `Community 43`, `Community 14`?**
|
||||
_High betweenness centrality (0.057) - this node is a cross-community bridge._
|
||||
- **Are the 729 inferred relationships involving `str` (e.g. with `unhandled_exception_handler()` and `get_current_user_by_token()`) actually correct?**
|
||||
_`str` has 729 INFERRED edges - model-reasoned connections that need verification._
|
||||
- **Are the 667 inferred relationships involving `success_response()` (e.g. with `list_storage_release_reviews()` and `get_storage_release_review_detail()`) actually correct?**
|
||||
_`success_response()` has 667 INFERRED edges - model-reasoned connections that need verification._
|
||||
- **Are the 551 inferred relationships involving `error_response()` (e.g. with `_json_error_response()` and `list_storage_release_reviews()`) actually correct?**
|
||||
_`error_response()` has 551 INFERRED edges - model-reasoned connections that need verification._
|
||||
- **Are the 478 inferred relationships involving `SysUser` (e.g. with `数据权限过滤(V0.3:基于角色 data_scope 的查询级行级过滤) data_scope 值: 1 = 全部数据 2 = 本部门数据 3` and `从 SysUser 读取用户的 dept_id。`) actually correct?**
|
||||
_`SysUser` has 478 INFERRED edges - model-reasoned connections that need verification._
|
||||
- **Why does `SysUser` connect `Community 1` to `Community 2`, `Community 3`, `Community 4`, `Community 5`, `Community 7`, `Community 8`, `Community 11`, `Community 17`, `Community 18`, `Community 23`, `Community 25`?**
|
||||
_High betweenness centrality (0.108) - this node is a cross-community bridge._
|
||||
- **Why does `generate_uuid()` connect `Community 2` to `Community 0`, `Community 3`, `Community 4`, `Community 5`, `Community 6`, `Community 7`, `Community 8`, `Community 9`, `Community 13`, `Community 14`, `Community 16`, `Community 17`, `Community 18`, `Community 19`, `Community 20`, `Community 22`, `Community 23`, `Community 24`, `Community 25`, `Community 26`, `Community 27`, `Community 28`, `Community 29`, `Community 30`, `Community 31`?**
|
||||
_High betweenness centrality (0.059) - this node is a cross-community bridge._
|
||||
- **Why does `success_response()` connect `Community 0` to `Community 1`, `Community 2`, `Community 36`, `Community 4`, `Community 8`, `Community 9`?**
|
||||
_High betweenness centrality (0.047) - this node is a cross-community bridge._
|
||||
- **Are the 737 inferred relationships involving `str` (e.g. with `unhandled_exception_handler()` and `get_current_user_by_token()`) actually correct?**
|
||||
_`str` has 737 INFERRED edges - model-reasoned connections that need verification._
|
||||
- **Are the 669 inferred relationships involving `success_response()` (e.g. with `list_storage_release_reviews()` and `get_storage_release_review_detail()`) actually correct?**
|
||||
_`success_response()` has 669 INFERRED edges - model-reasoned connections that need verification._
|
||||
- **Are the 553 inferred relationships involving `error_response()` (e.g. with `_json_error_response()` and `list_storage_release_reviews()`) actually correct?**
|
||||
_`error_response()` has 553 INFERRED edges - model-reasoned connections that need verification._
|
||||
- **Are the 498 inferred relationships involving `SysUser` (e.g. with `数据权限过滤(V0.3:基于角色 data_scope 的查询级行级过滤) data_scope 值: 1 = 全部数据 2 = 本部门数据 3` and `从 SysUser 读取用户的 dept_id。`) actually correct?**
|
||||
_`SysUser` has 498 INFERRED edges - model-reasoned connections that need verification._
|
||||
@@ -57,12 +57,12 @@
|
||||
</div>
|
||||
<div id="legend"></div>
|
||||
</div>
|
||||
<div id="stats">4447 nodes · 23842 edges · 58 communities</div>
|
||||
<div id="stats">4481 nodes · 24087 edges · 51 communities</div>
|
||||
</div>
|
||||
<script>
|
||||
const RAW_NODES = [{"id": "init_py", "label": "__init__.py", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "__init__.py", "community": 46, "community_name": "Community 46", "source_file": "__init__.py", "file_type": "code", "degree": 0}, {"id": "main_py", "label": "main.py", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 10.3, "font": {"size": 0, "color": "#ffffff"}, "title": "main.py", "community": 8, "community_name": "Community 8", "source_file": "main.py", "file_type": "code", "degree": 7}, {"id": "app_main_lifespan", "label": "lifespan()", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "lifespan()", "community": 9, "community_name": "Community 9", "source_file": "main.py", "file_type": "code", "degree": 4}, {"id": "app_main_error_json", "label": "_error_json()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 10.1, "font": {"size": 0, "color": "#ffffff"}, "title": "_error_json()", "community": 8, "community_name": "Community 8", "source_file": "main.py", "file_type": "code", "degree": 3}, {"id": "app_main_sqlalchemy_exception_handler", "label": "sqlalchemy_exception_handler()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "sqlalchemy_exception_handler()", "community": 8, "community_name": "Community 8", "source_file": "main.py", "file_type": "code", "degree": 4}, {"id": "app_main_unhandled_exception_handler", "label": "unhandled_exception_handler()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "unhandled_exception_handler()", "community": 8, "community_name": "Community 8", "source_file": "main.py", "file_type": "code", "degree": 5}, {"id": "app_main_mask_secret", "label": "_mask_secret()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "_mask_secret()", "community": 8, "community_name": "Community 8", "source_file": "main.py", "file_type": "code", "degree": 1}, {"id": "app_main_root", "label": "root()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "root()", "community": 8, "community_name": "Community 8", "source_file": "main.py", "file_type": "code", "degree": 1}, {"id": "app_main_health_check", "label": "health_check()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "health_check()", "community": 8, "community_name": "Community 8", "source_file": "main.py", "file_type": "code", "degree": 1}, {"id": "app_main_rationale_81", "label": "\u6570\u636e\u5e93\u5f02\u5e38\uff1a\u8fd4\u56de JSON \u5e76\u4fdd\u7559 CORS \u5934\uff0c\u907f\u514d\u6d4f\u89c8\u5668\u53ea\u62a5\u8de8\u57df\u9519\u8bef", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 10.1, "font": {"size": 0, "color": "#ffffff"}, "title": "\u6570\u636e\u5e93\u5f02\u5e38\uff1a\u8fd4\u56de JSON \u5e76\u4fdd\u7559 CORS \u5934\uff0c\u907f\u514d\u6d4f\u89c8\u5668\u53ea\u62a5\u8de8\u57df\u9519\u8bef", "community": 8, "community_name": "Community 8", "source_file": "main.py", "file_type": "rationale", "degree": 3}, {"id": "app_main_rationale_92", "label": "\u672a\u6355\u83b7\u5f02\u5e38\uff1a\u7edf\u4e00 JSON 500\uff0c\u786e\u4fdd\u8de8\u57df\u573a\u666f\u4e0b\u4ecd\u6709 Access-Control-Allow-Origin", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 10.1, "font": {"size": 0, "color": "#ffffff"}, "title": "\u672a\u6355\u83b7\u5f02\u5e38\uff1a\u7edf\u4e00 JSON 500\uff0c\u786e\u4fdd\u8de8\u57df\u573a\u666f\u4e0b\u4ecd\u6709 Access-Control-Allow-Origin", "community": 8, "community_name": "Community 8", "source_file": "main.py", "file_type": "rationale", "degree": 3}, {"id": "tasks_init_py", "label": "__init__.py", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 10.1, "font": {"size": 0, "color": "#ffffff"}, "title": "__init__.py", "community": 9, "community_name": "Community 9", "source_file": "tasks/__init__.py", "file_type": "code", "degLine truncated
|
||||
const RAW_EDGES = [{"from": "main_py", "to": "app_main_lifespan", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "main_py", "to": "app_main_error_json", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "main_py", "to": "app_main_sqlalchemy_exception_handler", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "main_py", "to": "app_main_unhandled_exception_handler", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "main_py", "to": "app_main_mask_secret", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "main_py", "to": "app_main_root", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "main_py", "to": "app_main_health_check", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "app_main_lifespan", "to": "core_login_crypto_ensure_initialized", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "app_main_lifespan", "to": "tasks_init_init_scheduled_tasks", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "app_main_lifespan", "to": "tasks_init_shutdown_scheduler", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "app_main_error_json", "to": "app_main_sqlalchemy_exception_handler", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "app_main_error_json", "to": "app_main_unhandled_exception_handler", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "app_main_sqlalchemy_exception_handler", "to": "app_main_rationale_81", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "app_main_sqlalchemy_exception_handler", "to": "exception", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "app_main_unhandled_exception_handler", "to": "app_main_rationale_92", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "app_main_unhandled_exception_handler", "to": "exception", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "app_main_unhandled_exception_handler", "to": "str", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "app_main_rationale_81", "to": "core_api_request_log_middleware_apirequestlogmiddleware", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "app_main_rationale_81", "to": "core_api_crypto_middleware_apicryptomiddleware", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "app_main_rationale_92", "to": "core_api_request_log_middleware_apirequestlogmiddleware", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "app_main_rationale_92", "to": "core_api_crypto_middleware_apicryptomiddleware", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "tasks_init_py", "to": "tasks_init_init_scheduled_tasks", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tasks_init_py", "to": "tasks_init_shutdown_scheduler", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "core_auth_py", "to": "core_auth_redis_session_enabled", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "core_auth_py", "to": "core_auth_get_redis_client", "labeLine truncated
|
||||
const LEGEND = [{"cid": 0, "color": "#4E79A7", "label": "Community 0", "count": 917}, {"cid": 1, "color": "#F28E2B", "label": "Community 1", "count": 614}, {"cid": 2, "color": "#E15759", "label": "Community 2", "count": 360}, {"cid": 3, "color": "#76B7B2", "label": "Community 3", "count": 315}, {"cid": 4, "color": "#59A14F", "label": "Community 4", "count": 314}, {"cid": 5, "color": "#EDC948", "label": "Community 5", "count": 238}, {"cid": 6, "color": "#B07AA1", "label": "Community 6", "count": 214}, {"cid": 7, "color": "#FF9DA7", "label": "Community 7", "count": 196}, {"cid": 8, "color": "#9C755F", "label": "Community 8", "count": 182}, {"cid": 9, "color": "#BAB0AC", "label": "Community 9", "count": 166}, {"cid": 10, "color": "#4E79A7", "label": "Community 10", "count": 157}, {"cid": 11, "color": "#F28E2B", "label": "Community 11", "count": 118}, {"cid": 12, "color": "#E15759", "label": "Community 12", "count": 114}, {"cid": 13, "color": "#76B7B2", "label": "Community 13", "count": 66}, {"cid": 14, "color": "#59A14F", "label": "Community 14", "count": 60}, {"cid": 15, "color": "#EDC948", "label": "Community 15", "count": 39}, {"cid": 16, "color": "#B07AA1", "label": "Community 16", "count": 38}, {"cid": 17, "color": "#FF9DA7", "label": "Community 17", "count": 29}, {"cid": 18, "color": "#9C755F", "label": "Community 18", "count": 22}, {"cid": 19, "color": "#BAB0AC", "label": "Community 19", "count": 20}, {"cid": 20, "color": "#4E79A7", "label": "Community 20", "count": 15}, {"cid": 21, "color": "#F28E2B", "label": "Community 21", "count": 15}, {"cid": 22, "color": "#E15759", "label": "Community 22", "count": 14}, {"cid": 23, "color": "#76B7B2", "label": "Community 23", "count": 14}, {"cid": 24, "color": "#59A14F", "label": "Community 24", "count": 13}, {"cid": 25, "color": "#EDC948", "label": "Community 25", "count": 13}, {"cid": 26, "color": "#B07AA1", "label": "Community 26", "count": 13}, {"cid": 27, "color": "#FF9DA7", "label": "Community 27", "count": 12}, {"cid": 28, "color": "#9C755F", "label": "Community 28", "count": 12}, {"cid": 29, "color": "#BAB0AC", "label": "Community 29", "count": 12}, {"cid": 30, "color": "#4E79A7", "label": "Community 30", "count": 12}, {"cid": 31, "color": "#F28E2B", "label": "Community 31", "count": 12}, {"cid": 32, "color": "#E15759", "label": "Community 32", "count": 11}, {"cid": 33, "color": "#76B7B2", "label": "Community 33", "count": 10}, {"cid": 34, "color": "#59A14F", "label": "Community 34", "count": 10}, {"cid": 35, "color": "#EDC948", "label": "Community 35", "count": 10}, {"cid": 36, "color": "#B07AA1", "label": "Community 36", "count": 10}, {"cid": 37, "color": "#FF9DA7", "label": "Community 37", "count": 9}, {"cid": 38, "color": "#9C755F", "label": "Community 38", "count": 9}, {"cid": 39, "color": "#BAB0AC", "label": "Community 39", "count": 8}, {"cid": 40, "color": "#4E79A7", "label": "Community 40", "count": 7}, {"cid": 41, "color": "#F28E2B", "label": "Community 41", "count": 4}, {"cid": 42, "color": "#E15759", "label": "Community 42", "count": 4}, {"cid": 43, "color": "#76B7B2", "label": "Community 43", "count": 3}, {"cid": 44, "color": "#59A14F", "label": "Community 44", "count": 2}, {"cid": 45, "color": "#EDC948", "label": "Community 45", "count": 2}, {"cid": 46, "color": "#B07AA1", "label": "Community 46", "count": 1}, {"cid": 47, "color": "#FF9DA7", "label": "Community 47", "count": 1}, {"cid": 48, "color": "#9C755F", "label": "Community 48", "count": 1}, {"cid": 49, "color": "#BAB0AC", "label": "Community 49", "count": 1}, {"cid": 50, "color": "#4E79A7", "label": "Community 50", "count": 1}, {"cid": 51, "color": "#F28E2B", "label": "Community 51", "count": 1}, {"cid": 52, "color": "#E15759", "label": "Community 52", "count": 1}, {"cid": 53, "color": "#76B7B2", "label": "Community 53", "count": 1}, {"cid": 54, "color": "#59A14F", "label": "Community 54", "count": 1}, {"cid": 55, "color": "#EDC948", "label": "Community 55", "count": 1}, {"cid": 56, "color": "#B07AA1", "label": "Community 56", "count": 1}, {"cid": 57, "color": "#FF9DA7", "label": "Community 57", "count": 1}, {"cid": 58, "color": "#9C755F", "label": "Community 58", "count": 0}];
|
||||
const RAW_NODES = [{"id": "init_py", "label": "__init__.py", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "__init__.py", "community": 39, "community_name": "Community 39", "source_file": "__init__.py", "file_type": "code", "degree": 0}, {"id": "main_py", "label": "main.py", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.3, "font": {"size": 0, "color": "#ffffff"}, "title": "main.py", "community": 10, "community_name": "Community 10", "source_file": "main.py", "file_type": "code", "degree": 7}, {"id": "app_main_lifespan", "label": "lifespan()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "lifespan()", "community": 10, "community_name": "Community 10", "source_file": "main.py", "file_type": "code", "degree": 4}, {"id": "app_main_error_json", "label": "_error_json()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.1, "font": {"size": 0, "color": "#ffffff"}, "title": "_error_json()", "community": 10, "community_name": "Community 10", "source_file": "main.py", "file_type": "code", "degree": 3}, {"id": "app_main_sqlalchemy_exception_handler", "label": "sqlalchemy_exception_handler()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "sqlalchemy_exception_handler()", "community": 10, "community_name": "Community 10", "source_file": "main.py", "file_type": "code", "degree": 4}, {"id": "app_main_unhandled_exception_handler", "label": "unhandled_exception_handler()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "unhandled_exception_handler()", "community": 10, "community_name": "Community 10", "source_file": "main.py", "file_type": "code", "degree": 5}, {"id": "app_main_mask_secret", "label": "_mask_secret()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "_mask_secret()", "community": 10, "community_name": "Community 10", "source_file": "main.py", "file_type": "code", "degree": 1}, {"id": "app_main_root", "label": "root()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "root()", "community": 10, "community_name": "Community 10", "source_file": "main.py", "file_type": "code", "degree": 1}, {"id": "app_main_health_check", "label": "health_check()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "health_check()", "community": 10, "community_name": "Community 10", "source_file": "main.py", "file_type": "code", "degree": 1}, {"id": "app_main_rationale_81", "label": "\u6570\u636e\u5e93\u5f02\u5e38\uff1a\u8fd4\u56de JSON \u5e76\u4fdd\u7559 CORS \u5934\uff0c\u907f\u514d\u6d4f\u89c8\u5668\u53ea\u62a5\u8de8\u57df\u9519\u8bef", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.1, "font": {"size": 0, "color": "#ffffff"}, "title": "\u6570\u636e\u5e93\u5f02\u5e38\uff1a\u8fd4\u56de JSON \u5e76\u4fdd\u7559 CORS \u5934\uff0c\u907f\u514d\u6d4f\u89c8\u5668\u53ea\u62a5\u8de8\u57df\u9519\u8bef", "community": 10, "community_name": "Community 10", "source_file": "main.py", "file_type": "rationale", "degree": 3}, {"id": "app_main_rationale_92", "label": "\u672a\u6355\u83b7\u5f02\u5e38\uff1a\u7edf\u4e00 JSON 500\uff0c\u786e\u4fdd\u8de8\u57df\u573a\u666f\u4e0b\u4ecd\u6709 Access-Control-Allow-Origin", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.1, "font": {"size": 0, "color": "#ffffff"}, "title": "\u672a\u6355\u83b7\u5f02\u5e38\uff1a\u7edf\u4e00 JSON 500\uff0c\u786e\u4fdd\u8de8\u57df\u573a\u666f\u4e0b\u4ecd\u6709 Access-Control-Allow-Origin", "community": 10, "community_name": "Community 10", "source_file": "main.py", "file_type": "rationale", "degree": 3}, {"id": "tasks_init_py", "label": "__init__.py", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.1, "font": {"size": 0, "color": "#ffffff"}, "title": "__init__.py", "community": 10, "community_name": "Community 10", "source_file": "tasks/__init__.py", "fiLine truncated
|
||||
const RAW_EDGES = [{"from": "main_py", "to": "app_main_lifespan", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "main_py", "to": "app_main_error_json", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "main_py", "to": "app_main_sqlalchemy_exception_handler", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "main_py", "to": "app_main_unhandled_exception_handler", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "main_py", "to": "app_main_mask_secret", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "main_py", "to": "app_main_root", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "main_py", "to": "app_main_health_check", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "app_main_lifespan", "to": "core_login_crypto_ensure_initialized", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "app_main_lifespan", "to": "tasks_init_init_scheduled_tasks", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "app_main_lifespan", "to": "tasks_init_shutdown_scheduler", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "app_main_error_json", "to": "app_main_sqlalchemy_exception_handler", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "app_main_error_json", "to": "app_main_unhandled_exception_handler", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "app_main_sqlalchemy_exception_handler", "to": "app_main_rationale_81", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "app_main_sqlalchemy_exception_handler", "to": "exception", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "app_main_unhandled_exception_handler", "to": "app_main_rationale_92", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "app_main_unhandled_exception_handler", "to": "exception", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "app_main_unhandled_exception_handler", "to": "str", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "app_main_rationale_81", "to": "core_api_request_log_middleware_apirequestlogmiddleware", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "app_main_rationale_81", "to": "core_api_crypto_middleware_apicryptomiddleware", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "app_main_rationale_92", "to": "core_api_request_log_middleware_apirequestlogmiddleware", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "app_main_rationale_92", "to": "core_api_crypto_middleware_apicryptomiddleware", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "tasks_init_py", "to": "tasks_init_init_scheduled_tasks", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "tasks_init_py", "to": "tasks_init_shutdown_scheduler", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "core_auth_py", "to": "core_auth_redis_session_enabled", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "core_auth_py", "to": "core_auth_get_redis_client", "labeLine truncated
|
||||
const LEGEND = [{"cid": 0, "color": "#4E79A7", "label": "Community 0", "count": 906}, {"cid": 1, "color": "#F28E2B", "label": "Community 1", "count": 612}, {"cid": 2, "color": "#E15759", "label": "Community 2", "count": 536}, {"cid": 3, "color": "#76B7B2", "label": "Community 3", "count": 390}, {"cid": 4, "color": "#59A14F", "label": "Community 4", "count": 378}, {"cid": 5, "color": "#EDC948", "label": "Community 5", "count": 263}, {"cid": 6, "color": "#B07AA1", "label": "Community 6", "count": 245}, {"cid": 7, "color": "#FF9DA7", "label": "Community 7", "count": 213}, {"cid": 8, "color": "#9C755F", "label": "Community 8", "count": 147}, {"cid": 9, "color": "#BAB0AC", "label": "Community 9", "count": 136}, {"cid": 10, "color": "#4E79A7", "label": "Community 10", "count": 130}, {"cid": 11, "color": "#F28E2B", "label": "Community 11", "count": 82}, {"cid": 12, "color": "#E15759", "label": "Community 12", "count": 66}, {"cid": 13, "color": "#76B7B2", "label": "Community 13", "count": 60}, {"cid": 14, "color": "#59A14F", "label": "Community 14", "count": 38}, {"cid": 15, "color": "#EDC948", "label": "Community 15", "count": 29}, {"cid": 16, "color": "#B07AA1", "label": "Community 16", "count": 20}, {"cid": 17, "color": "#FF9DA7", "label": "Community 17", "count": 17}, {"cid": 18, "color": "#9C755F", "label": "Community 18", "count": 16}, {"cid": 19, "color": "#BAB0AC", "label": "Community 19", "count": 15}, {"cid": 20, "color": "#4E79A7", "label": "Community 20", "count": 14}, {"cid": 21, "color": "#F28E2B", "label": "Community 21", "count": 13}, {"cid": 22, "color": "#E15759", "label": "Community 22", "count": 13}, {"cid": 23, "color": "#76B7B2", "label": "Community 23", "count": 12}, {"cid": 24, "color": "#59A14F", "label": "Community 24", "count": 12}, {"cid": 25, "color": "#EDC948", "label": "Community 25", "count": 12}, {"cid": 26, "color": "#B07AA1", "label": "Community 26", "count": 12}, {"cid": 27, "color": "#FF9DA7", "label": "Community 27", "count": 11}, {"cid": 28, "color": "#9C755F", "label": "Community 28", "count": 11}, {"cid": 29, "color": "#BAB0AC", "label": "Community 29", "count": 10}, {"cid": 30, "color": "#4E79A7", "label": "Community 30", "count": 10}, {"cid": 31, "color": "#F28E2B", "label": "Community 31", "count": 10}, {"cid": 32, "color": "#E15759", "label": "Community 32", "count": 8}, {"cid": 33, "color": "#76B7B2", "label": "Community 33", "count": 7}, {"cid": 34, "color": "#59A14F", "label": "Community 34", "count": 4}, {"cid": 35, "color": "#EDC948", "label": "Community 35", "count": 4}, {"cid": 36, "color": "#B07AA1", "label": "Community 36", "count": 3}, {"cid": 37, "color": "#FF9DA7", "label": "Community 37", "count": 2}, {"cid": 38, "color": "#9C755F", "label": "Community 38", "count": 2}, {"cid": 39, "color": "#BAB0AC", "label": "Community 39", "count": 1}, {"cid": 40, "color": "#4E79A7", "label": "Community 40", "count": 1}, {"cid": 41, "color": "#F28E2B", "label": "Community 41", "count": 1}, {"cid": 42, "color": "#E15759", "label": "Community 42", "count": 1}, {"cid": 43, "color": "#76B7B2", "label": "Community 43", "count": 1}, {"cid": 44, "color": "#59A14F", "label": "Community 44", "count": 1}, {"cid": 45, "color": "#EDC948", "label": "Community 45", "count": 1}, {"cid": 46, "color": "#B07AA1", "label": "Community 46", "count": 1}, {"cid": 47, "color": "#FF9DA7", "label": "Community 47", "count": 1}, {"cid": 48, "color": "#9C755F", "label": "Community 48", "count": 1}, {"cid": 49, "color": "#BAB0AC", "label": "Community 49", "count": 1}, {"cid": 50, "color": "#4E79A7", "label": "Community 50", "count": 1}, {"cid": 51, "color": "#F28E2B", "label": "Community 51", "count": 0}, {"cid": 52, "color": "#E15759", "label": "Community 52", "count": 0}, {"cid": 53, "color": "#76B7B2", "label": "Community 53", "count": 0}, {"cid": 54, "color": "#59A14F", "label": "Community 54", "count": 0}, {"cid": 55, "color": "#EDC948", "label": "Community 55", "count": 0}, {"cid": 56, "color": "#B07AA1", "label": "Community 56", "count": 0}, {"cid": 57, "color": "#FF9DA7", "label": "Community 57", "count": 0}, {"cid": 58, "color": "#9C755F", "label": "Community 58", "count": 0}];
|
||||
|
||||
// HTML-escape helper — prevents XSS when injecting graph data into innerHTML
|
||||
function esc(s) {
|
||||
|
||||
+26830
-23584
File diff suppressed because it is too large.
Load diff
@@ -18,6 +18,7 @@
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/core/db_collation.py": 1779890253.2250955,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/core/context.py": 1779242263.6923044,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/core/utils.py": 1780305790.0009735,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/core/protocol_status_display.py": 1782893588.4525878,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/core/storage.py": 1782437555.6682527,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/core/order_status_compat.py": 1778578258.0426462,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/core/exceptions.py": 1778578258.0413945,
|
||||
@@ -25,13 +26,14 @@
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/core/admin_request_json.py": 1778578258.038963,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/core/api_crypto_middleware.py": 1778581508.2309763,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/core/wechat_message.py": 1778578258.0458734,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/models/material.py": 1781427174.243315,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/utils/sample_special.py": 1782890474.0661302,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/models/material.py": 1782894464.7972596,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/models/production_material.py": 1782404882.9262497,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/models/qc_param.py": 1782379593.174925,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py": 1782803028.1079507,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py": 1782893591.4107118,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/models/cleanroom_garment.py": 1781347080.6165943,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/models/__init__.py": 1781344070.5899634,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/models/research_donation.py": 1780458012.8329656,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/models/research_donation.py": 1782893591.5829172,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/models/qc_material.py": 1781690312.7245836,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/models/base.py": 1778578258.0821667,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/models/clinical_payment.py": 1779834956.9588954,
|
||||
@@ -72,15 +74,15 @@
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/schemas/outbound_handover.py": 1780455571.0749218,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/schemas/category.py": 1778578258.0941947,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/schemas/leave.py": 1778666088.7680702,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_release_review.py": 1781536745.221194,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_release_review.py": 1782893695.3771026,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/equipment.py": 1782717312.9816003,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py": 1782601942.7436867,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py": 1782893715.9240513,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/process_route.py": 1782717483.0699635,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_code.py": 1782709076.5173395,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task_result.py": 1782379630.9640372,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/outbound_release_review.py": 1781603141.940902,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material_stock_check.py": 1781423988.9720724,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_stock_batch.py": 1781521998.393167,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_stock_batch.py": 1782894546.3479118,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/post.py": 1779265648.38155,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception_check_result.py": 1779255909.8554008,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_material_stock_batch.py": 1782404955.550011,
|
||||
@@ -94,14 +96,15 @@
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_stock_log.py": 1779281903.0942652,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/tenant.py": 1779265611.0532296,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/consumable.py": 1779512620.86979,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_usage.py": 1781427187.4456425,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_usage.py": 1782894641.0272896,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_material_usage.py": 1781513732.7796721,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/sop_document.py": 1779265721.9928973,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py": 1782720551.1688514,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py": 1782893738.0315711,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/inbound_sample_special.py": 1782890475.769446,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_third_party_item.py": 1779265661.482352,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_production_reception.py": 1782722028.9202535,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/reagent.py": 1779512669.9847593,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py": 1782719109.6706095,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol.py": 1782893636.34521,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/cleanroom_garment.py": 1782264452.4901433,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material_usage.py": 1781423974.5969574,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/biz_no_generator.py": 1779882385.4674172,
|
||||
@@ -116,30 +119,30 @@
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/express_company.py": 1781402091.5987046,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/pilot_application.py": 1781079895.8304482,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_lab_test_item.py": 1779265673.3888667,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/pre_transit_sample.py": 1782565687.6449032,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/pre_transit_sample.py": 1782891216.72219,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/role.py": 1779265616.3701816,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material_stock_batch.py": 1781690315.173275,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_stock_check.py": 1781427194.5434632,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task_step_assignee.py": 1782469070.7380123,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_sms_notification.py": 1781590614.9654794,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task_assignee.py": 1781233180.3766735,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation_sample_collection.py": 1781063441.5812025,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/cell_product.py": 1782752273.7485654,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation_sample_collection.py": 1782886678.892387,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/cell_product.py": 1782886679.0930216,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/menu.py": 1779265729.0381103,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_region.py": 1782181887.2821388,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/pilot_delivery.py": 1779935673.6808827,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception_check_item.py": 1779007909.2933013,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/site.py": 1781401290.6845422,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/api_request_log.py": 1778578258.0614743,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_data.py": 1782713849.285536,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py": 1782719110.48261,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_data.py": 1782893595.9312406,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py": 1782893608.9059234,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/ethnic.py": 1779265849.547566,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_material_formula.py": 1781344175.5871844,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/pilot_checkup.py": 1779935785.233911,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/env_detect_item.py": 1781145689.9525824,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/process_category.py": 1779265700.0606413,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/item_unit.py": 1779265653.7504313,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py": 1782802295.3748794,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py": 1782893677.4257812,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/outbound_handover_inventory.py": 1781598316.476379,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/env_detect_record.py": 1782376492.2365673,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/outbound_release_material.py": 1781612877.0137436,
|
||||
@@ -148,7 +151,7 @@
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/customer.py": 1779686149.7508218,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/workflow.py": 1779265993.677624,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_sms_notification.py": 1781063495.0317714,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception.py": 1782719096.6028564,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception.py": 1782891223.4996026,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/consumable_pack.py": 1779265715.416005,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_inspection_batch.py": 1782569255.0879426,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_material_prep.py": 1781514953.3551314,
|
||||
@@ -163,7 +166,7 @@
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/dept.py": 1779265637.7914758,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/base.py": 1778578258.062207,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/protocol_donation_convert.py": 1779161468.6582925,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/protocol_sample_collection.py": 1781063441.1529672,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/protocol_sample_collection.py": 1782886678.8686988,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_item_param.py": 1782380067.962216,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/leave.py": 1779265839.500242,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/crud/output_type.py": 1779265703.7363207,
|
||||
@@ -172,12 +175,12 @@
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/api/storage_release_review.py": 1779526635.1455016,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/api/outbound_release_review.py": 1779968232.5759368,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/api/public.py": 1782122639.96012,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/api/material.py": 1781522000.6097813,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/api/material.py": 1782894532.006265,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/api/production_material.py": 1782404982.2474263,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py": 1782802297.5818124,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py": 1782889888.587752,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/api/market.py": 1781522283.6823432,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/api/sample_production_reception.py": 1782718998.90251,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/api/collection_protocol.py": 1782747504.4073274,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/api/collection_protocol.py": 1782893610.312771,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/api/cleanroom_garment.py": 1781347256.2326367,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/api/basic_info.py": 1782709076.3968658,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/api/pilot_infusion_confirm.py": 1779657043.1389203,
|
||||
@@ -193,7 +196,7 @@
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/api/pilot_delivery.py": 1779655584.820777,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/api/admin.py": 1782469068.0578597,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/api/env_detect.py": 1782376501.8919773,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/api/research_donation.py": 1782195482.219445,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/api/research_donation.py": 1782893614.5041575,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/api/ethnic.py": 1779266243.9511197,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/api/pilot_checkup.py": 1779935751.2658868,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/api/pilot_service.py": 1781599314.0221174,
|
||||
@@ -201,7 +204,7 @@
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/api/sample_sms_notification.py": 1780325524.907156,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/api/sample_reception.py": 1782719108.3741593,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/api/insurance_company.py": 1781410837.9443986,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/api/production.py": 1782711017.6634378,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/api/production.py": 1782882295.827764,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/api/protocol_sample_collection.py": 1780457788.2093296,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/api/leave.py": 1779266168.8693042,
|
||||
"/Users/wuzilong/work/00code/zkxw/backend/app/api/clinical_payment.py": 1781750841.074568,
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
-- 市场物料变动记录:入库/出库/废弃经办人
|
||||
-- 2026-07-01
|
||||
|
||||
ALTER TABLE `biz_material_usage`
|
||||
ADD COLUMN `operator_name` varchar(100) DEFAULT NULL COMMENT '经办人姓名' AFTER `receiver`;
|
||||
@@ -0,0 +1,29 @@
|
||||
-- 协议作废类型(采集协议单 / 捐赠协议单)
|
||||
-- 2026-07-01
|
||||
|
||||
ALTER TABLE `biz_collection_protocol`
|
||||
ADD COLUMN `void_type` varchar(32) DEFAULT NULL COMMENT '协议作废类型(字典 xyzflx)' AFTER `void_desc`;
|
||||
|
||||
ALTER TABLE `biz_research_donation`
|
||||
ADD COLUMN `void_type` varchar(32) DEFAULT NULL COMMENT '作废类型(字典 xyzflx)' AFTER `void_desc`;
|
||||
|
||||
INSERT INTO `sys_dict_type` (
|
||||
`id`, `dict_name`, `dict_type`, `tenant_no`, `order_num`, `remark`,
|
||||
`create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`
|
||||
) VALUES (
|
||||
'TDP000000000000000000000000000096', '协议作废类型', 'xyzflx', 'zkxw', 0, NULL,
|
||||
NULL, '', NOW(), NULL, NOW(), 0
|
||||
);
|
||||
|
||||
INSERT INTO `sys_dict_data` (
|
||||
`id`, `dict_label`, `dict_value`, `dict_type`, `tenant_no`, `order_num`, `remark`,
|
||||
`create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`
|
||||
) VALUES
|
||||
(
|
||||
'DDP000000000000000000000000000201', '客户毁存', 'khhc', 'xyzflx', 'zkxw', 1, NULL,
|
||||
NULL, '', NOW(), NULL, NOW(), 0
|
||||
),
|
||||
(
|
||||
'DDP000000000000000000000000000202', '检测不合格', 'jcbhg', 'xyzflx', 'zkxw', 2, NULL,
|
||||
NULL, '', NOW(), NULL, NOW(), 0
|
||||
);
|
||||
@@ -0,0 +1,10 @@
|
||||
-- 样本特殊标记与特殊说明
|
||||
-- 2026-07-01
|
||||
|
||||
ALTER TABLE `biz_protocol_sample`
|
||||
ADD COLUMN `is_special` tinyint(4) NOT NULL DEFAULT 0 COMMENT '是否特殊样本:0否 1是' AFTER `storage_expire_date`,
|
||||
ADD COLUMN `special_remark` varchar(256) DEFAULT NULL COMMENT '特殊说明' AFTER `is_special`;
|
||||
|
||||
ALTER TABLE `biz_research_donation_sample`
|
||||
ADD COLUMN `is_special` tinyint(4) NOT NULL DEFAULT 0 COMMENT '是否特殊样本:0否 1是' AFTER `storage_expire_date`,
|
||||
ADD COLUMN `special_remark` varchar(256) DEFAULT NULL COMMENT '特殊说明' AFTER `is_special`;
|
||||
+7
-3
@@ -6418,6 +6418,7 @@ CREATE TABLE `biz_material_usage` (
|
||||
`stock_before` decimal(18,4) DEFAULT NULL COMMENT '变动前物资汇总库存',
|
||||
`stock_after` decimal(18,4) NOT NULL COMMENT '变动后库存量',
|
||||
`receiver` varchar(64) DEFAULT NULL COMMENT '领用人(手动出库)',
|
||||
`operator_name` varchar(100) DEFAULT NULL COMMENT '经办人姓名',
|
||||
`purpose` varchar(512) DEFAULT NULL COMMENT '用途/事由(手动出库或废弃原因)',
|
||||
`requisition_status` varchar(16) NOT NULL DEFAULT 'open' COMMENT '领用状态:open-待登记/有剩余 closed-已使用完',
|
||||
`source_type` varchar(32) NOT NULL COMMENT '来源:manual_in / manual_out / manual_discard',
|
||||
@@ -10477,6 +10478,8 @@ CREATE TABLE `biz_protocol_sample` (
|
||||
`detect_start_date` char(8) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '检测开始日期',
|
||||
`void_date` char(8) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '作废日期',
|
||||
`storage_expire_date` char(8) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '存储到期日期=入库+年限',
|
||||
`is_special` tinyint(4) NOT NULL DEFAULT '0' COMMENT '是否特殊样本:0否 1是',
|
||||
`special_remark` varchar(256) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '特殊说明',
|
||||
`tenant_no` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'zkxw' COMMENT '租户编号',
|
||||
`order_num` int(11) DEFAULT NULL COMMENT '排序号',
|
||||
`remark` varchar(512) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
|
||||
@@ -10494,7 +10497,7 @@ CREATE TABLE `biz_protocol_sample` (
|
||||
-- Records of biz_protocol_sample
|
||||
-- ----------------------------
|
||||
BEGIN;
|
||||
INSERT INTO `biz_protocol_sample` (`id`, `collection_protocol_id`, `sample_type_id`, `sample_code_id`, `sample_code`, `collect_amount`, `unit_id`, `price`, `original_price`, `storage_years`, `sample_status`, `storage_in_date`, `detect_start_date`, `void_date`, `storage_expire_date`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('B6E991CFCE3249AA919BA252123E0CA8', '152523729D3943A1B1EC0159129C28B3', '562040C071C44473AD3BCD7C84A70354', '9B15036F3C6444A8B24A1962FE50BB48', 'ZKZX34000930', NULL, NULL, 25880.00, 25880.00, 20, 'ycj', NULL, NULL, NULL, NULL, 'zkxw', 0, NULL, '21F593EF3DB648EDABFC48ED9042A5D5', 'b13f9389-4e71-11f1-9f47-00163e3bdd96', '2026-06-29 05:51:23', '21F593EF3DB648EDABFC48ED9042A5D5', '2026-06-29 05:51:23', 0);
|
||||
INSERT INTO `biz_protocol_sample` (`id`, `collection_protocol_id`, `sample_type_id`, `sample_code_id`, `sample_code`, `collect_amount`, `unit_id`, `price`, `original_price`, `storage_years`, `sample_status`, `storage_in_date`, `detect_start_date`, `void_date`, `storage_expire_date`, `is_special`, `special_remark`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('B6E991CFCE3249AA919BA252123E0CA8', '152523729D3943A1B1EC0159129C28B3', '562040C071C44473AD3BCD7C84A70354', '9B15036F3C6444A8B24A1962FE50BB48', 'ZKZX34000930', NULL, NULL, 25880.00, 25880.00, 20, 'ycj', NULL, NULL, NULL, NULL, 0, NULL, 'zkxw', 0, NULL, '21F593EF3DB648EDABFC48ED9042A5D5', 'b13f9389-4e71-11f1-9f47-00163e3bdd96', '2026-06-29 05:51:23', '21F593EF3DB648EDABFC48ED9042A5D5', '2026-06-29 05:51:23', 0);
|
||||
COMMIT;
|
||||
|
||||
-- ----------------------------
|
||||
@@ -12130,6 +12133,8 @@ CREATE TABLE `biz_research_donation_sample` (
|
||||
`detect_start_date` char(8) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '检测开始日期YYYYMMDD',
|
||||
`void_date` char(8) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '作废日期YYYYMMDD',
|
||||
`storage_expire_date` char(8) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '存储到期日期YYYYMMDD',
|
||||
`is_special` tinyint(4) NOT NULL DEFAULT '0' COMMENT '是否特殊样本:0否 1是',
|
||||
`special_remark` varchar(256) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '特殊说明',
|
||||
`tenant_no` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'zkxw' COMMENT '租户编号',
|
||||
`order_num` int(11) DEFAULT NULL COMMENT '排序号',
|
||||
`remark` varchar(512) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
|
||||
@@ -17382,5 +17387,4 @@ INSERT INTO `biz_storage_facility_slot` (`id`, `facility_node_id`, `slot_code`,
|
||||
INSERT INTO `biz_storage_facility_slot` (`id`, `facility_node_id`, `slot_code`, `slot_status`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`, `occupied_count`, `last_item_type`, `last_stored_at`) VALUES ('06DAE9C9391A42F18810921CFEF9053A', '38E4724959314DDFA1C26E7C8ADC1D08', '3', '空', 'zkxw', 1003, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-06-26 04:20:32', 'd3000000000000000000000000000001', '2026-06-26 04:20:32', 0, 0, NULL, NULL);
|
||||
INSERT INTO `biz_storage_facility_slot` (`id`, `facility_node_id`, `slot_code`, `slot_status`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`, `occupied_count`, `last_item_type`, `last_stored_at`) VALUES ('06DE851FAABD4E07928BF7FB73A0C807', 'C530BD59EE934CCCAE12411679D5AF9A', '26', '占用', 'zkxw', 3006, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-06-26 04:12:30', 'd3000000000000000000000000000001', '2026-06-30 00:53:30', 0, 1, 'cell_product', '2025-08-20 00:00:00');
|
||||
INSERT INTO `biz_storage_facility_slot` (`id`, `facility_node_id`, `slot_code`, `slot_status`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`, `occupied_count`, `last_item_type`, `last_stored_at`) VALUES ('06E019CD9A794C27842428ED073640B5', '22564DA268E44068AB159C551C815CE5', '97', '空', 'zkxw', 10007, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-06-26 04:20:41', 'd3000000000000000000000000000001', '2026-06-26 04:20:41', 0, 0, NULL, NULL);
|
||||
INSERT INTO `biz_storage_facility_slot` (`id`, `facility_node_id`, `slot_code`, `slot_status`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`, `occupied_count`, `last_item_type`, `last_stored_at`) VALUES ('06E27C81FCE14EFB89B760E049D19505', 'EF5E0C22CE24494C87BD66064347B647', '31', '空', 'zkxw', 4004, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-06-30 01:42:36', 'd3000000000000000000000000000001', '2026-06-30 01:42:36', 0, 0, NULL, NULL);
|
||||
INSERT INTO `biz_storage_facility_slot` (`id`, `facility_node_id`, `slot_code`, `slot_status`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`, `occupied_count`, `l
|
||||
INSERT INTO `biz_storage_facility_slot` (`id`, `facility_node_id`, `slot_code`, `slot_status`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`, `occupied_count`, `last_item_type`, `last_stored_at`) VALUES ('06E27C81FCE14EFB89B760E049D19505', 'EF5E0C22CE24494C87BD66064347B647', '31', '空', 'zkxw', 4004, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-
|
||||
@@ -0,0 +1,378 @@
|
||||
# 附件拖拽上传 Implementation Plan
|
||||
|
||||
> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
|
||||
|
||||
**Goal:** 在方案 1 范围内(类型 A/B/C 附件上传)为所有上传区增加拖拽落文件能力,保留现有点击上传行为。
|
||||
|
||||
**Architecture:** 新增 `useAttachmentDropZone` composable 封装 dragenter/dragleave/dragover/drop;各页面在 `.attachment-upload`(或 C 类 `.paper-att-list`)独立挂载,drop 后复用现有 `handleAttachmentChange` / `handlePaperAttachmentChange`。类型 B 仅改 `ProtocolFinanceConfirmFields` 一处并回归 6 个消费页。全局 `.is-dragover` 样式放 `app.scss`。
|
||||
|
||||
**Tech Stack:** Vue 3 · Element Plus `el-upload` · TypeScript · SCSS · `fetchUploadAttachment`
|
||||
|
||||
**设计文档:** `docs/superpowers/specs/2026-07-01-attachment-drag-upload-design.md`
|
||||
|
||||
---
|
||||
|
||||
## 文件结构
|
||||
|
||||
| 路径 | 职责 |
|
||||
|------|------|
|
||||
| `web-admin/src/composables/useAttachmentDropZone.ts` | **新建** — drop zone 事件与 `isDragover` 状态 |
|
||||
| `web-admin/src/assets/styles/core/app.scss` | **修改** — `.attachment-upload.is-dragover`、`.paper-att-list.is-dragover` |
|
||||
| `web-admin/src/components/business/protocol-finance-confirm-fields/index.vue` | **修改** — 类型 B 共享上传 |
|
||||
| `web-admin/src/components/business/outbound-material-form-sections/index.vue` | **修改** — 类型 C 行内上传 |
|
||||
| 22 个类型 A `.vue` 文件 | **修改** — 各页独立挂载 composable |
|
||||
| `openspec/changes/zkxw-engineering-standards/specs/ui-conventions/spec.md` | **修改** — 补充拖拽 SHALL |
|
||||
|
||||
---
|
||||
|
||||
## Task 0: 基础设施
|
||||
|
||||
**Files:**
|
||||
- Create: `web-admin/src/composables/useAttachmentDropZone.ts`
|
||||
- Modify: `web-admin/src/assets/styles/core/app.scss`
|
||||
- Modify: `openspec/changes/zkxw-engineering-standards/specs/ui-conventions/spec.md`
|
||||
|
||||
- [ ] **Step 1: 创建 composable**
|
||||
|
||||
```ts
|
||||
// web-admin/src/composables/useAttachmentDropZone.ts
|
||||
import { ref, type Ref } from 'vue'
|
||||
|
||||
export type AttachmentDropZoneOptions = {
|
||||
/** 收到有效文件列表时回调(已过滤空项) */
|
||||
onFiles: (files: File[]) => void | Promise<void>
|
||||
/** 为 true 时不响应拖拽 */
|
||||
disabled?: Ref<boolean> | (() => boolean)
|
||||
}
|
||||
|
||||
export function useAttachmentDropZone(options: AttachmentDropZoneOptions) {
|
||||
const isDragover = ref(false)
|
||||
let dragDepth = 0
|
||||
|
||||
function isDisabled() {
|
||||
const d = options.disabled
|
||||
if (!d) return false
|
||||
return typeof d === 'function' ? d() : d.value
|
||||
}
|
||||
|
||||
function onDragEnter(e: DragEvent) {
|
||||
if (isDisabled()) return
|
||||
e.preventDefault()
|
||||
dragDepth += 1
|
||||
isDragover.value = true
|
||||
}
|
||||
|
||||
function onDragLeave(e: DragEvent) {
|
||||
if (isDisabled()) return
|
||||
e.preventDefault()
|
||||
dragDepth = Math.max(0, dragDepth - 1)
|
||||
if (dragDepth === 0) isDragover.value = false
|
||||
}
|
||||
|
||||
function onDragOver(e: DragEvent) {
|
||||
if (isDisabled()) return
|
||||
e.preventDefault()
|
||||
if (e.dataTransfer) e.dataTransfer.dropEffect = 'copy'
|
||||
}
|
||||
|
||||
function onDrop(e: DragEvent) {
|
||||
if (isDisabled()) return
|
||||
e.preventDefault()
|
||||
dragDepth = 0
|
||||
isDragover.value = false
|
||||
const list = e.dataTransfer?.files
|
||||
if (!list?.length) return
|
||||
const files = Array.from(list).filter((f) => f.size >= 0)
|
||||
if (files.length) void options.onFiles(files)
|
||||
}
|
||||
|
||||
const dropZoneHandlers = {
|
||||
onDragenter: onDragEnter,
|
||||
onDragleave: onDragLeave,
|
||||
onDragover: onDragOver,
|
||||
onDrop: onDrop
|
||||
}
|
||||
|
||||
return { isDragover, dropZoneHandlers }
|
||||
}
|
||||
```
|
||||
|
||||
- [ ] **Step 2: 全局 dragover 样式(app.scss 附件相关区末尾追加)**
|
||||
|
||||
```scss
|
||||
.attachment-upload.is-dragover {
|
||||
border: 1px dashed var(--primary, #10b981);
|
||||
border-radius: 8px;
|
||||
background: var(--primary-bg, #ecfdf5);
|
||||
box-shadow: inset 0 0 0 1px rgba(16, 185, 129, 0.15);
|
||||
}
|
||||
|
||||
.paper-att-list.is-dragover {
|
||||
border: 1px dashed var(--primary, #10b981);
|
||||
border-radius: 8px;
|
||||
background: var(--primary-bg, #ecfdf5);
|
||||
}
|
||||
```
|
||||
|
||||
- [ ] **Step 3: OpenSpec 补充**
|
||||
|
||||
在 `ui-conventions/spec.md`「附件上传卡片化布局」的 `el-upload` 配置表后增加:
|
||||
|
||||
- Drop zone SHALL 为 `.attachment-upload` 根容器(表格行内纸质材料为 `.paper-att-list`)
|
||||
- SHALL 支持拖拽与点击两种方式;`.upload-hint` 含「支持拖拽或点击上传」
|
||||
- dragover 时使用 `.is-dragover` 修饰类(Fresh Mint 虚线边框 + 浅绿底)
|
||||
|
||||
- [ ] **Step 4: 手工冒烟**
|
||||
|
||||
本地 `pnpm dev`,临时在任意页挂载 composable 验证 drop 能触发 `onFiles`(可在 Step 1 完成前跳过,于 Task 1 一并验)。
|
||||
|
||||
---
|
||||
|
||||
## Task 1: 试点 — ProtocolFormDialog(A1)
|
||||
|
||||
**Files:**
|
||||
- Modify: `web-admin/src/views/cell-storage/protocol/ProtocolFormDialog.vue`
|
||||
|
||||
- [ ] **Step 1: 协议附件区挂载 composable**
|
||||
|
||||
在 `<script setup>` 中:
|
||||
|
||||
```ts
|
||||
import { useAttachmentDropZone } from '@/composables/useAttachmentDropZone'
|
||||
|
||||
// 在 handleAttachmentChange 定义之后:
|
||||
const { isDragover: isProtocolAttachDragover, dropZoneHandlers: protocolAttachDropHandlers } =
|
||||
useAttachmentDropZone({
|
||||
onFiles: (files) => {
|
||||
for (const file of files) {
|
||||
void handleAttachmentChange({ raw: file })
|
||||
}
|
||||
}
|
||||
})
|
||||
```
|
||||
|
||||
模板中协议附件的 `.attachment-upload` 改为:
|
||||
|
||||
```vue
|
||||
<div
|
||||
class="attachment-upload"
|
||||
:class="{ 'is-dragover': isProtocolAttachDragover }"
|
||||
v-bind="protocolAttachDropHandlers"
|
||||
>
|
||||
```
|
||||
|
||||
`.upload-hint` 文案改为含「支持拖拽或点击上传」。
|
||||
|
||||
- [ ] **Step 2: 缴费凭证区(第二处 upload-card--sm)**
|
||||
|
||||
新增独立 composable 实例(变量名如 `isPaymentVoucherDragover` / `paymentVoucherDropHandlers`),绑定到缴费明细内 `.attachment-upload` 容器;`onFiles` 调用现有缴费凭证 `handleXxxChange`(与 `@change` 同一函数)。
|
||||
|
||||
- [ ] **Step 3: 回归测试**
|
||||
|
||||
打开采集协议录入弹窗 → 协议附件:点击 1 文件、拖拽 1 文件、拖拽 3 文件、拖拽 >20MB 文件。缴费凭证区重复上述。确认提交拦截「上传中」仍有效。
|
||||
|
||||
- [ ] **Step 4: Commit**
|
||||
|
||||
```bash
|
||||
git add web-admin/src/composables/useAttachmentDropZone.ts \
|
||||
web-admin/src/assets/styles/core/app.scss \
|
||||
web-admin/src/views/cell-storage/protocol/ProtocolFormDialog.vue \
|
||||
openspec/changes/zkxw-engineering-standards/specs/ui-conventions/spec.md
|
||||
git commit -m "feat(web-admin): 附件上传支持拖拽(试点 ProtocolFormDialog)"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Task 2: 细胞存储域(A2–A5 + B0 + B2–B4)
|
||||
|
||||
**Files:**
|
||||
- Modify: `web-admin/src/views/cell-storage/protocol-audit/PaymentInfoTab.vue`(A2,2 区)
|
||||
- Modify: `web-admin/src/views/cell-storage/protocol-audit/StorageCertTab.vue`(A3)
|
||||
- Modify: `web-admin/src/views/cell-storage/protocol-audit/FullmoonTodoTab.vue`(A4)
|
||||
- Modify: `web-admin/src/views/research-donation/list/DonationFormDialog.vue`(A5,2 区)
|
||||
- Modify: `web-admin/src/components/business/protocol-finance-confirm-fields/index.vue`(B0)
|
||||
- Modify: `web-admin/src/views/cell-storage/payment-confirm/index.vue`(B2,回归)
|
||||
- Modify: `web-admin/src/views/cell-storage/payment-confirm/RefundConfirmTab.vue`(B3,回归)
|
||||
- Modify: `web-admin/src/views/cell-storage/payment-confirm/InvoiceRequestTab.vue`(B4,回归)
|
||||
|
||||
- [ ] **Step 1: 改 ProtocolFinanceConfirmFields(B0)**
|
||||
|
||||
```ts
|
||||
import { useAttachmentDropZone } from '@/composables/useAttachmentDropZone'
|
||||
|
||||
const { isDragover, dropZoneHandlers } = useAttachmentDropZone({
|
||||
onFiles: (files) => {
|
||||
for (const file of files) {
|
||||
void handleAttachmentChange({ raw: file })
|
||||
}
|
||||
}
|
||||
})
|
||||
```
|
||||
|
||||
`.attachment-upload` 加 `:class` 与 `v-bind="dropZoneHandlers"`;更新 `.upload-hint` 文案。
|
||||
|
||||
- [ ] **Step 2: A2–A5 各页按 Task 1 模式改**
|
||||
|
||||
每处 `.attachment-upload` 一个 composable 实例;多上传区 = 多实例。DonationFormDialog、PaymentInfoTab 各 2 实例。
|
||||
|
||||
- [ ] **Step 3: 回归 B2–B4 + A2–A5**
|
||||
|
||||
| 页面 | 入口 |
|
||||
|------|------|
|
||||
| 付款信息看板 PaymentInfoTab | 协议审核 |
|
||||
| 储存证 StorageCertTab | 协议审核 |
|
||||
| 满月待办 FullmoonTodoTab | 协议审核 |
|
||||
| 捐赠 DonationFormDialog | 科研捐赠 |
|
||||
| 付款确认 payment-confirm | 细胞存储-付款确认 三 Tab |
|
||||
|
||||
- [ ] **Step 4: Commit**
|
||||
|
||||
```bash
|
||||
git commit -m "feat(web-admin): 细胞存储域附件上传支持拖拽"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Task 3: 质检域(A6–A7 + B1 + B6)
|
||||
|
||||
**Files:**
|
||||
- Modify: `web-admin/src/views/quality-inspection/env-detect-record/index.vue`(A6)
|
||||
- Modify: `web-admin/src/views/quality-inspection/storage-release-review/StorageReleaseReviewDialog.vue`(A7)
|
||||
- Modify: `web-admin/src/views/quality-inspection/sample-reception/index.vue`(B1,2 区 — 仅回归 hint 若 B0 已改)
|
||||
- Modify: `web-admin/src/views/quality-inspection/qc-material/QcMaterialBatchAttachmentDialog.vue`(B6,回归)
|
||||
|
||||
- [ ] **Step 1: A6、A7 挂载 composable**(同 Task 1 模式)
|
||||
|
||||
- [ ] **Step 2: 确认 B1/B6 经 B0 已生效**
|
||||
|
||||
打开样本接收(单条 + 批量弹窗)、质检物料批次附件弹窗,测拖拽。
|
||||
|
||||
- [ ] **Step 3: Commit**
|
||||
|
||||
```bash
|
||||
git commit -m "feat(web-admin): 质检域附件上传支持拖拽"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Task 4: 中试服务(上)— 渠道与付款(A10–A15)
|
||||
|
||||
**Files:**
|
||||
- Modify: `web-admin/src/views/pilot-service/channel/index.vue`(A10)
|
||||
- Modify: `web-admin/src/views/pilot-service/channel/ChannelServiceOrderTab.vue`(A11,2 区)
|
||||
- Modify: `web-admin/src/views/pilot-service/channel-service-order/ServiceOrderTxnDialog.vue`(A12)
|
||||
- Modify: `web-admin/src/views/pilot-service/channel-service-order-finance/index.vue`(A13)
|
||||
- Modify: `web-admin/src/views/pilot-service/clinical-payment-confirm/index.vue`(A14,2 区)
|
||||
- Modify: `web-admin/src/views/pilot-service/clinical-payment-confirm/RefundConfirmTab.vue`(A15,2 区)
|
||||
|
||||
- [ ] **Step 1: 逐文件挂载 composable**(共 9 个上传区)
|
||||
|
||||
`ServiceOrderTxnDialog` / `ChannelServiceOrderTab` 若存在本地 `uploadAttachmentItem`,drop 的 `onFiles` 应调用同一入口。
|
||||
|
||||
- [ ] **Step 2: 回归**
|
||||
|
||||
渠道管理、渠道服务单、财务确认、临床付款确认(含退费 Tab)。
|
||||
|
||||
- [ ] **Step 3: Commit**
|
||||
|
||||
```bash
|
||||
git commit -m "feat(web-admin): 中试渠道与临床付款确认附件支持拖拽"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Task 5: 中试服务(下)— 临床申请与出库(A16–A22 + C1–C2)
|
||||
|
||||
**Files:**
|
||||
- Modify: `web-admin/src/views/pilot-service/pilot-application/ApplicationFormDialog.vue`(A16,4 区)
|
||||
- Modify: `web-admin/src/views/pilot-service/pilot-application/ApplicationDetailDialog.vue`(A17,5 区)
|
||||
- Modify: `web-admin/src/views/pilot-service/pilot-application/ClinicalPaymentTab.vue`(A18,2 区)
|
||||
- Modify: `web-admin/src/views/pilot-service/outbound-release-review/OutboundReleaseReviewDialog.vue`(A19)
|
||||
- Modify: `web-admin/src/views/pilot-service/infusion-schedule-management/InfusionScheduleHandoverDialog.vue`(A20,交接附件区)
|
||||
- Modify: `web-admin/src/views/pilot-service/checkup-management/CheckupDetailDialog.vue`(A21)
|
||||
- Modify: `web-admin/src/views/pilot-service/checkup-management/CheckupMarkCheckedDialog.vue`(A22)
|
||||
- Modify: `web-admin/src/components/business/outbound-material-form-sections/index.vue`(C1)
|
||||
- Modify: `web-admin/src/views/pilot-service/outbound-release-review/OutboundReleaseMaterialDialog.vue`(C2)
|
||||
|
||||
- [ ] **Step 1: A16–A22 卡片化区**
|
||||
|
||||
`ApplicationDetailDialog` 中非标准 `attachment-trigger-card` 区域:drop zone 绑外层 `.attachment-upload` 或等价 flex 容器(5 处逐一改)。
|
||||
|
||||
- [ ] **Step 2: C1 行内纸质材料**
|
||||
|
||||
```ts
|
||||
function usePaperRowDropZone(rowIndex: number) {
|
||||
return useAttachmentDropZone({
|
||||
onFiles: (files) => {
|
||||
for (const file of files) {
|
||||
void handlePaperAttachmentChange(rowIndex, { raw: file })
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
```
|
||||
|
||||
模板:每行 `.paper-att-list` 绑 `:class="{ 'is-dragover': ... }"` 与 handlers(可用 `v-for` 内联或按 index 数组存 ref)。
|
||||
|
||||
- [ ] **Step 3: C2 与 C1 对齐**
|
||||
|
||||
`OutboundReleaseMaterialDialog.vue` 行内上传逻辑与 C1 保持一致。
|
||||
|
||||
- [ ] **Step 4: 回归**
|
||||
|
||||
临床申请新建/详情、出库审核、输注交接(交接附件 + 物料纸质材料)、体检报告上传。
|
||||
|
||||
- [ ] **Step 5: Commit**
|
||||
|
||||
```bash
|
||||
git commit -m "feat(web-admin): 临床申请与出库物料附件支持拖拽"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Task 6: 生产域(A8–A9 + B5)
|
||||
|
||||
**Files:**
|
||||
- Modify: `web-admin/src/views/production/sop/index.vue`(A8)
|
||||
- Modify: `web-admin/src/views/production/cell-product/index.vue`(A9)
|
||||
- Modify: `web-admin/src/views/production/production-work-order/TaskPaperAttachmentsPanel.vue`(B5,回归)
|
||||
|
||||
- [ ] **Step 1: A8、A9 挂载 composable**
|
||||
|
||||
- [ ] **Step 2: 回归 B5**
|
||||
|
||||
生产工单 → 任务执行 → 线下纸质文档 Tab。
|
||||
|
||||
- [ ] **Step 3: 全量收尾**
|
||||
|
||||
`./scripts/update-graph.sh frontend`(若 composable 被大量引用)
|
||||
|
||||
- [ ] **Step 4: Commit**
|
||||
|
||||
```bash
|
||||
git commit -m "feat(web-admin): 生产域附件上传支持拖拽"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 验收总表(方案 1 完成标准)
|
||||
|
||||
| 类别 | 文件数 | 上传区约数 | 状态 |
|
||||
|------|--------|------------|------|
|
||||
| A 内联卡片 | 22 | ~33 | Task 1–6 |
|
||||
| B 共享组件 + 回归 | 1 + 6 | ~8 | Task 2–3、6 |
|
||||
| C 行内纸质 | 2 | 动态 | Task 5 |
|
||||
| **合计** | **~31 文件** | **~40+** | |
|
||||
|
||||
**不在范围(二期):** 类型 D 8 文件、类型 E 3 文件 — 见设计文档 §2.4。
|
||||
|
||||
---
|
||||
|
||||
## 执行选项
|
||||
|
||||
Plan 已保存至 `docs/superpowers/plans/2026-07-01-attachment-drag-upload.md`。
|
||||
|
||||
1. **Subagent 驱动(推荐)** — 按 Task 0→6 逐批派发,每批独立 PR/提交
|
||||
2. **同会话连续执行** — 从 Task 0 开始直接改代码
|
||||
|
||||
请确认是否从 **Task 0(composable + 样式 + OpenSpec)** 开始实施。
|
||||
@@ -0,0 +1,45 @@
|
||||
# 质检工单批量导出任务附件 Implementation Plan
|
||||
|
||||
> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
|
||||
|
||||
**Goal:** 在【质检工单】【我的质检任务】支持多选工单,将各工单全部批次/任务附件按三层目录打包 ZIP 下载,并展示三阶段进度弹窗。
|
||||
|
||||
**Architecture:** 纯前端 JSZip;`fetchQcInspectionBatchesBatch` 聚合元数据;`attachment-zip.ts` 负责 blob 下载与路径去重;`qc-work-order-attachment-export.ts` 构建目录并执行打包;`provide/inject` 传递卡片勾选状态,避免多层 prop drilling。
|
||||
|
||||
**Tech Stack:** Vue 3、Element Plus、JSZip、file-saver、现有预签名下载 API
|
||||
|
||||
**Spec:** `docs/superpowers/specs/2026-07-01-qc-work-order-attachment-export-design.md`
|
||||
|
||||
---
|
||||
|
||||
### Task 1: 公共 ZIP 工具
|
||||
|
||||
**Files:**
|
||||
- Create: `web-admin/src/utils/attachment-zip.ts`
|
||||
|
||||
- [ ] 实现 `sanitizeZipPathSegment`、`ensureUniqueZipEntryName`、`fetchAttachmentBlob`、`formatZipDateStamp`
|
||||
|
||||
### Task 2: 质检工单导出核心
|
||||
|
||||
**Files:**
|
||||
- Create: `web-admin/src/utils/qc-work-order-attachment-export.ts`
|
||||
|
||||
- [ ] 实现 `buildQcWorkOrderZipEntries`、`runAttachmentZipExport`(三阶段进度回调 + AbortSignal)
|
||||
|
||||
### Task 3: 进度弹窗与 composable
|
||||
|
||||
**Files:**
|
||||
- Create: `web-admin/src/components/business/attachment-zip-progress-dialog/index.vue`
|
||||
- Create: `web-admin/src/views/quality-inspection/qc-work-order/composables/useQcWorkOrderAttachmentExport.ts`
|
||||
- Create: `web-admin/src/views/quality-inspection/qc-work-order/composables/qc-work-order-selection.ts`
|
||||
|
||||
### Task 4: 卡片勾选与工具栏
|
||||
|
||||
**Files:**
|
||||
- Modify: `QcWorkOrderSingleCard.vue` — checkbox + inject
|
||||
- Modify: `QcWorkOrderTabPanel.vue` — provide 选择态、工具栏、导出按钮、翻页清空
|
||||
|
||||
### Task 5: 验证
|
||||
|
||||
- [ ] `pnpm lint` 相关文件
|
||||
- [ ] `./scripts/update-graph.sh frontend`
|
||||
@@ -0,0 +1,150 @@
|
||||
# 样本特殊标记 Implementation Plan
|
||||
|
||||
> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
|
||||
|
||||
**Goal:** 在采集/捐赠协议单样本上维护 `isSpecial` + `specialRemark`,并在 web-admin 全链路只读展示红色加粗警示。
|
||||
|
||||
**Architecture:** 字段仅存 `biz_protocol_sample` / `biz_research_donation_sample`;下游 API JOIN 源表补字段;前端 `SpecialSampleDisplay` 统一渲染。
|
||||
|
||||
**Tech Stack:** FastAPI + SQLAlchemy + Vue 3 + Element Plus
|
||||
|
||||
**Spec:** `docs/superpowers/specs/2026-07-01-special-sample-mark-design.md`
|
||||
|
||||
---
|
||||
|
||||
## File Map
|
||||
|
||||
| 文件 | 职责 |
|
||||
|------|------|
|
||||
| `docs/sql/migrate-special-sample-mark.sql` | DDL 增量脚本 |
|
||||
| `backend/app/utils/sample_special.py` | 校验 + dict 转换工具 |
|
||||
| `backend/app/models/models.py` | `BizProtocolSample` 新列 |
|
||||
| `backend/app/models/research_donation.py` | `BizResearchDonationSample` 新列 |
|
||||
| `backend/app/crud/collection_protocol.py` | `_sample_to_dict` / `save_samples` / list sampleItems |
|
||||
| `backend/app/crud/research_donation.py` | 同上 + 转存储复制 |
|
||||
| `backend/app/crud/qc_work_order.py` | `_enrich_work_order_list_items` 补字段 |
|
||||
| `backend/app/crud/sample_reception.py` | 待/已接收 list item |
|
||||
| `backend/app/crud/protocol_sample_collection.py` | 样本采集信息 list |
|
||||
| `backend/app/crud/research_donation_sample_collection.py` | 捐赠样本采集 list |
|
||||
| `backend/app/crud/pre_transit_sample.py` | 转运前样本卡片 items |
|
||||
| `backend/app/crud/storage_release_review.py` | 入库审核 detail |
|
||||
| `backend/app/crud/cell_product.py` | 溯源链样本信息 |
|
||||
| `web-admin/src/components/business/special-sample-display/index.vue` | 公共展示组件 |
|
||||
| `web-admin/src/components/business/sample-transport-form-section/index.vue` | 录入 |
|
||||
| `web-admin/src/views/cell-storage/protocol/ProtocolViewDialog.vue` | 采集查看 |
|
||||
| `web-admin/src/views/research-donation/list/DonationViewDialog.vue` | 捐赠查看 |
|
||||
| 下游 15+ vue 页面 | 样本编码旁 inline 展示 |
|
||||
|
||||
---
|
||||
|
||||
## Task 1: 数据库与 Model
|
||||
|
||||
**Files:**
|
||||
- Create: `docs/sql/migrate-special-sample-mark.sql`
|
||||
- Modify: `backend/app/models/models.py`, `backend/app/models/research_donation.py`
|
||||
|
||||
- [ ] **Step 1:** 执行 DDL(两表对称)
|
||||
|
||||
```sql
|
||||
ALTER TABLE `biz_protocol_sample`
|
||||
ADD COLUMN `is_special` tinyint(4) NOT NULL DEFAULT 0 COMMENT '是否特殊样本:0否 1是' AFTER `storage_expire_date`,
|
||||
ADD COLUMN `special_remark` varchar(256) DEFAULT NULL COMMENT '特殊说明' AFTER `is_special`;
|
||||
|
||||
ALTER TABLE `biz_research_donation_sample`
|
||||
ADD COLUMN `is_special` tinyint(4) NOT NULL DEFAULT 0 COMMENT '是否特殊样本:0否 1是' AFTER `storage_expire_date`,
|
||||
ADD COLUMN `special_remark` varchar(256) DEFAULT NULL COMMENT '特殊说明' AFTER `is_special`;
|
||||
```
|
||||
|
||||
- [ ] **Step 2:** ORM 增加 `is_special = Column(SmallInteger...)` 与 `special_remark = Column(String(256)...)`
|
||||
|
||||
---
|
||||
|
||||
## Task 2: 后端工具与核心 CRUD
|
||||
|
||||
**Files:**
|
||||
- Create: `backend/app/utils/sample_special.py`
|
||||
- Modify: `backend/app/crud/collection_protocol.py`, `backend/app/crud/research_donation.py`
|
||||
|
||||
- [ ] **Step 1:** 创建工具函数
|
||||
|
||||
```python
|
||||
def sample_special_to_dict(sample) -> Dict[str, Any]: ...
|
||||
def validate_sample_special_raw(raw: dict, *, index: Optional[int] = None) -> None: ...
|
||||
def apply_sample_special_fields(obj, raw: dict) -> None: ...
|
||||
```
|
||||
|
||||
- [ ] **Step 2:** `_sample_to_dict` 增加 `isSpecial` / `specialRemark`
|
||||
|
||||
- [ ] **Step 3:** `save_samples` / `_create_samples` 循环内调用 `validate_sample_special_raw` + `apply_sample_special_fields`
|
||||
|
||||
- [ ] **Step 4:** `research_donation.py` 转存储复制 `is_special`、`special_remark`
|
||||
|
||||
- [ ] **Step 5:** `collection_protocol.py` 列表 `sampleItems` 构建补字段
|
||||
|
||||
---
|
||||
|
||||
## Task 3: 下游 CRUD API
|
||||
|
||||
**Files:** `sample_reception.py`, `protocol_sample_collection.py`, `research_donation_sample_collection.py`, `pre_transit_sample.py`, `qc_work_order.py`, `storage_release_review.py`, `cell_product.py`
|
||||
|
||||
- [ ] **Step 1:** 凡已有 `BizProtocolSample` / `BizResearchDonationSample` 对象处,`item.update(sample_special_to_dict(sample))`
|
||||
|
||||
- [ ] **Step 2:** `qc_work_order._enrich_work_order_list_items` 在 `sampleTypeName` 赋值后补 special 字段(覆盖质检+生产工单)
|
||||
|
||||
---
|
||||
|
||||
## Task 4: 前端公共组件与录入
|
||||
|
||||
**Files:**
|
||||
- Create: `web-admin/src/components/business/special-sample-display/index.vue`
|
||||
- Modify: `web-admin/src/components/business/sample-transport-form-section/index.vue`
|
||||
|
||||
- [ ] **Step 1:** 创建 `SpecialSampleDisplay`(`v-if="isSpecial"`,danger 色加粗)
|
||||
|
||||
- [ ] **Step 2:** 样本子弹窗增加 checkbox + textarea;取消勾选清空说明
|
||||
|
||||
- [ ] **Step 3:** `confirmSampleDialog` 校验:`isSpecial && !specialRemark.trim()` → warning
|
||||
|
||||
- [ ] **Step 4:** 列表增加「特殊样本」列;`openAddSampleDialog` 初始化 `isSpecial: false, specialRemark: ''`
|
||||
|
||||
- [ ] **Step 5:** `normalizeSampleRow` 保留 `isSpecial` / `specialRemark`
|
||||
|
||||
---
|
||||
|
||||
## Task 5: 协议查看弹窗
|
||||
|
||||
**Files:** `ProtocolViewDialog.vue`, `DonationViewDialog.vue`
|
||||
|
||||
- [ ] **Step 1:** 样本卡片 header inline 展示 `SpecialSampleDisplay`
|
||||
|
||||
---
|
||||
|
||||
## Task 6: 下游展示页面(P1 全量)
|
||||
|
||||
在样本编码列/标题行旁接入 `SpecialSampleDisplay`:
|
||||
|
||||
- [ ] `ProtocolAuditTab.vue`, `PreTransitProtocolCardList.vue`
|
||||
- [ ] `research-donation/audit/index.vue`
|
||||
- [ ] `SampleCollectionInfoTab.vue`, `DonationSampleCollectionInfoTab.vue`
|
||||
- [ ] `sample-reception/index.vue`, `SampleReceptionCardList.vue`
|
||||
- [ ] `QcWorkOrderProtocolGroup.vue`, `QcWorkOrderSampleGroup.vue`, `QcWorkOrderTaskSubList.vue`
|
||||
- [ ] `storage-release-review/index.vue`, `StorageReleaseReviewDialog.vue`, `StorageReleaseViewDialog.vue`
|
||||
- [ ] `ProductionWorkOrderCardList.vue`, `SampleReceptionDialog.vue`, `DispatchTaskDialog.vue`
|
||||
- [ ] `SampleCustomerViewDialog.vue`
|
||||
|
||||
---
|
||||
|
||||
## Task 7: 验证
|
||||
|
||||
- [ ] 本地执行 `docs/sql/migrate-special-sample-mark.sql`
|
||||
- [ ] `python scripts/check_field_consistency.py`
|
||||
- [ ] `./scripts/update-graph.sh frontend` + `backend`
|
||||
- [ ] 手工:协议单录入特殊样本 → 查看弹窗 → 样本接收/质检卡片可见红色标记
|
||||
|
||||
---
|
||||
|
||||
## 部署前
|
||||
|
||||
1. 执行 `docs/sql/migrate-special-sample-mark.sql`
|
||||
2. 重启 backend
|
||||
3. 刷新 web-admin
|
||||
@@ -0,0 +1,234 @@
|
||||
# 附件上传支持拖拽 — 功能设计文档
|
||||
|
||||
> 日期:2026-07-01
|
||||
> 状态:待实现
|
||||
> 需求来源:客户希望在保留「点击选择文件」的前提下,增加「拖拽文件到上传区」能力
|
||||
> 已确认范围:**方案 1** — 仅附件类上传(类型 A + B + C);Logo/商品媒体/头像等(类型 D、E)留二期
|
||||
|
||||
---
|
||||
|
||||
## 1. 背景与目标
|
||||
|
||||
### 1.1 背景
|
||||
|
||||
`web-admin` 中约 30 个页面/组件使用 `fetchUploadAttachment` 实现附件上传,UI 以 OpenSpec「附件上传卡片化布局」为准(权威参考:`ProtocolFormDialog.vue`「协议附件」)。当前均仅支持点击 140×96 上传卡片触发文件选择,不支持拖拽。
|
||||
|
||||
### 1.2 目标
|
||||
|
||||
1. 在**不改变**现有点击上传交互的前提下,为方案 1 范围内所有上传区增加拖拽落文件能力。
|
||||
2. 拖拽与点击共用同一套上传逻辑(校验 → 占位 → `fetchUploadAttachment` → 回填/失败移除)。
|
||||
3. 按业务域**分批独立改造**,每批改完可单独回归,降低全站一次性改动风险。
|
||||
|
||||
### 1.3 非目标(一期不做)
|
||||
|
||||
- 单图/Logo 按钮上传(快递 Logo、站点图片、机构 Logo 等)
|
||||
- 商品主图/轮播/详情媒体(`system/product`)
|
||||
- 订单取消佐证 `picture-card`、用户头像
|
||||
- 后端 API 变更
|
||||
- 抽成全站统一 `AttachmentUploadField` 组件(本期各页独立加 drop 能力,避免大范围重构)
|
||||
- 文件夹拖拽、剪贴板粘贴上传
|
||||
|
||||
---
|
||||
|
||||
## 2. 改造范围清单
|
||||
|
||||
### 2.1 类型 A — 页面内联卡片化附件(22 文件,约 33 个上传区)
|
||||
|
||||
| ID | 文件 | 上传区数 | 说明 |
|
||||
|----|------|----------|------|
|
||||
| A1 | `web-admin/src/views/cell-storage/protocol/ProtocolFormDialog.vue` | 2 | 协议附件、缴费凭证(`upload-card--sm`) |
|
||||
| A2 | `web-admin/src/views/cell-storage/protocol-audit/PaymentInfoTab.vue` | 2 | 上传凭证、上传附件 |
|
||||
| A3 | `web-admin/src/views/cell-storage/protocol-audit/StorageCertTab.vue` | 1 | 储存证附件 |
|
||||
| A4 | `web-admin/src/views/cell-storage/protocol-audit/FullmoonTodoTab.vue` | 1 | 附件 |
|
||||
| A5 | `web-admin/src/views/research-donation/list/DonationFormDialog.vue` | 2 | 两处附件 |
|
||||
| A6 | `web-admin/src/views/quality-inspection/env-detect-record/index.vue` | 1 | 检测附件 |
|
||||
| A7 | `web-admin/src/views/quality-inspection/storage-release-review/StorageReleaseReviewDialog.vue` | 1 | 审核附件 |
|
||||
| A8 | `web-admin/src/views/production/sop/index.vue` | 1 | SOP 附件 |
|
||||
| A9 | `web-admin/src/views/production/cell-product/index.vue` | 1 | 产品图片(卡片布局) |
|
||||
| A10 | `web-admin/src/views/pilot-service/channel/index.vue` | 1 | 渠道协议附件 |
|
||||
| A11 | `web-admin/src/views/pilot-service/channel/ChannelServiceOrderTab.vue` | 2 | 充值/退款附件 |
|
||||
| A12 | `web-admin/src/views/pilot-service/channel-service-order/ServiceOrderTxnDialog.vue` | 1 | 流水附件 |
|
||||
| A13 | `web-admin/src/views/pilot-service/channel-service-order-finance/index.vue` | 1 | 财务确认附件 |
|
||||
| A14 | `web-admin/src/views/pilot-service/clinical-payment-confirm/index.vue` | 2 | 附件 ×2 |
|
||||
| A15 | `web-admin/src/views/pilot-service/clinical-payment-confirm/RefundConfirmTab.vue` | 2 | 附件 ×2 |
|
||||
| A16 | `web-admin/src/views/pilot-service/pilot-application/ApplicationFormDialog.vue` | 4 | 知情同意/诊断等 |
|
||||
| A17 | `web-admin/src/views/pilot-service/pilot-application/ApplicationDetailDialog.vue` | 5 | 诊断/交付等(含非标准 `attachment-trigger-card` 样式,需对齐 drop 区) |
|
||||
| A18 | `web-admin/src/views/pilot-service/pilot-application/ClinicalPaymentTab.vue` | 2 | 附件、退费附件 |
|
||||
| A19 | `web-admin/src/views/pilot-service/outbound-release-review/OutboundReleaseReviewDialog.vue` | 1 | 审核附件 |
|
||||
| A20 | `web-admin/src/views/pilot-service/infusion-schedule-management/InfusionScheduleHandoverDialog.vue` | 1 | 交接附件(与 C 类物料区并存) |
|
||||
| A21 | `web-admin/src/views/pilot-service/checkup-management/CheckupDetailDialog.vue` | 1 | 上传报告 |
|
||||
| A22 | `web-admin/src/views/pilot-service/checkup-management/CheckupMarkCheckedDialog.vue` | 1 | 上传报告 |
|
||||
|
||||
### 2.2 类型 B — `ProtocolFinanceConfirmFields` 共享组件(1 组件 + 6 消费页,约 8 个上传区)
|
||||
|
||||
| ID | 文件 | 上传区数 | 说明 |
|
||||
|----|------|----------|------|
|
||||
| B0 | `web-admin/src/components/business/protocol-finance-confirm-fields/index.vue` | 1 | **改组件即覆盖下列引用** |
|
||||
| B1 | `web-admin/src/views/quality-inspection/sample-reception/index.vue` | 2 | 单条接收 + 批量接收 |
|
||||
| B2 | `web-admin/src/views/cell-storage/payment-confirm/index.vue` | 1 | 确认收款附件 |
|
||||
| B3 | `web-admin/src/views/cell-storage/payment-confirm/RefundConfirmTab.vue` | 1 | 退费财务附件 |
|
||||
| B4 | `web-admin/src/views/cell-storage/payment-confirm/InvoiceRequestTab.vue` | 1 | 开票附件 |
|
||||
| B5 | `web-admin/src/views/production/production-work-order/TaskPaperAttachmentsPanel.vue` | 1 | 线下纸质文档 |
|
||||
| B6 | `web-admin/src/views/quality-inspection/qc-material/QcMaterialBatchAttachmentDialog.vue` | 1 | 质检附件 |
|
||||
|
||||
### 2.3 类型 C — 表格行内纸质材料(2 文件)
|
||||
|
||||
| ID | 文件 | 说明 |
|
||||
|----|------|------|
|
||||
| C1 | `web-admin/src/components/business/outbound-material-form-sections/index.vue` | 出库/交接物料弹窗复用;每行 `paper-att-card--trigger` |
|
||||
| C2 | `web-admin/src/views/pilot-service/outbound-release-review/OutboundReleaseMaterialDialog.vue` | 独立实现同类行内上传,需与 C1 同步改法 |
|
||||
|
||||
**引用 C1 的页面(改 C1 后需回归)**:`OutboundReleaseMaterialDialog.vue`、`InfusionScheduleHandoverDialog.vue`(物料区)。
|
||||
|
||||
### 2.4 二期范围(本期不改)
|
||||
|
||||
类型 D(8 文件):`express`、`site`、`clean-room`、`cell-sample-type`、`insurance-company`、`checkup-institution`、`ThirdPartyCompanyTab`、`category`。
|
||||
|
||||
类型 E(3 文件):`system/product`、`system/order`、`UserProfileDialog`。
|
||||
|
||||
---
|
||||
|
||||
## 3. 交互与视觉规范
|
||||
|
||||
### 3.1 Drop Zone 范围
|
||||
|
||||
| 类型 | Drop Zone 元素 | 说明 |
|
||||
|------|----------------|------|
|
||||
| A / B | `.attachment-upload` 根容器 | 包含 `.attachment-list`(上传卡片 + 已传附件卡片)及下方 `.upload-hint` 所在整块区域 |
|
||||
| C | 该行 `.paper-att-list` 或附件 cell 容器 | 行内空间较小,drop 高亮仅作用于当前行的附件列表 flex 区 |
|
||||
|
||||
**不采用** Element Plus `el-upload` 的 `drag` 大区域模式(会替换 slot、破坏 140×96 卡片布局)。
|
||||
|
||||
### 3.2 拖拽态视觉
|
||||
|
||||
在 `.attachment-upload` 上增加修饰类 `.is-dragover`(类型 C 对应 `.paper-att-list.is-dragover`):
|
||||
|
||||
- `border: 1px dashed #10b981`
|
||||
- `background: #ecfdf5`
|
||||
- `border-radius: 8px`
|
||||
- 可选:`padding: 8px`(仅 dragover 时,避免布局跳动用 `outline` 或 `box-shadow` 代替 padding 亦可)
|
||||
|
||||
`.upload-hint` 默认文案追加:**「支持拖拽或点击上传」**(保留原有格式/大小限制说明)。
|
||||
|
||||
### 3.3 行为规则
|
||||
|
||||
1. **dragenter / dragover**:`preventDefault()`,设置 `is-dragover = true`(需在 `dragleave` 时判断 `relatedTarget` 仍在容器内再清除,避免闪烁)。
|
||||
2. **drop**:`preventDefault()`,清除 `is-dragover`,读取 `event.dataTransfer.files`。
|
||||
3. **多文件**:按文件顺序逐个调用与 `@change` 相同的上传处理(与 `:multiple="true"` 一致)。
|
||||
4. **校验**:单文件 ≤ 20MB、`accept` 类型与现有点击上传一致;失败项 `ElMessage.error` 并跳过,不影响其他文件。
|
||||
5. **重复文件**:与点击上传相同,依赖现有 `clearFiles` / 数组 push 逻辑。
|
||||
6. **上传中**:dragover 期间若存在 `_uploading`,仍允许 drop(排队上传);提交拦截逻辑不变。
|
||||
7. **禁用/只读**:只读态(如 `TaskPaperAttachmentsPanel` 的 `disabled`)不绑 drop 事件。
|
||||
|
||||
### 3.4 与 OpenSpec 关系
|
||||
|
||||
实现后 SHALL 在 `openspec/changes/zkxw-engineering-standards/specs/ui-conventions/spec.md`「附件上传卡片化布局」章节补充:
|
||||
|
||||
- Drop zone 为 `.attachment-upload`
|
||||
- `.is-dragover` 视觉
|
||||
- `.upload-hint` 文案含「拖拽或点击」
|
||||
- 表格行内纸质材料 drop 区约定
|
||||
|
||||
---
|
||||
|
||||
## 4. 技术方案
|
||||
|
||||
### 4.1 推荐:轻量 composable + 各页独立挂载
|
||||
|
||||
新增 `web-admin/src/composables/useAttachmentDropZone.ts`(仅工具,非 UI 组件):
|
||||
|
||||
```ts
|
||||
// 伪代码示意
|
||||
export function useAttachmentDropZone(options: {
|
||||
onFiles: (files: File[]) => void
|
||||
disabled?: Ref<boolean>
|
||||
}) {
|
||||
const isDragover = ref(false)
|
||||
// dragenter, dragleave, dragover, drop handlers
|
||||
return { isDragover, dropZoneHandlers }
|
||||
}
|
||||
```
|
||||
|
||||
各页在 `.attachment-upload` 上:
|
||||
|
||||
```vue
|
||||
<div
|
||||
class="attachment-upload"
|
||||
:class="{ 'is-dragover': isDragover }"
|
||||
v-bind="dropZoneHandlers"
|
||||
>
|
||||
```
|
||||
|
||||
`onFiles` 内对每个 `File` 调用现有 `handleAttachmentChange({ raw: file })` 或等价函数。
|
||||
|
||||
**理由**:满足「每处独立修改」——各文件显式挂载 composable,diff 清晰;逻辑 DRY 但不引入新 Vue 组件,回归面可控。
|
||||
|
||||
### 4.2 类型 B 实施策略
|
||||
|
||||
改 `ProtocolFinanceConfirmFields` **一处**,对 B1–B6 做**全量回归**(视为独立一批 PR,不与 A 类混在同一 PR)。
|
||||
|
||||
### 4.3 类型 C 实施策略
|
||||
|
||||
在 `handlePaperAttachmentChange` 同级增加 drop 处理;drop zone 为行级 `.paper-att-list`。C1、C2 同批修改,并回归出库物料弹窗与输注交接弹窗。
|
||||
|
||||
### 4.4 全局样式(可选)
|
||||
|
||||
若多页重复 `.is-dragover` 样式,可在 `web-admin/src/assets/styles/core/app.scss` 增加:
|
||||
|
||||
```scss
|
||||
.attachment-upload.is-dragover { ... }
|
||||
.paper-att-list.is-dragover { ... }
|
||||
```
|
||||
|
||||
各页 scoped 样式可省略重复定义。
|
||||
|
||||
---
|
||||
|
||||
## 5. 分批实施顺序
|
||||
|
||||
| 批次 | 范围 | 文件数 | 验收重点 |
|
||||
|------|------|--------|----------|
|
||||
| **0** | composable + 全局 dragover 样式 + OpenSpec 补充 | 2–3 | 单元/手工验证 composable |
|
||||
| **1 试点** | A1 `ProtocolFormDialog` | 1 | 定稿交互,2 个上传区 |
|
||||
| **2 细胞存储** | A2–A5 + B0 + B2–B4 | 6 + 组件 | 协议审核、付款确认、捐赠 |
|
||||
| **3 质检** | A6–A7 + B1 + B6 | 4 + 组件已含 | 样本接收、环境检测、放行 |
|
||||
| **4 中试上** | A10–A15 | 6 | 渠道、临床付款确认 |
|
||||
| **5 中试下** | A16–A22 + C1–C2 | 9 + 2 | 临床申请、出库、体检、纸质材料 |
|
||||
| **6 生产** | A8–A9 + B5 | 3 | SOP、细胞产品、工单纸质文档 |
|
||||
|
||||
每批:**仅改该批文件 → 手工测试 → 合并**,再进入下一批。
|
||||
|
||||
---
|
||||
|
||||
## 6. 测试要点(每批通用)
|
||||
|
||||
| 场景 | 预期 |
|
||||
|------|------|
|
||||
| 点击上传卡片选 1 个文件 | 与改前一致 |
|
||||
| 拖拽 1 个合法文件到 upload 区 | 出现占位卡片 → 上传成功 → 可预览/下载/删除 |
|
||||
| 拖拽多个文件 | 全部入队上传 |
|
||||
| 拖拽超大文件(>20MB) | 提示错误,不上传 |
|
||||
| 拖拽不支持类型 | 浏览器/业务校验拒绝或跳过 |
|
||||
| dragover 视觉 | 进入区域高亮,离开恢复 |
|
||||
| 上传中提交表单 | 仍提示「附件上传中,请稍候」 |
|
||||
| 只读/禁用 | 无 drop 响应 |
|
||||
|
||||
---
|
||||
|
||||
## 7. 风险与缓解
|
||||
|
||||
| 风险 | 缓解 |
|
||||
|------|------|
|
||||
| 多文件 drop 与 `@change` 并发竞态 | 复用 `ProtocolFinanceConfirmFields` 已有 `_pendingList` 模式;A 类页面若存在竞态可参考 |
|
||||
| `ApplicationDetailDialog` 样式不统一 | 该页单独测试 5 个上传区 |
|
||||
| C1/C2 行内区域过小 | drop 高亮整行附件 flex 区,不要求拖到小卡片上 |
|
||||
| 浏览器 dragleave 闪烁 | composable 内 counter 或 `relatedTarget` 检查 |
|
||||
|
||||
---
|
||||
|
||||
## 8. 相关文档
|
||||
|
||||
- OpenSpec:`openspec/changes/zkxw-engineering-standards/specs/ui-conventions/spec.md` §附件上传卡片化布局
|
||||
- UI 规范:`docs/web-admin-ui-spec-fresh-mint.md`
|
||||
- 权威参考页:`web-admin/src/views/cell-storage/protocol/ProtocolFormDialog.vue`
|
||||
- 实施计划:`docs/superpowers/plans/2026-07-01-attachment-drag-upload.md`
|
||||
@@ -0,0 +1,193 @@
|
||||
# 质检工单批量导出任务附件 — 设计文档
|
||||
|
||||
> 日期:2026-07-01
|
||||
> 状态:待实现
|
||||
> 范围:`web-admin` 【质检工单】【我的质检任务】
|
||||
> 已确认:**方案 A — 纯前端 JSZip 打包下载**
|
||||
> 已确认:导出过程需**可见进度反馈**(任务较慢)
|
||||
|
||||
---
|
||||
|
||||
## 1. 背景与目标
|
||||
|
||||
### 1.1 业务需求
|
||||
|
||||
用户在【质检工单】或【我的质检任务】中勾选一条或多条质检工单,将该工单下**所有检测批次、所有质检任务**的附件打包为 ZIP 下载。
|
||||
|
||||
目录结构:
|
||||
|
||||
```
|
||||
{工单}/
|
||||
{批次}/
|
||||
{任务}/
|
||||
附件文件…
|
||||
```
|
||||
|
||||
### 1.2 目标
|
||||
|
||||
1. 工单卡片支持多选(checkbox)。
|
||||
2. 工具栏提供「导出附件」按钮(`btn-ghost` + Download 图标)。
|
||||
3. 浏览器端聚合附件、按层级建目录、生成 ZIP 并触发下载。
|
||||
4. 导出过程展示**进度弹窗**(阶段 + 百分比 + 当前文件名),避免用户误以为卡死。
|
||||
|
||||
### 1.3 非目标(一期不做)
|
||||
|
||||
- 后端流式 ZIP / 异步任务中心
|
||||
- 跨分页保留勾选
|
||||
- 工单级其他附件(诊断附件、样本接收附件等)
|
||||
- 【我的质检任务】仅导出「本人负责任务」的子集模式(与 manage 一致,导出工单下全部任务附件)
|
||||
|
||||
---
|
||||
|
||||
## 2. 技术方案
|
||||
|
||||
### 2.1 方案选定:纯前端 JSZip
|
||||
|
||||
| 步骤 | 说明 |
|
||||
|------|------|
|
||||
| 1 | 收集已选 `workOrderId[]` |
|
||||
| 2 | `POST /web/admin/qc-work-orders/inspection-batches/batch` 获取批次及内嵌 `tasks[].attachmentFiles` |
|
||||
| 3 | 扁平化附件清单,计算 ZIP 内路径 |
|
||||
| 4 | 逐个 `fetchAttachmentBlob`(预签名 URL)写入 JSZip |
|
||||
| 5 | `zip.generateAsync({ type: 'blob' }, onUpdate)` 生成压缩包 |
|
||||
| 6 | `FileSaver.saveAs` 下载 |
|
||||
|
||||
依赖:`jszip`、`file-saver`(已存在于 `package.json`)。
|
||||
|
||||
### 2.2 附件数据来源
|
||||
|
||||
- 表字段:`biz_qc_task.third_party_attachments`(逗号分隔 URL)
|
||||
- API 字段:`attachmentFiles`(含 `fileUrl`、`fileName`)
|
||||
- 实验室自检与第三方检测共用该字段
|
||||
|
||||
### 2.3 目录命名
|
||||
|
||||
| 层级 | 规则 |
|
||||
|------|------|
|
||||
| 工单 | `{workOrderNo}`;若重名追加 `_样本{sampleCode}` 等短标识 |
|
||||
| 批次 | `{batchNo}_{batchName}`;无 `batchNo` 时用 `批次{orderNum}` |
|
||||
| 任务 | `{taskNo}_{itemName}` |
|
||||
| 文件 | 优先 `fileName`;同目录重名用 `(2)` 后缀 |
|
||||
|
||||
无附件的任务/批次不创建空目录。所选工单均无附件时提示「所选工单暂无附件」。
|
||||
|
||||
### 2.4 安全与权限
|
||||
|
||||
- 批次批量接口已受 `QC_TASK_READONLY_MENU_CODES` 与租户隔离约束。
|
||||
- 两菜单共用实现;导出范围为工单下**全部任务**附件(非仅当前用户任务)。
|
||||
|
||||
---
|
||||
|
||||
## 3. 进度弹窗 UX(核心补充)
|
||||
|
||||
环境检测页的「批量下载附件」仅按钮 `loading`,无细粒度进度。本功能附件量大、耗时长,**必须**使用独立进度弹窗。
|
||||
|
||||
### 3.1 组件
|
||||
|
||||
新建:`web-admin/src/components/business/attachment-zip-progress-dialog/index.vue`
|
||||
|
||||
- `el-dialog`,`append-to-body`,`modal-class="protocol-dialog-mask"`(无背景模糊)
|
||||
- `close-on-click-modal="false"`,`show-close="false"`(进行中不可点遮罩关闭)
|
||||
- 宽度约 `480px`,单栏居中
|
||||
|
||||
### 3.2 三阶段进度
|
||||
|
||||
整体进度条 `0–100%`,按阶段加权:
|
||||
|
||||
| 阶段 | 权重 | 说明 |
|
||||
|------|------|------|
|
||||
| `preparing` | 0–5% | 请求批次/任务元数据 |
|
||||
| `downloading` | 5–85% | 逐个拉取附件 blob 并 `zip.file()` |
|
||||
| `zipping` | 85–100% | `generateAsync` 压缩(使用 JSZip `metadata.percent`) |
|
||||
|
||||
展示文案示例:
|
||||
|
||||
- 准备中:正在加载工单附件清单…
|
||||
- 下载中:正在下载附件(12/48)— `报告.pdf`
|
||||
- 压缩中:正在生成压缩包…
|
||||
|
||||
副文案:当前工单 `ZJGD…` / 批次 `首批检测`(可选,简短一行 `text-muted`)。
|
||||
|
||||
### 3.3 进度条
|
||||
|
||||
- `el-progress`:`stroke-width="8"`,`:percentage="overallPercent"`,`:status` 完成时 `success`
|
||||
- 数字百分比与「已完成 N / 共 M 个文件」并列
|
||||
|
||||
### 3.4 完成与失败
|
||||
|
||||
| 结果 | 行为 |
|
||||
|------|------|
|
||||
| 全部成功 | 进度 100%,状态 success,1s 后自动关闭弹窗;`ElMessage.success('已打包下载 N 个附件')` |
|
||||
| 部分失败 | 仍生成 ZIP(跳过失败项);关闭后 `ElMessage.warning('已下载 N 个,M 个失败')` |
|
||||
| 全部失败 | 不下载;`ElMessage.error('附件下载失败,请稍后重试')` |
|
||||
| 无附件 | 不打开进度弹窗;`ElMessage.warning('所选工单暂无附件')` |
|
||||
|
||||
### 3.5 取消
|
||||
|
||||
- 底部提供「取消」按钮(`Close` 图标 + 文案)
|
||||
- 使用 `AbortController` 中断进行中的 `fetch`;设置 `cancelled` 标志跳过后续文件
|
||||
- 取消后关闭弹窗,`ElMessage.info('已取消导出')`
|
||||
- 已写入 ZIP 的 blob 丢弃,不触发 `saveAs`
|
||||
|
||||
### 3.6 并发与性能
|
||||
|
||||
- 附件下载**串行**(与环境检测一致),避免浏览器连接数耗尽;进度更准确
|
||||
- 可选:限制单次最多 **50 个工单** 或 **500 个文件**,超出时 `ElMessageBox.confirm` 二次确认
|
||||
|
||||
---
|
||||
|
||||
## 4. 页面改动
|
||||
|
||||
### 4.1 勾选
|
||||
|
||||
在 `QcWorkOrderSingleCard` 卡片头部左侧增加 `el-checkbox`:
|
||||
|
||||
- `QcWorkOrderProtocolGroup` / `QcWorkOrderSampleGroup` 内每张工单卡片各自可勾选
|
||||
- 状态由 `QcWorkOrderTabPanel` 持有:`selectedWorkOrderIds: Set<string>`
|
||||
- 翻页或重新搜索时清空选择
|
||||
|
||||
### 4.2 工具栏
|
||||
|
||||
`QcWorkOrderTabPanel.vue` 在卡片列表上方增加(manage / mine 均显示):
|
||||
|
||||
```
|
||||
已选 N 项 | [导出附件](btn-ghost,N=0 时 disabled)
|
||||
```
|
||||
|
||||
### 4.3 逻辑抽离
|
||||
|
||||
| 文件 | 职责 |
|
||||
|------|------|
|
||||
| `@/utils/attachment-zip.ts` | 从 `env-detect-record` 抽出 `fetchAttachmentBlob`、`ensureUniqueZipEntryName`、`sanitizeZipPathSegment` |
|
||||
| `@/utils/qc-work-order-attachment-export.ts` | 构建导出清单、ZIP 路径、`runQcWorkOrderAttachmentExport()` |
|
||||
| `attachment-zip-progress-dialog` | 进度 UI |
|
||||
| `useQcWorkOrderAttachmentExport.ts` | 组合 API + 进度回调 + 弹窗显隐 |
|
||||
|
||||
---
|
||||
|
||||
## 5. 接口
|
||||
|
||||
一期**不新增**后端接口,复用:
|
||||
|
||||
- `POST /web/admin/qc-work-orders/inspection-batches/batch`
|
||||
- `POST /web/admin/attachment/download-url`
|
||||
|
||||
---
|
||||
|
||||
## 6. 测试要点
|
||||
|
||||
| # | 场景 | 预期 |
|
||||
|---|------|------|
|
||||
| 1 | 勾选 1 个工单,含多批次多任务附件 | ZIP 目录三层正确,文件可打开 |
|
||||
| 2 | 勾选多个工单 | 根目录下多个工单文件夹 |
|
||||
| 3 | 工单无附件 | 提示暂无附件,不弹进度窗 |
|
||||
| 4 | 导出中取消 | 中断下载,无文件落盘 |
|
||||
| 5 | 单个文件 404 | 其余正常打包,warning 提示失败数 |
|
||||
| 6 | 【我的质检任务】与【质检工单】 | 行为一致 |
|
||||
| 7 | 协议组 / 样本组 | 各工单独立勾选、导出 |
|
||||
|
||||
---
|
||||
|
||||
## 7. 后续演进
|
||||
|
||||
若生产反馈单次导出经常超过 500 文件或超时,再评估**方案 B**(后端 `StreamingResponse` ZIP)并保留相同目录规范与进度语义(改为轮询任务状态)。
|
||||
@@ -0,0 +1,293 @@
|
||||
# 样本特殊标记与特殊说明
|
||||
|
||||
> 日期:2026-07-01
|
||||
> 状态:待审核
|
||||
> 关联:`2026-05-19-protocol-donation-convert-design.md`(捐赠转细胞存储样本复制)
|
||||
> 关联模块:采集协议单、捐赠协议单、样本信息、质检、生产、入库审核
|
||||
|
||||
---
|
||||
|
||||
## 1. 背景与目标
|
||||
|
||||
### 1.1 业务诉求
|
||||
|
||||
在**采集协议单**与**捐赠协议单**的样本信息中,增加「特殊样本」标记及「特殊说明」文本字段。例如样本为小三阳时:勾选特殊样本,特殊说明填写「小三阳」。
|
||||
|
||||
凡展示样本数据的界面,若该样本为特殊样本,须**醒目展示**:
|
||||
|
||||
- 红色加粗 **【特殊样本】**
|
||||
- 红色加粗 **特殊说明** 内容
|
||||
|
||||
### 1.2 目标
|
||||
|
||||
1. 两种协议单的样本录入弹窗支持维护 `isSpecial` + `specialRemark`。
|
||||
2. 勾选特殊样本时,特殊说明**必填**(已确认:选项 A)。
|
||||
3. 所有 web-admin 展示样本数据的页面/弹窗/卡片,特殊样本信息只读展示,样式统一。
|
||||
4. 捐赠转细胞存储时,特殊标记随样本复制到新 `biz_protocol_sample` 行。
|
||||
5. 历史数据默认非特殊样本,兼容现有流程。
|
||||
|
||||
### 1.3 非目标(本期不做)
|
||||
|
||||
- 小程序端展示
|
||||
- 按特殊样本筛选列表
|
||||
- 导出 Excel 增加特殊说明列
|
||||
- 下游业务表(接收、质检工单等)冗余存储特殊字段
|
||||
|
||||
---
|
||||
|
||||
## 2. 业务规则
|
||||
|
||||
### 2.1 字段语义
|
||||
|
||||
| 字段 | API 名 | 类型 | 说明 |
|
||||
|------|--------|------|------|
|
||||
| 特殊样本标记 | `isSpecial` | `boolean` | `true` 表示特殊样本 |
|
||||
| 特殊说明 | `specialRemark` | `string` | 自由文本,如「小三阳」 |
|
||||
|
||||
与现有 `remark`(普通备注)**语义分离**:`remark` 为通用备注;`specialRemark` 为结构化警示说明,仅在 `isSpecial=true` 时有效。
|
||||
|
||||
### 2.2 校验规则(已确认)
|
||||
|
||||
| 条件 | 规则 |
|
||||
|------|------|
|
||||
| `isSpecial = true` | `specialRemark` **必填**,trim 后非空,最大 256 字符 |
|
||||
| `isSpecial = false` | `specialRemark` 保存时**清空**为 `null` / 空字符串 |
|
||||
| 未勾选却填写了说明 | 前端保存前清空;后端以 `isSpecial` 为准,忽略 `specialRemark` |
|
||||
|
||||
前后端均须校验;后端为最终门禁。
|
||||
|
||||
### 2.3 编辑与展示
|
||||
|
||||
- **可编辑**:采集/捐赠协议单新增、编辑样本(`SampleTransportFormSection` 子弹窗)。
|
||||
- **只读展示**:协议查看弹窗、下游质检/生产/接收等所有样本展示位。
|
||||
- **编辑时机**:协议单保存样本时一并持久化;下游模块通过 JOIN 源样本表读取最新值。
|
||||
|
||||
### 2.4 捐赠转细胞存储
|
||||
|
||||
`research_donation.py` 复制 `BizResearchDonationSample` → `BizProtocolSample` 时,须同步复制:
|
||||
|
||||
- `is_special` ← 源样本 `is_special`
|
||||
- `special_remark` ← 源样本 `special_remark`
|
||||
|
||||
---
|
||||
|
||||
## 3. 数据模型
|
||||
|
||||
### 3.1 表结构变更
|
||||
|
||||
两张样本表**对称**增加字段(位于业务字段末尾、`tenant_no` 之前):
|
||||
|
||||
**`biz_protocol_sample`**
|
||||
|
||||
```sql
|
||||
ALTER TABLE `biz_protocol_sample`
|
||||
ADD COLUMN `is_special` tinyint(4) NOT NULL DEFAULT 0 COMMENT '是否特殊样本:0否 1是' AFTER `storage_expire_date`,
|
||||
ADD COLUMN `special_remark` varchar(256) DEFAULT NULL COMMENT '特殊说明' AFTER `is_special`;
|
||||
```
|
||||
|
||||
**`biz_research_donation_sample`**
|
||||
|
||||
```sql
|
||||
ALTER TABLE `biz_research_donation_sample`
|
||||
ADD COLUMN `is_special` tinyint(4) NOT NULL DEFAULT 0 COMMENT '是否特殊样本:0否 1是' AFTER `storage_expire_date`,
|
||||
ADD COLUMN `special_remark` varchar(256) DEFAULT NULL COMMENT '特殊说明' AFTER `is_special`;
|
||||
```
|
||||
|
||||
同步更新 `docs/sql/zkxw.sql` 基线。
|
||||
|
||||
### 3.2 ORM
|
||||
|
||||
- `backend/app/models/models.py` → `BizProtocolSample`
|
||||
- `backend/app/models/research_donation.py` → `BizResearchDonationSample`
|
||||
|
||||
### 3.3 API 字段(camelCase)
|
||||
|
||||
`_sample_to_dict` 统一输出:
|
||||
|
||||
```python
|
||||
"isSpecial": bool(s.is_special),
|
||||
"specialRemark": (s.special_remark or "").strip(),
|
||||
```
|
||||
|
||||
`save_samples` 写入时:
|
||||
|
||||
- `is_special = 1 if raw.get("isSpecial") else 0`
|
||||
- `special_remark` 仅在 `is_special=1` 时写入 trim 后文本,否则 `None`
|
||||
|
||||
---
|
||||
|
||||
## 4. 架构方案
|
||||
|
||||
### 4.1 选定方案:样本表唯一数据源 + 读取 JOIN
|
||||
|
||||
特殊标记仅存于 `biz_protocol_sample` / `biz_research_donation_sample`,下游模块在 list/detail API 中 JOIN 或复用已有样本查询补出 `isSpecial`、`specialRemark`。
|
||||
|
||||
**不**在 `biz_sample_reception`、`biz_qc_work_order` 等子表冗余。
|
||||
|
||||
### 4.2 后端改造模式
|
||||
|
||||
凡构建样本相关 dict 的位置,按 `_sample_to_dict` 模式补字段。重点文件:
|
||||
|
||||
| 文件 | 改动 |
|
||||
|------|------|
|
||||
| `crud/collection_protocol.py` | `_sample_to_dict`、`save_samples` |
|
||||
| `crud/research_donation.py` | `_sample_to_dict`、`save_samples`、转存储复制 |
|
||||
| `crud/protocol_sample_collection.py` | list item 构建 |
|
||||
| `crud/research_donation_sample_collection.py` | list item 构建 |
|
||||
| `crud/sample_reception.py` | 待接收/已接收/批量 list |
|
||||
| `crud/qc_work_order.py` | 工单 list/detail 中样本信息 |
|
||||
| `crud/production_work_order.py` | 同上 |
|
||||
| `crud/storage_release_review.py` | 入库审核 list/detail |
|
||||
| 转运前样本等相关 CRUD | 协议卡片内样本 list |
|
||||
|
||||
Pydantic Create/Update body 中 samples 数组项增加可选字段 `isSpecial`、`specialRemark`;后端 save 时校验。
|
||||
|
||||
运行 `python scripts/check_field_consistency.py` 验证 CRUD ↔ Schema ↔ 前端字段一致。
|
||||
|
||||
---
|
||||
|
||||
## 5. 前端设计
|
||||
|
||||
### 5.1 录入 UI — `SampleTransportFormSection`
|
||||
|
||||
**位置**:添加/编辑样本子弹窗,「样本状态」表单项之后。
|
||||
|
||||
**控件**:
|
||||
|
||||
1. `el-checkbox` — 标签「特殊样本」,绑定 `sampleDraft.isSpecial`
|
||||
2. `el-input` type="textarea" — 标签「特殊说明」,`:disabled="!sampleDraft.isSpecial"`,`maxlength=256`,`show-word-limit`
|
||||
|
||||
**交互**:
|
||||
|
||||
- 取消勾选 → 清空 `specialRemark`
|
||||
- 确定时:`isSpecial=true` 且 `specialRemark` 为空 → `ElMessage.warning` + 表单校验失败
|
||||
|
||||
**列表表格**:新增列「特殊样本」(`min-width` ≥ 120):
|
||||
|
||||
- 非特殊:显示 `—`
|
||||
- 特殊:inline 展示 `SpecialSampleDisplay` 组件内容
|
||||
|
||||
`createEmptySample()` / `sampleDraft` 初始化增加 `isSpecial: false`、`specialRemark: ''`。
|
||||
|
||||
采集协议单、捐赠协议单共用此组件,**改一处覆盖两种协议**。
|
||||
|
||||
### 5.2 展示 UI — 公共组件
|
||||
|
||||
新建 `web-admin/src/components/business/special-sample-display/index.vue`:
|
||||
|
||||
```vue
|
||||
<!-- props: isSpecial, specialRemark, layout?: 'inline' | 'block' -->
|
||||
<template v-if="isSpecial">
|
||||
<span class="special-sample-mark">【特殊样本】</span>
|
||||
<span v-if="specialRemark" class="special-sample-remark">{{ specialRemark }}</span>
|
||||
</template>
|
||||
```
|
||||
|
||||
样式(scoped + 可全局复用 class):
|
||||
|
||||
```scss
|
||||
.special-sample-mark,
|
||||
.special-sample-remark {
|
||||
color: var(--el-color-danger);
|
||||
font-weight: 700;
|
||||
}
|
||||
.special-sample-remark {
|
||||
margin-left: 4px;
|
||||
}
|
||||
```
|
||||
|
||||
- **非特殊样本**:组件不渲染任何 DOM(不占位、不显示「—」)。
|
||||
- **不使用 `el-tag`**:此为警示文本,非状态枚举。
|
||||
|
||||
### 5.3 查看弹窗
|
||||
|
||||
**`ProtocolViewDialog` / `DonationViewDialog`** 样本卡片:
|
||||
|
||||
- 卡片 header 标题行:样本类型名旁 inline 展示 `SpecialSampleDisplay`
|
||||
- 样本信息 data-grid:独立一行「特殊说明」(仅 `isSpecial` 时显示,block 布局)
|
||||
|
||||
### 5.4 下游展示接入点(P1 全量)
|
||||
|
||||
| 模块 | 文件 |
|
||||
|------|------|
|
||||
| 协议管理 | `ProtocolAuditTab.vue`、`PreTransitProtocolCardList.vue` |
|
||||
| 捐赠审核 | `research-donation/audit/index.vue` |
|
||||
| 样本采集信息 | `SampleCollectionInfoTab.vue`、`DonationSampleCollectionInfoTab.vue` |
|
||||
| 样本接收 | `sample-reception/index.vue`、`SampleReceptionCardList.vue` |
|
||||
| 质检工单 | `QcWorkOrderProtocolGroup.vue`、`QcWorkOrderSampleGroup.vue`、`QcWorkOrderTaskSubList.vue` |
|
||||
| 入库审核 | `storage-release-review/index.vue`、`StorageReleaseReviewDialog.vue`、`StorageReleaseViewDialog.vue` |
|
||||
| 生产工单 | `ProductionWorkOrderCardList.vue`、`SampleReceptionDialog.vue`、`DispatchTaskDialog.vue` 等 |
|
||||
| 溯源 | `SampleCustomerViewDialog.vue` |
|
||||
|
||||
**展示策略**:
|
||||
|
||||
1. 列表/卡片:**样本编码列或标题行**旁 inline 展示(最醒目)
|
||||
2. 详情弹窗:样本编码下方或信息区独立一行
|
||||
3. 统一使用 `SpecialSampleDisplay`,禁止各页复制样式
|
||||
|
||||
### 5.5 TypeScript 类型
|
||||
|
||||
`web-admin/src/types/api.d.ts` 中协议/捐赠样本相关类型补充 `isSpecial?: boolean`、`specialRemark?: string`。
|
||||
|
||||
---
|
||||
|
||||
## 6. 实施阶段
|
||||
|
||||
| 阶段 | 范围 | 交付标准 |
|
||||
|------|------|----------|
|
||||
| **P0** | DB + Model + 两协议 CRUD + 录入组件 + 两协议查看弹窗 | 可在协议单录入/查看特殊样本 |
|
||||
| **P1** | 公共展示组件 + 下游全部展示点 + 转存储复制 | 质检/生产/接收等链路可见红色警示 |
|
||||
| **P2**(可选) | 筛选、导出、小程序 | 产品另行排期 |
|
||||
|
||||
建议 P0、P1 **同一 PR 或连续 PR** 交付,避免下游看不到标记造成业务风险。
|
||||
|
||||
---
|
||||
|
||||
## 7. 测试要点
|
||||
|
||||
### 7.1 录入校验
|
||||
|
||||
- [ ] 勾选特殊样本、说明为空 → 前端拦截
|
||||
- [ ] 勾选特殊样本、说明为空 → 后端 API 返回 422/400
|
||||
- [ ] 未勾选、说明有值 → 保存后 `specialRemark` 为空
|
||||
- [ ] 说明超 256 字 → 校验失败
|
||||
|
||||
### 7.2 持久化
|
||||
|
||||
- [ ] 采集协议单编辑保存后 detail 回显正确
|
||||
- [ ] 捐赠协议单同上
|
||||
- [ ] 历史样本(无新字段)→ `isSpecial=false`
|
||||
|
||||
### 7.3 展示
|
||||
|
||||
- [ ] 协议查看弹窗:红色加粗【特殊样本】+ 说明
|
||||
- [ ] 非特殊样本:各页无多余占位
|
||||
- [ ] 样本接收、质检工单、生产工单卡片可见特殊标记
|
||||
|
||||
### 7.4 转存储
|
||||
|
||||
- [ ] 捐赠单特殊样本转细胞存储后,新采集协议单样本保留 `isSpecial` + `specialRemark`
|
||||
|
||||
### 7.5 字段一致性
|
||||
|
||||
- [ ] `python scripts/check_field_consistency.py` 通过
|
||||
|
||||
---
|
||||
|
||||
## 8. 风险与约束
|
||||
|
||||
1. **双表对称**:采集与捐赠样本表、CRUD、UI 须同步改动,避免只改一侧。
|
||||
2. **改动面大**:下游展示点 15+,须用公共组件收敛样式。
|
||||
3. **与普通 remark 区分**:文档与 UI 文案明确,避免用户把特殊说明写入备注。
|
||||
4. **警示色**:使用 Element Plus danger 色 + `font-weight: 700`,符合 Fresh Mint 规范中对强提醒的使用场景。
|
||||
|
||||
---
|
||||
|
||||
## 9. 决策记录
|
||||
|
||||
| 议题 | 决策 |
|
||||
|------|------|
|
||||
| 勾选特殊样本时特殊说明是否必填 | **A. 必填**(前后端校验) |
|
||||
| 数据存储位置 | 样本源表唯一数据源,下游 JOIN |
|
||||
| 展示组件 | 新建 `SpecialSampleDisplay`,红色加粗文本,非 Tag |
|
||||
| 本期范围 | web-admin 全链路展示;不含筛选/导出/小程序 |
|
||||
@@ -381,7 +381,7 @@ watchDebounced(
|
||||
4. **预览区**(`.attachment-preview`):背景 `#f8fafc`;图片已上传且 `fileUrl` 存在时显示缩略图(`object-fit: cover`),可点击预览;图片上传中无 URL 时显示 `Loading`;视频显示 `.attachment-preview__icon--video`(`#ede9fe` / `#7c3aed` + `VideoPlay`);其他文件显示 `.attachment-preview__icon--doc`(`#e0f2fe` / `#0284c7` + `Document`)。
|
||||
5. **卡片底部**(`.attachment-footer`):文件名 `.attachment-name`(11px `#334155`,最多 2 行省略,`title` 为完整文件名);`.attachment-actions` 居中排列 **下载**(`Download`)、**删除**(`Delete`,`.action-btn--danger` hover 红色)。
|
||||
6. **上传中**:`.attachment-item.is-uploading` → `opacity: 0.6`、`pointer-events: none`。
|
||||
7. **提示**:`.upload-hint` — 11px `#94a3b8`,`margin-top: 8px`;默认文案:「支持图片、视频、PDF、Word、Excel等文件,单文件不超过 20MB」。
|
||||
7. **提示**:`.upload-hint` — 11px `#94a3b8`,`margin-top: 8px`;默认文案:「支持拖拽或点击上传图片、视频、PDF、Word、Excel等文件,单文件不超过 20MB」。
|
||||
8. **色板**:SHALL 使用 Fresh Mint(`#10b981`、`#a7f3d0`、`#f0fdf4`、`#ecfdf5`);SHALL NOT 使用小程序主色 `#0a9f6d`。
|
||||
9. **禁止**:SHALL NOT 使用 `el-upload` 的 `list-type="picture-card"`、默认 `file-list` 展示,或单独一行纯文字「选择文件」按钮替代上传卡片。
|
||||
|
||||
@@ -397,6 +397,15 @@ watchDebounced(
|
||||
|
||||
上传卡片 SHALL 作为 `.attachment-list` 的**第一个子元素**,且始终渲染(不因已有附件数量而隐藏)。
|
||||
|
||||
#### 拖拽上传
|
||||
|
||||
1. **Drop zone**:卡片化附件 SHALL 以 `.attachment-upload` 根容器为拖拽落区(含 `.attachment-list` 与 `.upload-hint` 所在整块);表格行内纸质材料 SHALL 以 `.paper-att-list` 为落区。SHALL NOT 使用 `el-upload` 的 `drag` 属性替代上述布局(避免破坏 140×96 上传卡片结构)。
|
||||
2. **双通道**:SHALL 同时支持**点击上传卡片选文件**与**拖拽文件到 drop zone**;两种方式 SHALL 复用同一套 `@change` / `handleAttachmentChange` 上传逻辑(校验 → 占位 → `fetchUploadAttachment` → 回填或失败移除)。
|
||||
3. **多文件**:拖拽 `dataTransfer.files` 中多个文件时,SHALL 按顺序逐个走与 `:multiple="true"` 点击选择相同的上传流程。
|
||||
4. **dragover 视觉**:落区 dragover 时 SHALL 添加修饰类 `.is-dragover`(全局样式见 `web-admin/src/assets/styles/core/app.scss`):Fresh Mint 虚线边框 `#10b981`、浅绿底 `#ecfdf5`、圆角 8px。
|
||||
5. **实现**:SHALL 使用 `web-admin/src/composables/useAttachmentDropZone.ts` 在各页面/组件的 drop zone 上独立挂载(`v-bind="dropZoneHandlers"` + `:class="{ 'is-dragover': isDragover }"`);只读/禁用态 SHALL 传入 `disabled` 且不响应 drop。
|
||||
6. **校验与提交**:拖拽文件的类型、单文件 20MB 限制、上传中提交拦截 SHALL 与点击上传一致。
|
||||
|
||||
#### 数据模型与上传逻辑
|
||||
|
||||
附件列表 SHALL 为响应式数组,元素至少包含:`id`、`fileName`、`fileUrl`、`fileType`(可选)、`_uploading`(可选布尔)。
|
||||
@@ -554,6 +563,16 @@ watchDebounced(
|
||||
- **WHEN** 用户提交表单且仍有 `_uploading` 项
|
||||
- **THEN** SHALL 阻止提交并提示等待上传完成
|
||||
|
||||
#### Scenario: 拖拽文件到附件落区
|
||||
|
||||
- **WHEN** 用户将合法文件拖拽到 `.attachment-upload`(或纸质材料 `.paper-att-list`)
|
||||
- **THEN** 落区 SHALL 显示 `.is-dragover` 高亮
|
||||
- **THEN** 松手后 SHALL 与点击选文件相同:立即上传、展示卡片、支持预览/下载/删除
|
||||
- **WHEN** 用户拖拽多个文件
|
||||
- **THEN** SHALL 逐个上传
|
||||
- **WHEN** 落区为只读或 `disabled`
|
||||
- **THEN** SHALL NOT 响应 drop
|
||||
|
||||
#### Scenario: Code review 附件上传
|
||||
|
||||
- **WHEN** PR 新增或修改附件上传 UI
|
||||
|
||||
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
@@ -1,11 +1,11 @@
|
||||
# Graph Report - src (2026-06-30)
|
||||
# Graph Report - src (2026-07-01)
|
||||
|
||||
## Corpus Check
|
||||
- Large corpus: 828 files · ~549,493 words. Semantic extraction will be expensive (many Claude tokens). Consider running on a subfolder, or use --no-semantic to run AST-only.
|
||||
- Large corpus: 845 files · ~556,744 words. Semantic extraction will be expensive (many Claude tokens). Consider running on a subfolder, or use --no-semantic to run AST-only.
|
||||
|
||||
## Summary
|
||||
- 2719 nodes · 3738 edges · 61 communities detected
|
||||
- Extraction: 78% EXTRACTED · 22% INFERRED · 0% AMBIGUOUS · INFERRED: 821 edges (avg confidence: 0.8)
|
||||
- 2767 nodes · 3805 edges · 61 communities detected
|
||||
- Extraction: 78% EXTRACTED · 22% INFERRED · 0% AMBIGUOUS · INFERRED: 848 edges (avg confidence: 0.8)
|
||||
- Token cost: 0 input · 0 output
|
||||
|
||||
## Community Hubs (Navigation)
|
||||
@@ -46,14 +46,14 @@
|
||||
- [[_COMMUNITY_Community 34|Community 34]]
|
||||
- [[_COMMUNITY_Community 35|Community 35]]
|
||||
- [[_COMMUNITY_Community 36|Community 36]]
|
||||
- [[_COMMUNITY_Community 37|Community 37]]
|
||||
- [[_COMMUNITY_Community 38|Community 38]]
|
||||
- [[_COMMUNITY_Community 39|Community 39]]
|
||||
- [[_COMMUNITY_Community 40|Community 40]]
|
||||
- [[_COMMUNITY_Community 41|Community 41]]
|
||||
- [[_COMMUNITY_Community 42|Community 42]]
|
||||
- [[_COMMUNITY_Community 44|Community 44]]
|
||||
- [[_COMMUNITY_Community 45|Community 45]]
|
||||
- [[_COMMUNITY_Community 47|Community 47]]
|
||||
- [[_COMMUNITY_Community 48|Community 48]]
|
||||
- [[_COMMUNITY_Community 49|Community 49]]
|
||||
- [[_COMMUNITY_Community 50|Community 50]]
|
||||
- [[_COMMUNITY_Community 51|Community 51]]
|
||||
- [[_COMMUNITY_Community 52|Community 52]]
|
||||
@@ -62,20 +62,20 @@
|
||||
- [[_COMMUNITY_Community 55|Community 55]]
|
||||
- [[_COMMUNITY_Community 56|Community 56]]
|
||||
- [[_COMMUNITY_Community 58|Community 58]]
|
||||
- [[_COMMUNITY_Community 60|Community 60]]
|
||||
- [[_COMMUNITY_Community 62|Community 62]]
|
||||
- [[_COMMUNITY_Community 61|Community 61]]
|
||||
- [[_COMMUNITY_Community 63|Community 63]]
|
||||
- [[_COMMUNITY_Community 64|Community 64]]
|
||||
- [[_COMMUNITY_Community 67|Community 67]]
|
||||
- [[_COMMUNITY_Community 69|Community 69]]
|
||||
- [[_COMMUNITY_Community 77|Community 77]]
|
||||
- [[_COMMUNITY_Community 79|Community 79]]
|
||||
- [[_COMMUNITY_Community 80|Community 80]]
|
||||
|
||||
## God Nodes (most connected - your core abstractions)
|
||||
1. `get()` - 277 edges
|
||||
2. `push()` - 69 edges
|
||||
1. `get()` - 278 edges
|
||||
2. `push()` - 70 edges
|
||||
3. `WebSocketClient` - 26 edges
|
||||
4. `emit()` - 22 edges
|
||||
4. `emit()` - 21 edges
|
||||
5. `set()` - 19 edges
|
||||
6. `handleDynamicRoutes()` - 18 edges
|
||||
7. `MenuProcessor` - 16 edges
|
||||
@@ -84,14 +84,14 @@
|
||||
10. `withFullscreenLoading()` - 13 edges
|
||||
|
||||
## Surprising Connections (you probably didn't know these)
|
||||
- `handleBatchDelete()` --calls--> `withFullscreenLoading()` [INFERRED]
|
||||
views/basic-info/customer/index.vue → utils/fullscreen-loading.ts
|
||||
- `buildInboundMetaFields()` --calls--> `push()` [INFERRED]
|
||||
utils/production-work-order-card-meta.ts → views/operations/storage-facility/index.vue
|
||||
- `dash()` --calls--> `formatDisplayOrDash()` [INFERRED]
|
||||
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
|
||||
- `fmtMoney()` --calls--> `formatMoneyDisplay()` [INFERRED]
|
||||
components/business/clinical-schedule-payment-detail/index.vue → utils/money-format.ts
|
||||
- `resolveBatchSectionTasks()` --calls--> `set()` [INFERRED]
|
||||
utils/qc-inspection-batch.ts → views/production/process/ProcessRouteTab.vue
|
||||
- `defaultInstallmentRatios()` --calls--> `push()` [INFERRED]
|
||||
utils/protocol-payment-installment.ts → views/operations/storage-facility/index.vue
|
||||
|
||||
@@ -99,112 +99,112 @@
|
||||
|
||||
### Community 0 - "Community 0"
|
||||
Cohesion: 0.01
|
||||
Nodes (154): fetchAccessLogList(), fetchActiveRegions(), fetchCategoryList(), fetchCategoryParameters(), fetchCellProductPriceList(), fetchCellProductSpecList(), fetchCellProductTypeList(), fetchChannelAccount() (+146 more)
|
||||
Nodes (152): fetchAccessLogList(), fetchActiveRegions(), fetchCategoryList(), fetchCategoryParameters(), fetchCellProductPriceList(), fetchCellProductSpecList(), fetchCellProductTypeList(), fetchChannelAccount() (+144 more)
|
||||
|
||||
### Community 1 - "Community 1"
|
||||
Cohesion: 0.03
|
||||
Nodes (87): batchSavePilotCheckup(), deletePilotCheckupActualItem(), fetchCheckupInstitutionList(), fetchCheckupInstitutionPackageDetail(), fetchCheckupInstitutionPackages(), fetchPilotCheckupDetail(), fetchPilotCheckupList(), markPilotCheckupChecked() (+79 more)
|
||||
Cohesion: 0.02
|
||||
Nodes (73): fetchUploadAttachment(), FireworkSystem, collectIds(), handleReportUpload(), handleReportUpload(), walk(), buildTemporaryViewSections(), if() (+65 more)
|
||||
|
||||
### Community 2 - "Community 2"
|
||||
Cohesion: 0.03
|
||||
Nodes (61): fetchUploadAttachment(), handleReportUpload(), handleReportUpload(), walk(), buildInboundBasicSection(), buildInboundCellStorageViewSections(), buildInboundResearchDonationViewSections(), buildReceptionSection() (+53 more)
|
||||
Nodes (83): batchSavePilotCheckup(), deletePilotCheckupActualItem(), fetchCheckupInstitutionPackageDetail(), fetchCheckupInstitutionPackages(), fetchPilotCheckupDetail(), markPilotCheckupChecked(), savePilotCheckup(), savePilotCheckupActualItems() (+75 more)
|
||||
|
||||
### Community 3 - "Community 3"
|
||||
Cohesion: 0.03
|
||||
Nodes (33): fetchGetMenuList(), ComponentLoader, IframeRouteManager, MenuProcessor, RouteRegistry, RouteTransformer, useAppMode(), useAuth() (+25 more)
|
||||
Nodes (60): fetchCheckupInstitutionInvoices(), fetchCheckupInstitutionProjects(), fetchCreateCheckupInstitution(), fetchCreateCheckupInstitutionInvoice(), fetchCreateCheckupInstitutionProject(), fetchUpdateCheckupInstitution(), fetchUpdateCheckupInstitutionInvoice(), fetchUpdateCheckupInstitutionProject() (+52 more)
|
||||
|
||||
### Community 4 - "Community 4"
|
||||
Cohesion: 0.03
|
||||
Nodes (58): fetchMyProductionTasks(), fetchMyQcTaskList(), fetchQcTaskDetail(), fetchQcTaskList(), shouldApplyTriggerSourceFilter(), buildMineTableRows(), buildPresetTasksMap(), buildWorkOrderFromTasks() (+50 more)
|
||||
Nodes (34): fetchGetMenuList(), ComponentLoader, IframeRouteManager, MenuProcessor, RoutePermissionValidator, RouteRegistry, RouteTransformer, useAppMode() (+26 more)
|
||||
|
||||
### Community 5 - "Community 5"
|
||||
Cohesion: 0.03
|
||||
Nodes (50): fetchCheckupInstitutionInvoices(), fetchCheckupInstitutionProjects(), fetchCreateCheckupInstitution(), fetchCreateCheckupInstitutionInvoice(), fetchCreateCheckupInstitutionProject(), fetchUpdateCheckupInstitution(), fetchUpdateCheckupInstitutionInvoice(), fetchUpdateCheckupInstitutionProject() (+42 more)
|
||||
Nodes (58): fetchFullmoonTodoList(), fetchUpdateFullmoonTodoInsurance(), fetchCollectionProtocolAuditList(), fetchCollectionProtocolDetail(), fetchCollectionProtocolList(), fetchCreateProtocolInvoiceRequest(), fetchInvoiceEligiblePayments(), fetchPaymentDetailList() (+50 more)
|
||||
|
||||
### Community 6 - "Community 6"
|
||||
Cohesion: 0.05
|
||||
Nodes (50): fetchProductionReceptionBySampleCode(), fetchProductionReceptionSubmit(), fetchProductionReceptionUpdate(), onUserSelectVisible(), remoteSearchUsers(), buildPayload(), ensureDefaultHandler(), initDialog() (+42 more)
|
||||
Cohesion: 0.02
|
||||
Nodes (28): fetchAllConsumablePacks(), fetchAllConsumables(), fetchAllConsumableStockLogs(), fetchAllEquipments(), fetchAllOutputTypes(), fetchAllProcessCategories(), fetchAllProcesses(), fetchAllReagents() (+20 more)
|
||||
|
||||
### Community 7 - "Community 7"
|
||||
Cohesion: 0.04
|
||||
Nodes (44): fetchFullmoonTodoList(), fetchUpdateFullmoonTodoInsurance(), fetchCollectionProtocolAuditList(), fetchCollectionProtocolDetail(), fetchCollectionProtocolList(), fetchCreateProtocolInvoiceRequest(), fetchInvoiceEligiblePayments(), fetchPaymentDetailList() (+36 more)
|
||||
Nodes (50): fetchMyProductionTasks(), fetchMyQcTaskList(), fetchQcTaskDetail(), fetchQcTaskList(), shouldApplyTriggerSourceFilter(), buildMineTableRows(), buildPresetTasksMap(), buildWorkOrderFromTasks() (+42 more)
|
||||
|
||||
### Community 8 - "Community 8"
|
||||
Cohesion: 0.04
|
||||
Nodes (35): useSettingsHandlers(), useSettingsPanel(), useSettingsState(), RoutePermissionValidator, useCeremony(), useTheme(), if(), walk() (+27 more)
|
||||
Cohesion: 0.03
|
||||
Nodes (26): handleBlur(), handleFocus(), handleInput(), fetchQcMaterialBatchList(), fetchQcMaterialBatchOptions(), fetchQcMaterialList(), fetchQcMaterialOptions(), fetchUpdateQcMaterialBatch() (+18 more)
|
||||
|
||||
### Community 9 - "Community 9"
|
||||
Cohesion: 0.04
|
||||
Nodes (30): handleBlur(), handleFocus(), handleInput(), fetchDeleteMaterialBatch(), fetchMaterialBatchList(), fetchMaterialBatchOptions(), fetchMaterialList(), fetchMaterialOptions() (+22 more)
|
||||
Nodes (45): buildBaseFields(), buildInboundBasicSection(), buildInboundCellStorageProductionViewSections(), buildInboundResearchDonationProductionViewSections(), buildOutboundBasicExperimentProductionViewSections(), buildOutboundClinicalProductionViewSections(), buildOutboundDetail(), buildOutboundPilotProductionViewSections() (+37 more)
|
||||
|
||||
### Community 10 - "Community 10"
|
||||
Cohesion: 0.04
|
||||
Nodes (34): fetchEthnicList(), applyDonationBundleToForm(), createEmptyTransport(), ensureEthnicOptionInList(), handleOpenForAdd(), loadEthnicOptions(), normalizeSampleRow(), resetForm() (+26 more)
|
||||
Nodes (40): fetchRoleOptions(), buildInboundBasicSection(), buildInboundCellStorageViewSections(), buildInboundResearchDonationViewSections(), buildReceptionSection(), buildTransportSection(), resolveInboundProtocolStatus(), appendTaskResultSections() (+32 more)
|
||||
|
||||
### Community 11 - "Community 11"
|
||||
Cohesion: 0.05
|
||||
Nodes (34): fetchClinicalPaymentDetail(), fetchClinicalPayments(), fetchClinicalReceiptConfirmed(), fetchClinicalReceiptPending(), fetchClinicalRefundConfirmed(), fetchClinicalRefundPending(), fetchOrderAdjusts(), fetchOrderDetail() (+26 more)
|
||||
Nodes (40): fetchCheckupInstitutionList(), fetchCreateCustomer(), fetchCustomerList(), fetchDeleteCustomer(), fetchPilotCheckupList(), fetchUpdateCustomer(), updateInfusionScheduleStatus(), handleAdd() (+32 more)
|
||||
|
||||
### Community 12 - "Community 12"
|
||||
Cohesion: 0.06
|
||||
Nodes (36): buildBaseFields(), buildFeeSection(), buildInboundBasicSection(), buildInboundCellStorageProductionViewSections(), buildInboundResearchDonationProductionViewSections(), buildOutboundBasicExperimentProductionViewSections(), buildOutboundClinicalProductionViewSections(), buildOutboundDetail() (+28 more)
|
||||
Cohesion: 0.04
|
||||
Nodes (34): fetchEthnicList(), applyDonationBundleToForm(), createEmptyTransport(), ensureEthnicOptionInList(), handleOpenForAdd(), loadEthnicOptions(), normalizeSampleRow(), resetForm() (+26 more)
|
||||
|
||||
### Community 13 - "Community 13"
|
||||
Cohesion: 0.05
|
||||
Nodes (36): fetchCreateCustomer(), fetchCustomerList(), fetchDeleteCustomer(), fetchUpdateCustomer(), updateInfusionScheduleStatus(), handleAdd(), handleDelete(), handleDropdownCommand() (+28 more)
|
||||
Nodes (34): fetchClinicalPaymentDetail(), fetchClinicalPayments(), fetchClinicalReceiptConfirmed(), fetchClinicalReceiptPending(), fetchClinicalRefundConfirmed(), fetchClinicalRefundPending(), fetchOrderAdjusts(), fetchOrderDetail() (+26 more)
|
||||
|
||||
### Community 14 - "Community 14"
|
||||
Cohesion: 0.05
|
||||
Nodes (34): fetchAttachmentDownloadUrl(), qcAttachmentFullUrl(), qcDownloadAttachment(), qcPreviewAttachment(), formatHandoverUserLabel(), formatNowDatetime(), fullFileUrl(), handleDownloadAttachment() (+26 more)
|
||||
Cohesion: 0.06
|
||||
Nodes (37): fetchUserList(), fetchAddTaskStep(), fetchCopyTaskStep(), fetchDeleteTaskStep(), fetchDispatchProductionTaskSteps(), fetchForwardProductionTask(), fetchProductionTaskDetail(), fetchProductionTaskEditorInit() (+29 more)
|
||||
|
||||
### Community 15 - "Community 15"
|
||||
Cohesion: 0.06
|
||||
Nodes (14): dash(), fmtMoney(), auditorDisplay(), dash(), ensureUnitsInOptions(), expressName(), formatYm(), formatYmd() (+6 more)
|
||||
|
||||
### Community 16 - "Community 16"
|
||||
Cohesion: 0.04
|
||||
Nodes (21): fetchAvailableMaterialBatches(), fetchMyProductionMaterialConsumptions(), fetchMyProductionMaterialUsageList(), fetchProductionMaterialBatchList(), fetchProductionMaterialBatchOptions(), fetchProductionMaterialConsumptions(), fetchProductionMaterialFormula(), fetchProductionMaterialLinkedStepUsages() (+13 more)
|
||||
|
||||
### Community 17 - "Community 17"
|
||||
Cohesion: 0.09
|
||||
Nodes (41): applyFqParamsChange(), buildFqAmounts(), countByStatus(), evaluateFqParamsChange(), formatMoneySummary(), generateInitialFqDetails(), getPaidInstallmentRows(), isSameFqParams() (+33 more)
|
||||
|
||||
### Community 18 - "Community 18"
|
||||
Cohesion: 0.06
|
||||
Nodes (20): fetchQcMaterialBatchList(), fetchQcMaterialBatchOptions(), fetchQcMaterialList(), fetchQcMaterialOptions(), fetchUpdateQcMaterialBatch(), fetchMarkQcMaterialUsageFullyUsed(), financeAttachmentsToUrlString(), ensureTabMounted() (+12 more)
|
||||
|
||||
### Community 19 - "Community 19"
|
||||
Cohesion: 0.06
|
||||
Nodes (22): fetchCreateMenu(), fetchDeleteMenu(), fetchMenuTree(), fetchRoleOptions(), fetchUpdateMenu(), collectIds(), postorder(), preorder() (+14 more)
|
||||
|
||||
### Community 20 - "Community 20"
|
||||
### Community 16 - "Community 16"
|
||||
Cohesion: 0.1
|
||||
Nodes (2): WebSocketClient, TableCache
|
||||
|
||||
### Community 21 - "Community 21"
|
||||
### Community 17 - "Community 17"
|
||||
Cohesion: 0.08
|
||||
Nodes (32): toLogin(), base64ToBytes(), bytesToBase64(), decryptJson(), deriveKey(), encryptJson(), fromBase64Url(), hexToBytes() (+24 more)
|
||||
|
||||
### Community 22 - "Community 22"
|
||||
### Community 18 - "Community 18"
|
||||
Cohesion: 0.07
|
||||
Nodes (24): fetchMineProductionWorkOrderTabStepCounts(), fetchMineProductionWorkOrderTabStepCountsDeduped(), fetchProductionWorkOrderCellProductOptions(), fetchProductionWorkOrderDetail(), fetchProductionWorkOrderList(), fetchProductionWorkOrderQcDispatchOptions(), fetchProductionWorkOrderQcInfo(), fetchProductionWorkOrderTabStepCounts() (+16 more)
|
||||
|
||||
### Community 19 - "Community 19"
|
||||
Cohesion: 0.09
|
||||
Nodes (8): getDefaultLanguage(), checkStorageCompatibility(), StorageConfig, getSystemStorage(), getSysVersion(), StorageKeyManager, StorageCompatibilityManager, validateStorageData()
|
||||
|
||||
### Community 23 - "Community 23"
|
||||
### Community 20 - "Community 20"
|
||||
Cohesion: 0.08
|
||||
Nodes (31): fetchUserList(), fetchAddTaskStep(), fetchCopyTaskStep(), fetchDeleteTaskStep(), fetchDispatchProductionTaskSteps(), fetchForwardProductionTask(), fetchProductionTaskDetail(), fetchProductionTaskEditorInit() (+23 more)
|
||||
Nodes (18): fetchProductionReceptionBySampleCode(), fetchProductionReceptionSubmit(), fetchProductionReceptionUpdate(), onUserSelectVisible(), remoteSearchUsers(), buildPayload(), ensureDefaultHandler(), initDialog() (+10 more)
|
||||
|
||||
### Community 24 - "Community 24"
|
||||
### Community 21 - "Community 21"
|
||||
Cohesion: 0.07
|
||||
Nodes (16): fetchDeleteMaterialBatch(), fetchMaterialBatchList(), fetchMaterialBatchOptions(), fetchMaterialList(), fetchMaterialOptions(), fetchUpdateMaterialBatch(), fetchMaterialUsageList(), fetchMyMaterialUsageList() (+8 more)
|
||||
|
||||
### Community 22 - "Community 22"
|
||||
Cohesion: 0.08
|
||||
Nodes (18): createEmptySnapshots(), normalizeConfiguredReagents(), normalizeConsumables(), normalizeDataCollections(), normalizeReagents(), normalizeStepOutputs(), serializeAttachments(), serializeEquipmentIds() (+10 more)
|
||||
|
||||
### Community 25 - "Community 25"
|
||||
Cohesion: 0.09
|
||||
Nodes (27): completePilotApplication(), deletePilotApplication(), fetchPilotApplicationList(), startPilotApplication(), voidPilotApplication(), handleBatchComplete(), handleBatchStart(), handleBatchVoid() (+19 more)
|
||||
### Community 23 - "Community 23"
|
||||
Cohesion: 0.07
|
||||
Nodes (11): gateWorkOrder(), sampleTabStatusLabel(), sampleTabStatusTagType(), sampleTypeLabel(), workOrderStatusTagType(), canEditInboundSampleSpecialMark(), resolveInboundSampleSpecialMarkTarget(), resolveInboundSampleSpecialMarkTargetFromRow() (+3 more)
|
||||
|
||||
### Community 26 - "Community 26"
|
||||
### Community 24 - "Community 24"
|
||||
Cohesion: 0.11
|
||||
Nodes (21): fetchGetMenuCodes(), fetchGetUserInfo(), fetchLogin(), fetchRefreshToken(), fetchUpdateProfile(), fetchUploadProfileAvatar(), fetchUserInfo(), buildWebEncryptedLoginBody() (+13 more)
|
||||
|
||||
### Community 25 - "Community 25"
|
||||
Cohesion: 0.11
|
||||
Nodes (24): completePilotApplication(), deletePilotApplication(), fetchPilotApplicationList(), startPilotApplication(), voidPilotApplication(), handleBatchComplete(), handleBatchStart(), handleBatchVoid() (+16 more)
|
||||
|
||||
### Community 26 - "Community 26"
|
||||
Cohesion: 0.13
|
||||
Nodes (19): fetchCreateMenu(), fetchDeleteMenu(), fetchMenuTree(), fetchUpdateMenu(), postorder(), preorder(), applyTreeExpand(), handleAdd() (+11 more)
|
||||
|
||||
### Community 27 - "Community 27"
|
||||
Cohesion: 0.09
|
||||
Nodes (11): fetchMineQcWorkOrderTabUnfinishedCounts(), fetchOutboundQcDetail(), fetchQcWorkOrderDetail(), fetchQcWorkOrderList(), fetchQcWorkOrderTabUnfinishedCounts(), reload(), reloadTabCounts(), handleMenuJump() (+3 more)
|
||||
@@ -214,24 +214,24 @@ Cohesion: 0.12
|
||||
Nodes (15): addCopyButton(), highlightCode(), insertLineNumbers(), isBlockProcessed(), markBlockAsProcessed(), processBlock(), setupHighlightDirective(), setupRippleDirective() (+7 more)
|
||||
|
||||
### Community 29 - "Community 29"
|
||||
Cohesion: 0.11
|
||||
Nodes (10): fetchMineProductionWorkOrderTabStepCounts(), fetchMineProductionWorkOrderTabStepCountsDeduped(), fetchProductionWorkOrderCellProductOptions(), fetchProductionWorkOrderDetail(), fetchProductionWorkOrderList(), fetchProductionWorkOrderQcDispatchOptions(), fetchProductionWorkOrderTabStepCounts(), fetchProductionWorkOrderTabStepCountsDeduped() (+2 more)
|
||||
|
||||
### Community 30 - "Community 30"
|
||||
Cohesion: 0.11
|
||||
Nodes (11): fetchOutboundReleaseMaterial(), fetchOutboundReleaseReviewDetail(), fetchOutboundReleaseReviewList(), fetchReleaseReviewList(), handleReset(), handleSearch(), handleToggleSelect(), loadData() (+3 more)
|
||||
|
||||
### Community 31 - "Community 31"
|
||||
Cohesion: 0.13
|
||||
Nodes (18): fetchCellSampleTypeList(), fetchCreateCellSampleType(), fetchDeleteCellSampleType(), fetchUpdateCellSampleType(), handleAdd(), handleDelete(), handleDropdownCommand(), handleEdit() (+10 more)
|
||||
|
||||
### Community 32 - "Community 32"
|
||||
### Community 30 - "Community 30"
|
||||
Cohesion: 0.16
|
||||
Nodes (14): fetchCreateEnvDetectItem(), fetchDeleteEnvDetectItem(), fetchEnvDetectItemDetail(), fetchEnvDetectItemList(), fetchEnvDetectItemsActive(), fetchUpdateEnvDetectItem(), handleAdd(), handleBatchDelete() (+6 more)
|
||||
|
||||
### Community 31 - "Community 31"
|
||||
Cohesion: 0.12
|
||||
Nodes (12): fetchApproveTask(), fetchBusinessAllTasks(), fetchCompletedTasks(), fetchDesignerData(), fetchInstanceDetail(), fetchMyInstances(), fetchPendingTasks(), fetchProcessDefList() (+4 more)
|
||||
|
||||
### Community 32 - "Community 32"
|
||||
Cohesion: 0.19
|
||||
Nodes (13): fetchAttachmentDownloadUrl(), attachmentFullUrl(), ensureUniqueZipEntryName(), fetchAttachmentBlob(), getAttachmentExtension(), resolveAttachmentFileName(), sanitizeZipPathSegment(), batchFolderName() (+5 more)
|
||||
|
||||
### Community 33 - "Community 33"
|
||||
Cohesion: 0.16
|
||||
Nodes (14): fetchCreateEnvDetectItem(), fetchDeleteEnvDetectItem(), fetchEnvDetectItemDetail(), fetchEnvDetectItemList(), fetchEnvDetectItemsActive(), fetchUpdateEnvDetectItem(), handleAdd(), handleBatchDelete() (+6 more)
|
||||
Cohesion: 0.2
|
||||
Nodes (11): fetchMarkQcMaterialUsageFullyUsed(), canMarkFullyUsed(), displayPurpose(), displayReceiver(), displayUseTime(), getChangeTypeLabel(), getChangeTypeTagType(), handleMarkFullyUsed() (+3 more)
|
||||
|
||||
### Community 34 - "Community 34"
|
||||
Cohesion: 0.16
|
||||
@@ -242,60 +242,60 @@ Cohesion: 0.27
|
||||
Nodes (14): useChart(), useChartComponent(), useChartOps(), colourBlend(), getCssVar(), getDarkColor(), getLightColor(), handleElementThemeColor() (+6 more)
|
||||
|
||||
### Community 36 - "Community 36"
|
||||
Cohesion: 0.14
|
||||
Nodes (8): useSettingsHandlers(), useSettingsPanel(), useSettingsState(), useCeremony(), useTheme(), themeAnimation(), toggleTheme(), toggleTransition()
|
||||
|
||||
### Community 37 - "Community 37"
|
||||
Cohesion: 0.33
|
||||
Nodes (13): buildProtocolPaymentFlowSteps(), dash(), financeReceiptTime(), formatAmount(), hasFinanceReceipt(), hasFinanceRefund(), hasReceiptSubmit(), hasRefundSubmit() (+5 more)
|
||||
|
||||
### Community 38 - "Community 38"
|
||||
Cohesion: 0.22
|
||||
Nodes (9): fullFileUrl(), handleDownloadAttachment(), handlePreviewAttachment(), isVideoFile(), normalizeDisplayValue(), resolveReviewCellType(), resolveReviewQuantity(), resolveReviewSpecText() (+1 more)
|
||||
|
||||
### Community 39 - "Community 39"
|
||||
Cohesion: 0.19
|
||||
Nodes (6): fetchServiceOrderTxnList(), handleReset(), handleSearch(), handleTabChange(), loadData(), switchTab()
|
||||
|
||||
### Community 38 - "Community 38"
|
||||
### Community 41 - "Community 41"
|
||||
Cohesion: 0.15
|
||||
Nodes (4): fetchNextDonationSampleCode(), fetchResearchDonationAuditList(), fetchResearchDonationDetail(), fetchResearchDonationList()
|
||||
|
||||
### Community 39 - "Community 39"
|
||||
### Community 42 - "Community 42"
|
||||
Cohesion: 0.25
|
||||
Nodes (2): handleTouchEnd(), setTransition()
|
||||
|
||||
### Community 40 - "Community 40"
|
||||
Cohesion: 0.28
|
||||
Nodes (1): FireworkSystem
|
||||
|
||||
### Community 44 - "Community 44"
|
||||
Cohesion: 0.31
|
||||
Nodes (4): annotateForkEdges(), chainApiToElements(), walkAncestorBranch(), walkAncestorParents()
|
||||
|
||||
### Community 47 - "Community 47"
|
||||
Cohesion: 0.39
|
||||
Nodes (6): isIgnorableScriptError(), normalizeErrorMessage(), registerPromiseErrorHandler(), registerResourceErrorHandler(), scriptErrorHandler(), setupErrorHandle()
|
||||
|
||||
### Community 45 - "Community 45"
|
||||
### Community 48 - "Community 48"
|
||||
Cohesion: 0.36
|
||||
Nodes (1): TableHeightCalculator
|
||||
|
||||
### Community 47 - "Community 47"
|
||||
### Community 50 - "Community 50"
|
||||
Cohesion: 0.33
|
||||
Nodes (2): logApiCryptoBootInfo(), maskSecret()
|
||||
|
||||
### Community 48 - "Community 48"
|
||||
### Community 51 - "Community 51"
|
||||
Cohesion: 0.38
|
||||
Nodes (4): handleFocus(), handleInput(), parseDecimalToNumber(), sanitizeDecimalInput()
|
||||
|
||||
### Community 49 - "Community 49"
|
||||
### Community 52 - "Community 52"
|
||||
Cohesion: 0.48
|
||||
Nodes (5): buildPrefilledLabStorageCode(), formatYear(), formatYm(), normalizeSampleTypeName(), normalizeSourceType()
|
||||
|
||||
### Community 50 - "Community 50"
|
||||
Cohesion: 0.29
|
||||
Nodes (2): fetchLeaveDetail(), fetchLeaveList()
|
||||
|
||||
### Community 51 - "Community 51"
|
||||
Cohesion: 0.47
|
||||
Nodes (3): isPaymentDueWithinWarnWindow(), parsePaymentDueYmd(), startOfLocalDay()
|
||||
|
||||
### Community 52 - "Community 52"
|
||||
Cohesion: 0.33
|
||||
Nodes (2): fetchSampleReceptionCheckItemList(), fetchSampleReceptionCheckItemsActive()
|
||||
|
||||
### Community 53 - "Community 53"
|
||||
Cohesion: 0.33
|
||||
Nodes (2): fetchEnvDetectRecordDetail(), fetchEnvDetectRecordList()
|
||||
Cohesion: 0.4
|
||||
Nodes (2): isUnfinishedQcWorkOrder(), resolveQcWorkOrderUnfinishedBadgeCount()
|
||||
|
||||
### Community 54 - "Community 54"
|
||||
Cohesion: 0.33
|
||||
Nodes (2): fetchQcLabTestItemList(), fetchQcLabTestItemsActive()
|
||||
Cohesion: 0.47
|
||||
Nodes (3): isPaymentDueWithinWarnWindow(), parsePaymentDueYmd(), startOfLocalDay()
|
||||
|
||||
### Community 55 - "Community 55"
|
||||
Cohesion: 0.5
|
||||
@@ -309,21 +309,17 @@ Nodes (2): parseEquipmentIds(), syncEquipmentNamesFromOptions()
|
||||
Cohesion: 0.5
|
||||
Nodes (2): focusInput(), handleKeydown()
|
||||
|
||||
### Community 60 - "Community 60"
|
||||
### Community 61 - "Community 61"
|
||||
Cohesion: 0.67
|
||||
Nodes (2): if(), logSidebarMenu()
|
||||
|
||||
### Community 62 - "Community 62"
|
||||
### Community 63 - "Community 63"
|
||||
Cohesion: 0.5
|
||||
Nodes (1): fetchStorageEntrySmsList()
|
||||
|
||||
### Community 63 - "Community 63"
|
||||
Cohesion: 0.5
|
||||
Nodes (1): fetchSampleSmsNotificationList()
|
||||
|
||||
### Community 64 - "Community 64"
|
||||
Cohesion: 0.5
|
||||
Nodes (1): fetchQcSmsList()
|
||||
Nodes (1): fetchSampleSmsNotificationList()
|
||||
|
||||
### Community 67 - "Community 67"
|
||||
Cohesion: 1.0
|
||||
@@ -339,26 +335,22 @@ Nodes (2): emptyTabCounts(), useProductionWorkOrderTabStepCounts()
|
||||
|
||||
### Community 79 - "Community 79"
|
||||
Cohesion: 1.0
|
||||
Nodes (2): initialProgress(), useQcWorkOrderAttachmentExport()
|
||||
|
||||
### Community 80 - "Community 80"
|
||||
Cohesion: 1.0
|
||||
Nodes (2): emptyTabCounts(), useQcWorkOrderTabUnfinishedCounts()
|
||||
|
||||
## Knowledge Gaps
|
||||
- **Thin community `Community 20`** (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 16`** (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.
|
||||
- **Thin community `Community 39`** (9 nodes): `cleanupEventListeners()`, `handleTouchEnd()`, `handleTouchMove()`, `handleTouchStart()`, `handleWheelScroll()`, `if()`, `setTransition()`, `setupEventListeners()`, `index.vue`
|
||||
- **Thin community `Community 42`** (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.
|
||||
- **Thin community `Community 40`** (9 nodes): `FireworkSystem`, `.constructor()`, `.createFirework()`, `.createParticle()`, `.getAvailableParticle()`, `.initializePool()`, `.preloadAllImages()`, `.preloadImage()`, `index.vue`
|
||||
- **Thin community `Community 48`** (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.
|
||||
- **Thin community `Community 45`** (8 nodes): `TableHeightCalculator`, `.calculate()`, `.calculateOffset()`, `.calculatePaginationOffset()`, `.constructor()`, `.getHeaderHeight()`, `useTableHeight()`, `useTableHeight.ts`
|
||||
- **Thin community `Community 50`** (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.
|
||||
- **Thin community `Community 47`** (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.
|
||||
- **Thin community `Community 50`** (7 nodes): `fetchCreateLeave()`, `fetchDeleteLeave()`, `fetchLeaveDetail()`, `fetchLeaveList()`, `fetchSubmitLeave()`, `fetchUpdateLeave()`, `leave.ts`
|
||||
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
||||
- **Thin community `Community 52`** (6 nodes): `fetchCreateSampleReceptionCheckItem()`, `fetchDeleteSampleReceptionCheckItem()`, `fetchSampleReceptionCheckItemList()`, `fetchSampleReceptionCheckItemsActive()`, `fetchUpdateSampleReceptionCheckItem()`, `sample-reception-check-item.ts`
|
||||
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
||||
- **Thin community `Community 53`** (6 nodes): `fetchCreateEnvDetectRecord()`, `fetchDeleteEnvDetectRecord()`, `fetchEnvDetectRecordDetail()`, `fetchEnvDetectRecordList()`, `fetchUpdateEnvDetectRecord()`, `env-detect-record.ts`
|
||||
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
||||
- **Thin community `Community 54`** (6 nodes): `fetchCreateQcLabTestItem()`, `fetchDeleteQcLabTestItem()`, `fetchQcLabTestItemList()`, `fetchQcLabTestItemsActive()`, `fetchUpdateQcLabTestItem()`, `qc-lab-test-item.ts`
|
||||
- **Thin community `Community 53`** (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.
|
||||
- **Thin community `Community 55`** (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.
|
||||
@@ -366,13 +358,11 @@ Nodes (2): emptyTabCounts(), useQcWorkOrderTabUnfinishedCounts()
|
||||
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
||||
- **Thin community `Community 58`** (5 nodes): `focusInput()`, `handleKeydown()`, `if()`, `search()`, `index.vue`
|
||||
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
||||
- **Thin community `Community 60`** (4 nodes): `if()`, `logSidebarMenu()`, `index.vue`, `SidebarSubmenu.vue`
|
||||
- **Thin community `Community 61`** (4 nodes): `if()`, `logSidebarMenu()`, `index.vue`, `SidebarSubmenu.vue`
|
||||
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
||||
- **Thin community `Community 62`** (4 nodes): `fetchGenerateStorageEntrySms()`, `fetchStorageEntrySmsList()`, `fetchToggleStorageEntrySmsNotified()`, `storage-entry-sms-notification.ts`
|
||||
- **Thin community `Community 63`** (4 nodes): `fetchGenerateStorageEntrySms()`, `fetchStorageEntrySmsList()`, `fetchToggleStorageEntrySmsNotified()`, `storage-entry-sms-notification.ts`
|
||||
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
||||
- **Thin community `Community 63`** (4 nodes): `fetchGenerateSms()`, `fetchSampleSmsNotificationList()`, `fetchToggleSmsNotified()`, `sample-sms-notification.ts`
|
||||
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
||||
- **Thin community `Community 64`** (4 nodes): `fetchGenerateQcSms()`, `fetchQcSmsList()`, `fetchToggleQcSmsNotified()`, `qc-sms-notification.ts`
|
||||
- **Thin community `Community 64`** (4 nodes): `fetchGenerateSms()`, `fetchSampleSmsNotificationList()`, `fetchToggleSmsNotified()`, `sample-sms-notification.ts`
|
||||
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
||||
- **Thin community `Community 67`** (3 nodes): `getSettingDefaults()`, `resetToDefaults()`, `setting.ts`
|
||||
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
||||
@@ -380,23 +370,25 @@ Nodes (2): emptyTabCounts(), useQcWorkOrderTabUnfinishedCounts()
|
||||
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
||||
- **Thin community `Community 77`** (3 nodes): `emptyTabCounts()`, `useProductionWorkOrderTabStepCounts()`, `useProductionWorkOrderTabStepCounts.ts`
|
||||
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
||||
- **Thin community `Community 79`** (3 nodes): `emptyTabCounts()`, `useQcWorkOrderTabUnfinishedCounts()`, `useQcWorkOrderTabUnfinishedCounts.ts`
|
||||
- **Thin community `Community 79`** (3 nodes): `initialProgress()`, `useQcWorkOrderAttachmentExport()`, `useQcWorkOrderAttachmentExport.ts`
|
||||
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
||||
- **Thin community `Community 80`** (3 nodes): `emptyTabCounts()`, `useQcWorkOrderTabUnfinishedCounts()`, `useQcWorkOrderTabUnfinishedCounts.ts`
|
||||
Too small to be a meaningful cluster - may be noise or needs more connections extracted.
|
||||
|
||||
## Suggested Questions
|
||||
_Questions this graph is uniquely positioned to answer:_
|
||||
|
||||
- **Why does `get()` connect `Community 0` to `Community 1`, `Community 2`, `Community 4`, `Community 5`, `Community 6`, `Community 7`, `Community 8`, `Community 9`, `Community 10`, `Community 11`, `Community 13`, `Community 16`, `Community 17`, `Community 18`, `Community 19`, `Community 23`, `Community 25`, `Community 26`, `Community 27`, `Community 29`, `Community 30`, `Community 31`, `Community 32`, `Community 33`, `Community 36`, `Community 38`, `Community 50`, `Community 52`, `Community 53`, `Community 54`, `Community 62`, `Community 63`, `Community 64`?**
|
||||
_High betweenness centrality (0.299) - this node is a cross-community bridge._
|
||||
- **Why does `push()` connect `Community 2` to `Community 0`, `Community 1`, `Community 4`, `Community 5`, `Community 6`, `Community 7`, `Community 8`, `Community 10`, `Community 12`, `Community 14`, `Community 15`, `Community 17`, `Community 20`, `Community 21`, `Community 23`, `Community 25`, `Community 27`, `Community 29`, `Community 40`?**
|
||||
_High betweenness centrality (0.211) - this node is a cross-community bridge._
|
||||
- **Why does `handleDynamicRoutes()` connect `Community 3` to `Community 8`, `Community 26`, `Community 27`, `Community 29`?**
|
||||
_High betweenness centrality (0.044) - this node is a cross-community bridge._
|
||||
- **Are the 276 inferred relationships involving `get()` (e.g. with `buildNodeCodePathFromFlat()` and `collectLeafFacilityNodesInTreeOrder()`) actually correct?**
|
||||
_`get()` has 276 INFERRED edges - model-reasoned connections that need verification._
|
||||
- **Are the 68 inferred relationships involving `push()` (e.g. with `refreshQcMenuBadges()` and `collectLeafFacilityNodesInTreeOrder()`) actually correct?**
|
||||
_`push()` has 68 INFERRED edges - model-reasoned connections that need verification._
|
||||
- **Are the 21 inferred relationships involving `emit()` (e.g. with `handleSubmit()` and `handleBlur()`) actually correct?**
|
||||
_`emit()` has 21 INFERRED edges - model-reasoned connections that need verification._
|
||||
- **Why does `get()` connect `Community 0` to `Community 1`, `Community 2`, `Community 3`, `Community 5`, `Community 6`, `Community 7`, `Community 8`, `Community 10`, `Community 11`, `Community 12`, `Community 13`, `Community 14`, `Community 15`, `Community 18`, `Community 20`, `Community 21`, `Community 24`, `Community 25`, `Community 26`, `Community 27`, `Community 29`, `Community 30`, `Community 31`, `Community 39`, `Community 41`, `Community 44`, `Community 63`, `Community 64`?**
|
||||
_High betweenness centrality (0.303) - this node is a cross-community bridge._
|
||||
- **Why does `push()` connect `Community 1` to `Community 32`, `Community 0`, `Community 2`, `Community 3`, `Community 5`, `Community 7`, `Community 9`, `Community 10`, `Community 12`, `Community 14`, `Community 15`, `Community 16`, `Community 17`, `Community 18`, `Community 27`?**
|
||||
_High betweenness centrality (0.179) - this node is a cross-community bridge._
|
||||
- **Why does `handleDynamicRoutes()` connect `Community 4` to `Community 24`, `Community 18`, `Community 27`?**
|
||||
_High betweenness centrality (0.031) - this node is a cross-community bridge._
|
||||
- **Are the 277 inferred relationships involving `get()` (e.g. with `buildNodeCodePathFromFlat()` and `collectLeafFacilityNodesInTreeOrder()`) actually correct?**
|
||||
_`get()` has 277 INFERRED edges - model-reasoned connections that need verification._
|
||||
- **Are the 69 inferred relationships involving `push()` (e.g. with `refreshQcMenuBadges()` and `collectLeafFacilityNodesInTreeOrder()`) actually correct?**
|
||||
_`push()` has 69 INFERRED edges - model-reasoned connections that need verification._
|
||||
- **Are the 20 inferred relationships involving `emit()` (e.g. with `handleSubmit()` and `handleDialogClose()`) actually correct?**
|
||||
_`emit()` has 20 INFERRED edges - model-reasoned connections that need verification._
|
||||
- **Are the 18 inferred relationships involving `set()` (e.g. with `buildNodeCodePathFromFlat()` and `collectLeafFacilityNodesInTreeOrder()`) actually correct?**
|
||||
_`set()` has 18 INFERRED edges - model-reasoned connections that need verification._
|
||||
@@ -57,12 +57,12 @@
|
||||
</div>
|
||||
<div id="legend"></div>
|
||||
</div>
|
||||
<div id="stats">2719 nodes · 3738 edges · 334 communities</div>
|
||||
<div id="stats">2767 nodes · 3805 edges · 342 communities</div>
|
||||
</div>
|
||||
<script>
|
||||
const RAW_NODES = [{"id": "app_vue", "label": "App.vue", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 10.3, "font": {"size": 0, "color": "#ffffff"}, "title": "App.vue", "community": 47, "community_name": "Community 47", "source_file": "App.vue", "file_type": "code", "degree": 3}, {"id": "src_app_refreshbuttonautoicons", "label": "refreshButtonAutoIcons()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 10.1, "font": {"size": 0, "color": "#ffffff"}, "title": "refreshButtonAutoIcons()", "community": 47, "community_name": "Community 47", "source_file": "App.vue", "file_type": "code", "degree": 1}, {"id": "src_app_refreshpaneltitleicons", "label": "refreshPanelTitleIcons()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 10.1, "font": {"size": 0, "color": "#ffffff"}, "title": "refreshPanelTitleIcons()", "community": 47, "community_name": "Community 47", "source_file": "App.vue", "file_type": "code", "degree": 1}, {"id": "main_ts", "label": "main.ts", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 10.4, "font": {"size": 0, "color": "#ffffff"}, "title": "main.ts", "community": 47, "community_name": "Community 47", "source_file": "main.ts", "file_type": "code", "degree": 4}, {"id": "src_main_masksecret", "label": "maskSecret()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "maskSecret()", "community": 47, "community_name": "Community 47", "source_file": "main.ts", "file_type": "code", "degree": 2}, {"id": "src_main_logapicryptobootinfo", "label": "logApiCryptoBootInfo()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "logApiCryptoBootInfo()", "community": 47, "community_name": "Community 47", "source_file": "main.ts", "file_type": "code", "degree": 2}, {"id": "env_d_ts", "label": "env.d.ts", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "env.d.ts", "community": 113, "community_name": "Community 113", "source_file": "env.d.ts", "file_type": "code", "degree": 0}, {"id": "shims_loose_d_ts", "label": "shims-loose.d.ts", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "shims-loose.d.ts", "community": 114, "community_name": "Community 114", "source_file": "shims-loose.d.ts", "file_type": "code", "degree": 0}, {"id": "directives_index_ts", "label": "index.ts", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 10.1, "font": {"size": 0, "color": "#ffffff"}, "title": "index.ts", "community": 28, "community_name": "Community 28", "source_file": "directives/index.ts", "file_type": "code", "degree": 1}, {"id": "directives_index_setupglobdirectives", "label": "setupGlobDirectives()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "setupGlobDirectives()", "community": 28, "community_name": "Community 28", "source_file": "directives/index.ts", "file_type": "code", "degree": 5}, {"id": "directives_core_roles_ts", "label": "roles.ts", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 10.3, "font": {"size": 0, "color": "#ffffff"}, "title": "roles.ts", "community": 28, "community_name": "Community 28", "source_file": "directives/core/roles.ts", "file_type": "code", "degree": 3}, {"id": "core_roles_checkrolepermission", "label": "checkRolePermission()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "checkRolePermission()", "community": 28, "community_name": "Community 28", "source_file": "directives/core/roles.ts", "file_type": "code", "degree": 2}, {"id": "core_roles_removeelement", "label": "removeElement()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "removeElement()", "community": 28, "community_name": "Community 28", "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 LEGEND = [{"cid": 0, "color": "#4E79A7", "label": "Community 0", "count": 441}, {"cid": 1, "color": "#F28E2B", "label": "Community 1", "count": 119}, {"cid": 2, "color": "#E15759", "label": "Community 2", "count": 111}, {"cid": 3, "color": "#76B7B2", "label": "Community 3", "count": 94}, {"cid": 4, "color": "#59A14F", "label": "Community 4", "count": 92}, {"cid": 5, "color": "#EDC948", "label": "Community 5", "count": 89}, {"cid": 6, "color": "#B07AA1", "label": "Community 6", "count": 74}, {"cid": 7, "color": "#FF9DA7", "label": "Community 7", "count": 69}, {"cid": 8, "color": "#9C755F", "label": "Community 8", "count": 64}, {"cid": 9, "color": "#BAB0AC", "label": "Community 9", "count": 64}, {"cid": 10, "color": "#4E79A7", "label": "Community 10", "count": 61}, {"cid": 11, "color": "#F28E2B", "label": "Community 11", "count": 61}, {"cid": 12, "color": "#E15759", "label": "Community 12", "count": 59}, {"cid": 13, "color": "#76B7B2", "label": "Community 13", "count": 58}, {"cid": 14, "color": "#59A14F", "label": "Community 14", "count": 54}, {"cid": 15, "color": "#EDC948", "label": "Community 15", "count": 49}, {"cid": 16, "color": "#B07AA1", "label": "Community 16", "count": 48}, {"cid": 17, "color": "#FF9DA7", "label": "Community 17", "count": 47}, {"cid": 18, "color": "#9C755F", "label": "Community 18", "count": 44}, {"cid": 19, "color": "#BAB0AC", "label": "Community 19", "count": 44}, {"cid": 20, "color": "#4E79A7", "label": "Community 20", "count": 42}, {"cid": 21, "color": "#F28E2B", "label": "Community 21", "count": 40}, {"cid": 22, "color": "#E15759", "label": "Community 22", "count": 37}, {"cid": 23, "color": "#76B7B2", "label": "Community 23", "count": 37}, {"cid": 24, "color": "#59A14F", "label": "Community 24", "count": 34}, {"cid": 25, "color": "#EDC948", "label": "Community 25", "count": 34}, {"cid": 26, "color": "#B07AA1", "label": "Community 26", "count": 29}, {"cid": 27, "color": "#FF9DA7", "label": "Community 27", "count": 24}, {"cid": 28, "color": "#9C755F", "label": "Community 28", "count": 22}, {"cid": 29, "color": "#BAB0AC", "label": "Community 29", "count": 22}, {"cid": 30, "color": "#4E79A7", "label": "Community 30", "count": 22}, {"cid": 31, "color": "#F28E2B", "label": "Community 31", "count": 22}, {"cid": 32, "color": "#E15759", "label": "Community 32", "count": 19}, {"cid": 33, "color": "#76B7B2", "label": "Community 33", "count": 19}, {"cid": 34, "color": "#59A14F", "label": "Community 34", "count": 17}, {"cid": 35, "color": "#EDC948", "label": "Community 35", "count": 16}, {"cid": 36, "color": "#B07AA1", "label": "Community 36", "count": 14}, {"cid": 37, "color": "#FF9DA7", "label": "Community 37", "count": 13}, {"cid": 38, "color": "#9C755F", "label": "Community 38", "count": 13}, {"cid": 39, "color": "#BAB0AC", "label": "Community 39", "count": 9}, {"cid": 40, "color": "#4E79A7", "label": "Community 40", "count": 9}, {"cid": 41, "color": "#F28E2B", "label": "Community 41", "count": 9}, {"cid": 42, "color": "#E15759", "label": "Community 42", "count": 9}, {"cid": 43, "color": "#76B7B2", "label": "Community 43", "count": 9}, {"cid": 44, "color": "#59A14F", "label": "Community 44", "count": 8}, {"cid": 45, "color": "#EDC948", "label": "Community 45", "count": 8}, {"cid": 46, "color": "#B07AA1", "label": "Community 46", "count": 8}, {"cid": 47, "color": "#FF9DA7", "label": "Community 47", "count": 7}, {"cid": 48, "color": "#9C755F", "label": "Community 48", "count": 7}, {"cid": 49, "color": "#BAB0AC", "label": "Community 49", "count": 7}, {"cid": 50, "color": "#4E79A7", "label": "Community 50", "count": 7}, {"cid": 51, "color": "#F28E2B", "label": "Community 51", "count": 6}, {"cid": 52, "color": "#E15759", "label": "Community 52", "count": 6}, {"cid": 53, "color": "#76B7B2", "label": "Community 53", "count": 6}, {"cid": 54, "color": "#59A14F", "label": "Community 54", "count": 6}, {"cid": 55, "color": "#EDC948", "label": "Community 55", "count": 5}, {"cid": 56, "color": "#B07AA1", "label": "Community 56", "count": 5}, {"cid": 57, "color": "#FF9DA7", "label": "Community 57", "count": 5}, {"cid": 58, "color": "#9C755F", "label": "Community 58", "count": 5}, {"cid": 59, "color": "#BAB0AC", "label": "Community 59", "count": 5}, {"cid": 60, "color": "#4E79A7", "label": "Community 60", "count": 4}, {"cid": 61, "color": "#F28E2B", "label": "Community 61", "count": 4}, {"cid": 62, "color": "#E15759", "label": "Community 62", "count": 4}, {"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": 3}, {"cid": 68, "color": "#9C755F", "label": "Community 68", "count": 3}, {"cid": 69, "color": "#BAB0AC", "label": "Community 69", "count": 3}, {"cid": 70, "color": "#4E79A7", "label": "Community 70", "couLine truncated
|
||||
const RAW_NODES = [{"id": "app_vue", "label": "App.vue", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.3, "font": {"size": 0, "color": "#ffffff"}, "title": "App.vue", "community": 50, "community_name": "Community 50", "source_file": "App.vue", "file_type": "code", "degree": 3}, {"id": "src_app_refreshbuttonautoicons", "label": "refreshButtonAutoIcons()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.1, "font": {"size": 0, "color": "#ffffff"}, "title": "refreshButtonAutoIcons()", "community": 50, "community_name": "Community 50", "source_file": "App.vue", "file_type": "code", "degree": 1}, {"id": "src_app_refreshpaneltitleicons", "label": "refreshPanelTitleIcons()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.1, "font": {"size": 0, "color": "#ffffff"}, "title": "refreshPanelTitleIcons()", "community": 50, "community_name": "Community 50", "source_file": "App.vue", "file_type": "code", "degree": 1}, {"id": "main_ts", "label": "main.ts", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.4, "font": {"size": 0, "color": "#ffffff"}, "title": "main.ts", "community": 50, "community_name": "Community 50", "source_file": "main.ts", "file_type": "code", "degree": 4}, {"id": "src_main_masksecret", "label": "maskSecret()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "maskSecret()", "community": 50, "community_name": "Community 50", "source_file": "main.ts", "file_type": "code", "degree": 2}, {"id": "src_main_logapicryptobootinfo", "label": "logApiCryptoBootInfo()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "logApiCryptoBootInfo()", "community": 50, "community_name": "Community 50", "source_file": "main.ts", "file_type": "code", "degree": 2}, {"id": "env_d_ts", "label": "env.d.ts", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "env.d.ts", "community": 116, "community_name": "Community 116", "source_file": "env.d.ts", "file_type": "code", "degree": 0}, {"id": "shims_loose_d_ts", "label": "shims-loose.d.ts", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "shims-loose.d.ts", "community": 117, "community_name": "Community 117", "source_file": "shims-loose.d.ts", "file_type": "code", "degree": 0}, {"id": "directives_index_ts", "label": "index.ts", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 10.1, "font": {"size": 0, "color": "#ffffff"}, "title": "index.ts", "community": 28, "community_name": "Community 28", "source_file": "directives/index.ts", "file_type": "code", "degree": 1}, {"id": "directives_index_setupglobdirectives", "label": "setupGlobDirectives()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 10.5, "font": {"size": 0, "color": "#ffffff"}, "title": "setupGlobDirectives()", "community": 28, "community_name": "Community 28", "source_file": "directives/index.ts", "file_type": "code", "degree": 5}, {"id": "directives_core_roles_ts", "label": "roles.ts", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 10.3, "font": {"size": 0, "color": "#ffffff"}, "title": "roles.ts", "community": 28, "community_name": "Community 28", "source_file": "directives/core/roles.ts", "file_type": "code", "degree": 3}, {"id": "core_roles_checkrolepermission", "label": "checkRolePermission()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "checkRolePermission()", "community": 28, "community_name": "Community 28", "source_file": "directives/core/roles.ts", "file_type": "code", "degree": 2}, {"id": "core_roles_removeelement", "label": "removeElement()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "removeElement()", "community": 28, "community_name": "Community 28", "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 LEGEND = [{"cid": 0, "color": "#4E79A7", "label": "Community 0", "count": 421}, {"cid": 1, "color": "#F28E2B", "label": "Community 1", "count": 130}, {"cid": 2, "color": "#E15759", "label": "Community 2", "count": 120}, {"cid": 3, "color": "#76B7B2", "label": "Community 3", "count": 103}, {"cid": 4, "color": "#59A14F", "label": "Community 4", "count": 102}, {"cid": 5, "color": "#EDC948", "label": "Community 5", "count": 89}, {"cid": 6, "color": "#B07AA1", "label": "Community 6", "count": 88}, {"cid": 7, "color": "#FF9DA7", "label": "Community 7", "count": 79}, {"cid": 8, "color": "#9C755F", "label": "Community 8", "count": 78}, {"cid": 9, "color": "#BAB0AC", "label": "Community 9", "count": 77}, {"cid": 10, "color": "#4E79A7", "label": "Community 10", "count": 71}, {"cid": 11, "color": "#F28E2B", "label": "Community 11", "count": 62}, {"cid": 12, "color": "#E15759", "label": "Community 12", "count": 61}, {"cid": 13, "color": "#76B7B2", "label": "Community 13", "count": 61}, {"cid": 14, "color": "#59A14F", "label": "Community 14", "count": 50}, {"cid": 15, "color": "#EDC948", "label": "Community 15", "count": 47}, {"cid": 16, "color": "#B07AA1", "label": "Community 16", "count": 42}, {"cid": 17, "color": "#FF9DA7", "label": "Community 17", "count": 40}, {"cid": 18, "color": "#9C755F", "label": "Community 18", "count": 38}, {"cid": 19, "color": "#BAB0AC", "label": "Community 19", "count": 37}, {"cid": 20, "color": "#4E79A7", "label": "Community 20", "count": 36}, {"cid": 21, "color": "#F28E2B", "label": "Community 21", "count": 34}, {"cid": 22, "color": "#E15759", "label": "Community 22", "count": 34}, {"cid": 23, "color": "#76B7B2", "label": "Community 23", "count": 33}, {"cid": 24, "color": "#59A14F", "label": "Community 24", "count": 29}, {"cid": 25, "color": "#EDC948", "label": "Community 25", "count": 29}, {"cid": 26, "color": "#B07AA1", "label": "Community 26", "count": 24}, {"cid": 27, "color": "#FF9DA7", "label": "Community 27", "count": 24}, {"cid": 28, "color": "#9C755F", "label": "Community 28", "count": 22}, {"cid": 29, "color": "#BAB0AC", "label": "Community 29", "count": 22}, {"cid": 30, "color": "#4E79A7", "label": "Community 30", "count": 19}, {"cid": 31, "color": "#F28E2B", "label": "Community 31", "count": 19}, {"cid": 32, "color": "#E15759", "label": "Community 32", "count": 18}, {"cid": 33, "color": "#76B7B2", "label": "Community 33", "count": 18}, {"cid": 34, "color": "#59A14F", "label": "Community 34", "count": 17}, {"cid": 35, "color": "#EDC948", "label": "Community 35", "count": 16}, {"cid": 36, "color": "#B07AA1", "label": "Community 36", "count": 15}, {"cid": 37, "color": "#FF9DA7", "label": "Community 37", "count": 14}, {"cid": 38, "color": "#9C755F", "label": "Community 38", "count": 14}, {"cid": 39, "color": "#BAB0AC", "label": "Community 39", "count": 14}, {"cid": 40, "color": "#4E79A7", "label": "Community 40", "count": 13}, {"cid": 41, "color": "#F28E2B", "label": "Community 41", "count": 13}, {"cid": 42, "color": "#E15759", "label": "Community 42", "count": 9}, {"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": 8}, {"cid": 48, "color": "#9C755F", "label": "Community 48", "count": 8}, {"cid": 49, "color": "#BAB0AC", "label": "Community 49", "count": 8}, {"cid": 50, "color": "#4E79A7", "label": "Community 50", "count": 7}, {"cid": 51, "color": "#F28E2B", "label": "Community 51", "count": 7}, {"cid": 52, "color": "#E15759", "label": "Community 52", "count": 7}, {"cid": 53, "color": "#76B7B2", "label": "Community 53", "count": 6}, {"cid": 54, "color": "#59A14F", "label": "Community 54", "count": 6}, {"cid": 55, "color": "#EDC948", "label": "Community 55", "count": 5}, {"cid": 56, "color": "#B07AA1", "label": "Community 56", "count": 5}, {"cid": 57, "color": "#FF9DA7", "label": "Community 57", "count": 5}, {"cid": 58, "color": "#9C755F", "label": "Community 58", "count": 5}, {"cid": 59, "color": "#BAB0AC", "label": "Community 59", "count": 5}, {"cid": 60, "color": "#4E79A7", "label": "Community 60", "count": 4}, {"cid": 61, "color": "#F28E2B", "label": "Community 61", "count": 4}, {"cid": 62, "color": "#E15759", "label": "Community 62", "count": 4}, {"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": 3}, {"cid": 68, "color": "#9C755F", "label": "Community 68", "count": 3}, {"cid": 69, "color": "#BAB0AC", "label": "Community 69", "count": 3}, {"cid": 70, "color": "#4E79A7", "label": "Community 70",Line truncated
|
||||
|
||||
// HTML-escape helper — prevents XSS when injecting graph data into innerHTML
|
||||
function esc(s) {
|
||||
|
||||
+5098
-3340
File diff suppressed because it is too large.
Load diff
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/App.vue": 1782802580.8673093,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/App.vue": 1782893851.4905877,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/main.ts": 1782442850.965947,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/env.d.ts": 1781272556.3788364,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/shims-loose.d.ts": 1781272556.417826,
|
||||
@@ -17,10 +17,11 @@
|
||||
"/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/api/api.d.ts": 1781272556.3606477,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/types/import/components.d.ts": 1782822357.223359,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/types/import/auto-imports.d.ts": 1782822355.049375,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/types/import/components.d.ts": 1782894443.0741875,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/types/import/auto-imports.d.ts": 1782894408.0549,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/types/store/index.ts": 1781272556.364766,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/types/router/index.ts": 1782394569.8806834,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/composables/useAttachmentDropZone.ts": 1782873161.9839864,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/locales/index.ts": 1781272556.3657222,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/config/pilot-biz-type.ts": 1781682539.4897008,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/config/setting.ts": 1781406298.257571,
|
||||
@@ -49,18 +50,21 @@
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/sample-production-reception-fields.ts": 1782806741.4880455,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/qc-material-ui.ts": 1781525352.6976836,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/qc-work-order-tabs.ts": 1782802260.7327676,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/qc-work-order-card-meta.ts": 1782806522.9861114,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/qc-work-order-unfinished-badge.ts": 1782878267.729195,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/qc-work-order-card-meta.ts": 1782893963.9922342,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/qc-work-order-category.ts": 1782393809.3917818,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/router.ts": 1781272556.3875713,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/production-mine-task-groups.ts": 1782703027.2893605,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/qc-mine-task-groups.ts": 1782802288.7511663,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/qc-mine-task-groups.ts": 1782888808.4986835,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/expected-cell-count.ts": 1782705039.2515786,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/protocol-payment-labels.ts": 1782713885.8380322,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/status-tag-registry.ts": 1782713884.4535882,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/production-work-order-card-meta.ts": 1782806522.9871194,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/protocol-payment-labels.ts": 1782893910.9937537,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/status-tag-registry.ts": 1782893988.0240471,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/production-work-order-card-meta.ts": 1782894000.6502283,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/fetch-paged-list.ts": 1781272556.3903377,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/decimal-input-format.ts": 1782807247.117702,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/sort-order.ts": 1781272556.3913012,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/void-type-dict.ts": 1782893754.3565452,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/qc-work-order-attachment-export.ts": 1782875352.75266,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/datetime-display.ts": 1782806208.3904786,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/sample-reception-lab-storage-code.ts": 1782378453.1031013,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/outbound-qc-pilot-view-sections.ts": 1781566346.7618802,
|
||||
@@ -69,14 +73,17 @@
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/equipment-select.ts": 1781524048.96866,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/qc-item-param-options.ts": 1782446792.147386,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/clinical-payment-flow-steps.ts": 1782806499.3105526,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/production-work-order-step-badge.ts": 1782881450.5731556,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/donation-standard-import-parse.ts": 1782564663.323319,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/copy-text.ts": 1781272556.4018052,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/tree-path.ts": 1781272556.402468,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/mask-sensitive.ts": 1781272556.4029639,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/sample-reception-view-sections.ts": 1782806513.145186,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/production-labels.ts": 1782605793.6179895,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/inbound-sample-special-mark.ts": 1782889894.1376855,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/production-work-order-category.ts": 1782703985.4586673,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/production-menu-badge.ts": 1782703040.9438033,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/attachment-zip.ts": 1782875325.855345,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/numeric-input-parse.ts": 1782179343.5953708,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/index.ts": 1781272556.410244,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/cell-product-type.ts": 1782706056.1567264,
|
||||
@@ -129,114 +136,118 @@
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/http/error.ts": 1781272556.4091117,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/socket/index.ts": 1781272556.4146817,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/utils/router/sidebar-menu-filter.ts": 1781272556.4163456,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/tables/art-table/index.vue": 1781272556.4191,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/tables/art-table-header/index.vue": 1781272556.4209464,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/forms/art-search-bar/index.vue": 1781272556.422587,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/forms/art-form/index.vue": 1781272556.4241018,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/forms/art-button-more/index.vue": 1781272556.4245436,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/forms/art-excel-import/index.vue": 1781272556.425213,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/forms/art-excel-export/index.vue": 1781272556.426595,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/forms/art-drag-verify/index.vue": 1781272556.427947,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/forms/art-wang-editor/index.vue": 1781272556.430018,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/forms/art-button-table/index.vue": 1781272556.4313827,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/widget/art-icon-button/index.vue": 1781272556.431638,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/cards/art-bar-chart-card/index.vue": 1781272556.432135,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/cards/art-data-list-card/index.vue": 1781272556.4327755,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/cards/art-timeline-list-card/index.vue": 1781272556.4341109,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/cards/art-stats-card/index.vue": 1781272556.4348192,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/cards/art-image-card/index.vue": 1781272556.4353764,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/cards/art-donut-chart-card/index.vue": 1781272556.4359744,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/cards/art-progress-card/index.vue": 1781272556.4369423,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/cards/art-line-chart-card/index.vue": 1781272556.437633,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/charts/art-scatter-chart/index.vue": 1781272556.4388356,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/charts/art-k-line-chart/index.vue": 1781272556.4413047,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/charts/art-dual-bar-compare-chart/index.vue": 1781272556.4511123,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/charts/art-bar-chart/index.vue": 1781272556.463116,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/charts/art-line-chart/index.vue": 1781272556.469253,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/charts/art-ring-chart/index.vue": 1781272556.4716287,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/charts/art-radar-chart/index.vue": 1781272556.4735081,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/charts/art-h-bar-chart/index.vue": 1781272556.481099,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/others/art-watermark/index.vue": 1781272556.4826052,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/others/art-menu-right/index.vue": 1781272556.483974,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/banners/art-card-banner/index.vue": 1781272556.4851887,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/banners/art-basic-banner/index.vue": 1781272556.4864144,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/layouts/art-global-component/index.vue": 1781272556.4869678,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/layouts/art-settings-panel/index.vue": 1781272556.4875474,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/tables/art-table/index.vue": 1782893852.037499,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/tables/art-table-header/index.vue": 1782893852.0053234,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/forms/art-search-bar/index.vue": 1782893851.915658,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/forms/art-form/index.vue": 1782893851.6923792,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/forms/art-button-more/index.vue": 1782893851.6535888,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/forms/art-excel-import/index.vue": 1782893851.6998997,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/forms/art-excel-export/index.vue": 1782893851.6742005,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/forms/art-drag-verify/index.vue": 1782893851.6500359,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/forms/art-wang-editor/index.vue": 1782893851.6251311,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/forms/art-button-table/index.vue": 1782893851.6097448,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/widget/art-icon-button/index.vue": 1782893851.5548317,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/cards/art-bar-chart-card/index.vue": 1782893852.157002,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/cards/art-data-list-card/index.vue": 1782893852.1262074,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/cards/art-timeline-list-card/index.vue": 1782893852.1727722,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/cards/art-stats-card/index.vue": 1782893852.1468773,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/cards/art-image-card/index.vue": 1782893852.1106105,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/cards/art-donut-chart-card/index.vue": 1782893852.0094585,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/cards/art-progress-card/index.vue": 1782893851.9591472,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/cards/art-line-chart-card/index.vue": 1782893851.9381645,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/charts/art-scatter-chart/index.vue": 1782893851.8783045,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/charts/art-k-line-chart/index.vue": 1782893851.9770455,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/charts/art-dual-bar-compare-chart/index.vue": 1782893851.9422753,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/charts/art-bar-chart/index.vue": 1782893851.7151058,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/charts/art-line-chart/index.vue": 1782893851.666113,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/charts/art-ring-chart/index.vue": 1782893851.646269,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/charts/art-radar-chart/index.vue": 1782893851.6165102,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/charts/art-h-bar-chart/index.vue": 1782893851.6032681,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/others/art-watermark/index.vue": 1782893851.5813904,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/others/art-menu-right/index.vue": 1782893851.5580697,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/banners/art-card-banner/index.vue": 1782893851.5446744,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/banners/art-basic-banner/index.vue": 1782893851.519256,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/layouts/art-global-component/index.vue": 1782893853.4671311,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/layouts/art-settings-panel/index.vue": 1782893853.4277167,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/layouts/art-settings-panel/composables/useSettingsPanel.ts": 1781661158.6601012,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/layouts/art-settings-panel/composables/useSettingsConfig.ts": 1781272556.4908195,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/layouts/art-settings-panel/composables/useSettingsState.ts": 1781272556.491559,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/layouts/art-settings-panel/composables/useSettingsHandlers.ts": 1781272556.4939222,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/layouts/art-settings-panel/widget/ThemeSettings.vue": 1781272556.4955838,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/layouts/art-settings-panel/widget/SettingHeader.vue": 1781272556.496231,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/layouts/art-settings-panel/widget/SettingItem.vue": 1781272556.4978695,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/layouts/art-settings-panel/widget/MenuStyleSettings.vue": 1781272556.5011399,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/layouts/art-settings-panel/widget/BasicSettings.vue": 1781272556.5070302,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/layouts/art-settings-panel/widget/SettingDrawer.vue": 1781272556.51664,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/layouts/art-settings-panel/widget/SettingActions.vue": 1781272556.5243568,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/layouts/art-settings-panel/widget/ColorSettings.vue": 1781272556.5299892,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/layouts/art-settings-panel/widget/MenuLayoutSettings.vue": 1781272556.539038,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/layouts/art-settings-panel/widget/SectionTitle.vue": 1781272556.547113,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/layouts/art-settings-panel/widget/BoxStyleSettings.vue": 1781272556.5547402,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/layouts/art-settings-panel/widget/ContainerSettings.vue": 1781272556.5589046,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/layouts/art-work-tab/index.vue": 1781351189.0380108,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/layouts/art-chat-window/index.vue": 1781272556.562926,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/layouts/art-page-content/index.vue": 1781272556.56442,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/layouts/art-menus/art-horizontal-menu/index.vue": 1781272556.5652099,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/layouts/art-menus/art-horizontal-menu/widget/HorizontalSubmenu.vue": 1782404678.3207965,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/layouts/art-menus/art-mixed-menu/index.vue": 1781401124.1983705,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/layouts/art-menus/art-sidebar-menu/index.vue": 1781406299.7525744,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/layouts/art-menus/art-sidebar-menu/widget/SidebarSubmenu.vue": 1782404695.2500448,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/layouts/art-fireworks-effect/index.vue": 1781272556.5941117,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/layouts/art-global-search/index.vue": 1781272556.597667,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/layouts/art-notification/index.vue": 1781272556.6005983,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/layouts/art-fast-enter/index.vue": 1781272556.6020403,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/layouts/art-screen-lock/index.vue": 1781272556.6039116,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/layouts/art-breadcrumb/index.vue": 1781272556.6048281,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/layouts/art-header-bar/index.vue": 1781272556.6058884,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/layouts/art-header-bar/widget/ArtUserMenu.vue": 1782122644.9109273,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/layouts/art-header-bar/widget/UserProfileDialog.vue": 1781563767.298543,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/theme/theme-svg/index.vue": 1781272556.6095326,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/views/result/ArtResultPage.vue": 1781272556.610506,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/views/exception/ExceptionIllustration.vue": 1781272556.6118734,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/views/exception/ArtException.vue": 1781272556.6129858,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/views/login/AuthTopBar.vue": 1781272556.6135185,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/views/login/LoginLeftView.vue": 1781272556.6147635,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/text-effect/art-text-scroll/index.vue": 1781272556.6165035,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/text-effect/art-count-to/index.vue": 1781272556.6178985,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/text-effect/art-festival-text-scroll/index.vue": 1781272556.6184907,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/base/art-svg-icon/index.vue": 1781272556.61891,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/base/art-back-to-top/index.vue": 1781272556.6195998,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/base/art-logo/index.vue": 1781272556.6201615,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/media/art-video-player/index.vue": 1781272556.6210992,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/media/art-cutter-img/index.vue": 1781272556.6223109,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/sample-transport-form-section/index.vue": 1782565160.7818007,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/protocol-finance-confirm-fields/index.vue": 1781585388.6311953,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/layouts/art-settings-panel/widget/ThemeSettings.vue": 1782893853.2473464,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/layouts/art-settings-panel/widget/SettingHeader.vue": 1782893853.2139003,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/layouts/art-settings-panel/widget/SettingItem.vue": 1782893853.1873887,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/layouts/art-settings-panel/widget/MenuStyleSettings.vue": 1782893853.1573272,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/layouts/art-settings-panel/widget/BasicSettings.vue": 1782893853.1193702,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/layouts/art-settings-panel/widget/SettingDrawer.vue": 1782893853.0867703,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/layouts/art-settings-panel/widget/SettingActions.vue": 1782893853.028656,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/layouts/art-settings-panel/widget/ColorSettings.vue": 1782893852.967135,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/layouts/art-settings-panel/widget/MenuLayoutSettings.vue": 1782893852.8678243,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/layouts/art-settings-panel/widget/SectionTitle.vue": 1782893852.8545432,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/layouts/art-settings-panel/widget/BoxStyleSettings.vue": 1782893852.8381548,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/layouts/art-settings-panel/widget/ContainerSettings.vue": 1782893852.8006544,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/layouts/art-work-tab/index.vue": 1782893852.7315974,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/layouts/art-chat-window/index.vue": 1782893852.684171,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/layouts/art-page-content/index.vue": 1782893852.6055937,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/layouts/art-menus/art-horizontal-menu/index.vue": 1782893852.4847596,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/layouts/art-menus/art-horizontal-menu/widget/HorizontalSubmenu.vue": 1782893852.4173005,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/layouts/art-menus/art-mixed-menu/index.vue": 1782893852.3397176,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/layouts/art-menus/art-sidebar-menu/index.vue": 1782893852.3144279,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/layouts/art-menus/art-sidebar-menu/widget/SidebarSubmenu.vue": 1782893852.2933555,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/layouts/art-fireworks-effect/index.vue": 1782893852.2444534,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/layouts/art-global-search/index.vue": 1782893852.3260999,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/layouts/art-notification/index.vue": 1782893852.2745683,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/layouts/art-fast-enter/index.vue": 1782893852.238584,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/layouts/art-screen-lock/index.vue": 1782893852.30928,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/layouts/art-breadcrumb/index.vue": 1782893852.2839568,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/layouts/art-header-bar/index.vue": 1782893852.248846,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/layouts/art-header-bar/widget/ArtUserMenu.vue": 1782893852.11496,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/layouts/art-header-bar/widget/UserProfileDialog.vue": 1782893852.021898,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/theme/theme-svg/index.vue": 1782893852.0473835,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/views/result/ArtResultPage.vue": 1782893852.0002468,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/views/exception/ExceptionIllustration.vue": 1782893851.954999,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/views/exception/ArtException.vue": 1782893851.9232078,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/views/login/AuthTopBar.vue": 1782893851.7064636,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/views/login/LoginLeftView.vue": 1782893851.6700354,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/text-effect/art-text-scroll/index.vue": 1782893851.6424026,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/text-effect/art-count-to/index.vue": 1782893851.6069484,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/text-effect/art-festival-text-scroll/index.vue": 1782893851.5910752,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/base/art-svg-icon/index.vue": 1782893851.5707386,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/base/art-back-to-top/index.vue": 1782893851.5419092,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/base/art-logo/index.vue": 1782893851.5285249,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/media/art-video-player/index.vue": 1782893851.5118508,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/core/media/art-cutter-img/index.vue": 1782893851.4950457,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/sample-transport-form-section/index.vue": 1782893852.3610222,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/protocol-finance-confirm-fields/index.vue": 1782893852.350682,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/protocol-finance-confirm-fields/finance-attachments.ts": 1781272556.6256514,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/qc-task-view-dialog/index.vue": 1782719572.323183,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/clinical-payment-confirm-timeline/index.vue": 1782806499.3062413,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/outbound-material-readonly-panel/index.vue": 1782709501.7382262,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/sample-reception-dual-readonly-panel/index.vue": 1782806452.899446,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/dialog-form-body/index.vue": 1781272556.6276903,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/clinical-payment-submit-readonly/index.vue": 1782806499.3111098,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/sample-qc-info-cards/index.vue": 1782528795.4248698,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/order-operate-local-dialog/index.vue": 1781272556.6297834,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/product-view-dialog/index.vue": 1781563767.2879,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/sample-production-info-cards/index.vue": 1781585388.6388853,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/sample-storage-release-info/index.vue": 1781585388.6396642,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/infusion-schedule-outbound-chain-view/index.vue": 1782806499.3070076,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/work-order-remark-dialog/index.vue": 1781563767.2910764,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/sample-qc-info-grouped-panel/index.vue": 1781596014.9588113,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/clinical-schedule-payment-detail/index.vue": 1782806499.3090854,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/sample-qc-batch-readonly/index.vue": 1782398610.3519263,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/outbound-material-form-sections/index.vue": 1782807285.0492923,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/protocol-payment-detail-readonly/index.vue": 1782806499.3052359,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/qc-item-param-select-editor/index.vue": 1782380052.8264449,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/system-view-dialog/index.vue": 1782806391.4480581,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/production-task-view-dialog/index.vue": 1782806582.4408069,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/order-operate-dialog-bridge/index.vue": 1781272556.644745,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/common/list-datetime-column.vue": 1782806394.0347686,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/common/amount-input/index.vue": 1782807269.934999,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/common/decimal-input/index.vue": 1782807254.2058113,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/qc-task-view-dialog/index.vue": 1782893852.3308268,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/clinical-payment-confirm-timeline/index.vue": 1782893888.54253,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/outbound-material-readonly-panel/index.vue": 1782893852.2706735,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/sample-reception-dual-readonly-panel/index.vue": 1782893852.235278,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/dialog-form-body/index.vue": 1782893852.1647537,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/clinical-payment-submit-readonly/index.vue": 1782893852.1397598,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/sample-qc-info-cards/index.vue": 1782893852.4513032,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/special-sample-display/index.vue": 1782893852.3469865,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/order-operate-local-dialog/index.vue": 1782893852.4089837,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/product-view-dialog/index.vue": 1782893852.3441794,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/sample-production-info-cards/index.vue": 1782893852.297569,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/sample-storage-release-info/index.vue": 1782893852.266822,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/infusion-schedule-outbound-chain-view/index.vue": 1782893852.19879,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/work-order-remark-dialog/index.vue": 1782893852.1691496,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/sample-qc-info-grouped-panel/index.vue": 1782893852.0546591,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/clinical-schedule-payment-detail/index.vue": 1782893852.0159285,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/sample-qc-batch-readonly/index.vue": 1782893851.9487352,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/outbound-material-form-sections/index.vue": 1782893851.934857,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/attachment-zip-progress-dialog/index.vue": 1782893851.6959429,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/protocol-payment-detail-readonly/index.vue": 1782893922.525934,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/sample-code-with-special-display/index.vue": 1782893851.6283524,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/qc-item-param-select-editor/index.vue": 1782893851.5957565,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/system-view-dialog/index.vue": 1782893851.578115,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/production-task-view-dialog/index.vue": 1782893851.5322437,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/order-operate-dialog-bridge/index.vue": 1782893851.5162861,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/business/sample-special-mark-dialog/index.vue": 1782893851.5019739,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/common/list-datetime-column.vue": 1782893851.4989195,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/common/amount-input/index.vue": 1782893851.5061834,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/components/common/decimal-input/index.vue": 1782893851.5090024,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/hooks/index.ts": 1781272556.653748,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/hooks/core/useFastEnter.ts": 1781272556.6454022,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/hooks/core/useTableColumns.ts": 1781272556.6461287,
|
||||
@@ -258,14 +269,14 @@
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/api/outbound-release-review.ts": 1782398621.3842177,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/api/qc-third-party-item.ts": 1781272556.6567156,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/api/env-detect-record.ts": 1782375300.5909576,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/api/storage-release-review.ts": 1782398606.4492025,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/api/storage-release-review.ts": 1782894235.5504115,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/api/production-material.ts": 1782404996.1897874,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/api/workflow.ts": 1781272556.6579714,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/api/production-work-order.ts": 1782719457.5865517,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/api/production-work-order.ts": 1782886679.692672,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/api/sample-production-reception.ts": 1782719155.415783,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/api/qc-task-result.ts": 1782379634.2324347,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/api/protocol-sample-collection.ts": 1781272556.659353,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/api/material-usage.ts": 1781517319.838243,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/api/material-usage.ts": 1782894613.493449,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/api/pre-transit-sample.ts": 1782204427.8344586,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/api/qc-third-party-company.ts": 1781415389.1483624,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/api/collection-protocol.ts": 1781750452.7497737,
|
||||
@@ -273,14 +284,15 @@
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/api/storage-entry-sms-notification.ts": 1781272556.660898,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/api/business.ts": 1781750847.0646322,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/api/admin.ts": 1782600949.367371,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/api/inbound-sample.ts": 1782889889.452178,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/api/ethnic.ts": 1781272556.6658764,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/api/research-donation-sample-collection.ts": 1781272556.6660974,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/api/qc-lab-test-item.ts": 1781272556.666375,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/api/cell-product.ts": 1782710852.6608956,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/api/sample-sms-notification.ts": 1781272556.666838,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/api/material-stock-check.ts": 1781427280.4992144,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/api/research-donation.ts": 1782182859.3901165,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/api/qc-task.ts": 1782601945.343417,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/api/research-donation.ts": 1782893816.502791,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/api/qc-task.ts": 1782886913.2524905,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/api/qc-item-param.ts": 1782446790.5508618,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/api/env-detect-item.ts": 1781272556.668322,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/api/production-task.ts": 1782602751.262628,
|
||||
@@ -289,271 +301,276 @@
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/api/qc-material.ts": 1781690334.9639037,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/api/qc-sms-notification.ts": 1781272556.670129,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/api/system.ts": 1782802585.0325377,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/api/material.ts": 1781346022.817811,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/api/material.ts": 1782894613.4934483,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/api/sample-reception.ts": 1782719389.581961,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/api/auth.ts": 1782122651.4628098,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/api/qc-work-order.ts": 1782802289.7619758,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/auth/login/index.vue": 1781272556.6735966,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/refund-confirm/index.vue": 1781272556.6742516,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/my-material-usage/index.vue": 1781518736.690082,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol/index.vue": 1782806765.0429902,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol/ProtocolStatusChangeDialog.vue": 1781440943.514069,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol/ProtocolViewDialog.vue": 1782806765.0452983,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol/ProtocolAttachmentReadonly.vue": 1781585388.6583154,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol/ProtocolFormDialog.vue": 1782713916.8767238,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol/ProtocolAuditDialog.vue": 1781440939.3081548,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/sample-info/index.vue": 1781599990.94571,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/sample-reception-info/index.vue": 1781272556.6985002,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/payment-info/index.vue": 1781272556.6988573,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/storage-cert/index.vue": 1781272556.6992679,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol-audit/index.vue": 1781599996.9031687,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol-audit/StorageEntryInfoTab.vue": 1781600376.7402449,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol-audit/SampleCollectionInfoTab.vue": 1781272556.7014923,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol-audit/SampleQcInfoTab.vue": 1781600375.004251,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol-audit/SampleReceptionInfoTab.vue": 1781600372.1736586,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol-audit/StorageCertTab.vue": 1781600388.1296115,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol-audit/FullmoonTodoTab.vue": 1782713950.6410708,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol-audit/ProtocolAuditTab.vue": 1782806731.7479634,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol-audit/PaymentInfoTab.vue": 1782806424.3613796,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/material/index.vue": 1782821645.0234518,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/material/MaterialUsageTab.vue": 1782806765.0634851,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/material/MaterialStockCheckTab.vue": 1782807285.11373,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/fullmoon-todo/index.vue": 1781272556.719875,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/storage-entry-info/index.vue": 1781272556.7201529,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/payment-confirm/index.vue": 1782806765.0713005,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/payment-confirm/RefundConfirmTab.vue": 1782806765.0721004,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/payment-confirm/InvoiceRequestTab.vue": 1782806457.7086182,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/material-stock-log/index.vue": 1781346115.5701284,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/outside/Iframe.vue": 1781272556.7246568,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/operations/demo/index.vue": 1781272556.7266567,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/operations/clean-room/index.vue": 1781585388.6729288,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/operations/storage-facility/index.vue": 1782711208.922378,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/operations/exhibition-appointment/index.vue": 1782806765.079744,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/research-donation/audit/index.vue": 1782806731.2692585,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/research-donation/sample-info/index.vue": 1781518738.227001,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/research-donation/sample-info/DonationSampleCollectionInfoTab.vue": 1781272556.7362974,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/research-donation/list/index.vue": 1782806765.0853424,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/research-donation/list/DonationAuditDialog.vue": 1781563767.3746796,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/research-donation/list/DonationViewDialog.vue": 1782806765.0878375,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/research-donation/list/DonationFormDialog.vue": 1782564662.0706358,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/research-donation/list/DonationStatusChangeDialog.vue": 1781563767.3753123,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/dashboard/console/index.vue": 1781272556.7480726,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/tenant/index.vue": 1782806765.0964973,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/order/index.vue": 1781599786.579335,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/unit/index.vue": 1782806855.0186646,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/role/index.vue": 1782806765.1067045,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/post/index.vue": 1782806765.1116176,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/category/index.vue": 1781563806.3563867,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/express/index.vue": 1782806746.9292443,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/user/index.vue": 1782806855.1333377,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/user/detail.vue": 1781563806.885495,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/user/modules/user-dialog.vue": 1781272556.7718394,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/user/modules/user-search.vue": 1781272556.7723653,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/product/index.vue": 1781563806.8376303,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/workflow/my-applications/index.vue": 1782806765.142289,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/workflow/task-pending/index.vue": 1782806765.1441183,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/workflow/task-completed/index.vue": 1782806765.1503403,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/workflow/components/ProcessStatusTag.vue": 1781272556.7858772,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/workflow/components/ApprovalDialog.vue": 1781585388.6863859,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/workflow/designer/FlowDesigner.vue": 1781563767.3844852,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/workflow/process/index.vue": 1782806765.1535223,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/menu/index.vue": 1781563767.3785298,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/site/index.vue": 1781585388.688801,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/dept/index.vue": 1781563767.377147,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/dict/index.vue": 1782806765.1589515,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/leave/index.vue": 1782806765.1608179,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/output-type/index.vue": 1781515464.8433418,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/cell-product/index.vue": 1782807332.6971986,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/cell-product/SourceChainGraph.vue": 1781585388.6912124,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/cell-product/source-chain/ChainLinkEdge.vue": 1781585388.6915958,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/api/qc-work-order.ts": 1782886679.6424742,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/auth/login/index.vue": 1782893854.347133,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/refund-confirm/index.vue": 1782893854.3402505,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/my-material-usage/index.vue": 1782893854.311591,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol/index.vue": 1782893888.5451498,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol/ProtocolStatusChangeDialog.vue": 1782893854.4271934,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol/ProtocolViewDialog.vue": 1782894143.3529377,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol/ProtocolAttachmentReadonly.vue": 1782893854.403395,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol/ProtocolFormDialog.vue": 1782893854.4430473,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol/ProtocolAuditDialog.vue": 1782893854.3675368,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/sample-info/index.vue": 1782893854.321358,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/sample-reception-info/index.vue": 1782893854.265202,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/payment-info/index.vue": 1782893854.372695,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/storage-cert/index.vue": 1782893854.380672,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol-audit/index.vue": 1782893854.4304602,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol-audit/StorageEntryInfoTab.vue": 1782893888.546743,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol-audit/SampleCollectionInfoTab.vue": 1782893888.5469391,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol-audit/SampleQcInfoTab.vue": 1782893888.5471184,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol-audit/SampleReceptionInfoTab.vue": 1782893888.547302,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol-audit/StorageCertTab.vue": 1782893888.5475702,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol-audit/FullmoonTodoTab.vue": 1782893888.5482585,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol-audit/ProtocolAuditTab.vue": 1782893888.5485528,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/protocol-audit/PaymentInfoTab.vue": 1782893920.0282564,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/material/index.vue": 1782894640.107094,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/material/MaterialUsageTab.vue": 1782894623.5755792,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/material/MaterialStockCheckTab.vue": 1782893854.1554854,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/fullmoon-todo/index.vue": 1782893854.0469422,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/storage-entry-info/index.vue": 1782893854.0034747,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/payment-confirm/index.vue": 1782893920.7943869,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/payment-confirm/RefundConfirmTab.vue": 1782893932.9908028,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/payment-confirm/InvoiceRequestTab.vue": 1782893853.8783379,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/cell-storage/material-stock-log/index.vue": 1782893853.8275082,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/outside/Iframe.vue": 1782893853.8888595,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/operations/demo/index.vue": 1782893853.8571184,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/operations/clean-room/index.vue": 1782893853.8198242,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/operations/storage-facility/index.vue": 1782893853.715029,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/operations/exhibition-appointment/index.vue": 1782893853.5207253,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/research-donation/audit/index.vue": 1782893913.7167647,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/research-donation/sample-info/index.vue": 1782893854.018205,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/research-donation/sample-info/DonationSampleCollectionInfoTab.vue": 1782893918.3749776,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/research-donation/list/index.vue": 1782893912.746235,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/research-donation/list/DonationAuditDialog.vue": 1782893853.885547,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/research-donation/list/DonationViewDialog.vue": 1782894167.3038042,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/research-donation/list/DonationFormDialog.vue": 1782893853.7512953,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/research-donation/list/DonationStatusChangeDialog.vue": 1782893853.688078,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/dashboard/console/index.vue": 1782893853.5152776,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/tenant/index.vue": 1782893853.6602998,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/order/index.vue": 1782893853.5040941,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/unit/index.vue": 1782893853.4396129,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/role/index.vue": 1782893854.095696,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/post/index.vue": 1782893854.0815024,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/category/index.vue": 1782893854.1658938,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/express/index.vue": 1782893854.1084614,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/user/index.vue": 1782893854.0087445,
|
||||
"/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-search.vue": 1782893853.8827589,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/product/index.vue": 1782893853.7838233,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/workflow/my-applications/index.vue": 1782893853.9951289,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/workflow/task-pending/index.vue": 1782893853.9475517,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/workflow/task-completed/index.vue": 1782893853.8960793,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/workflow/components/ProcessStatusTag.vue": 1782893853.8633924,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/workflow/components/ApprovalDialog.vue": 1782893853.836738,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/workflow/designer/FlowDesigner.vue": 1782893853.8128686,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/workflow/process/index.vue": 1782893853.6662621,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/menu/index.vue": 1782893853.4886823,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/site/index.vue": 1782893853.416447,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/dept/index.vue": 1782893853.1672907,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/dict/index.vue": 1782893853.0456495,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/system/leave/index.vue": 1782893852.9582078,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/output-type/index.vue": 1782893852.8585393,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/cell-product/index.vue": 1782893852.8117232,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/cell-product/SourceChainGraph.vue": 1782893852.699336,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/cell-product/source-chain/ChainLinkEdge.vue": 1782893852.6166403,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/cell-product/source-chain/chainInject.ts": 1781272556.806028,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/cell-product/source-chain/chain-types.ts": 1781272556.8063247,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/cell-product/source-chain/chain-types.ts": 1782886682.0493002,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/cell-product/source-chain/chainFlowTheme.ts": 1781272556.806551,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/cell-product/source-chain/ChainNodeCard.vue": 1781585388.691913,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/cell-product/source-chain/SampleCustomerViewDialog.vue": 1781272556.8079684,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/cell-product/source-chain/ChainNodeCard.vue": 1782893852.5977921,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/cell-product/source-chain/SampleCustomerViewDialog.vue": 1782893852.4629574,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/cell-product/source-chain/chainToFlow.ts": 1781272556.808583,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/my-production-material-usage/index.vue": 1781519341.8139238,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/process-route/index.vue": 1781272556.8092766,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/sop/index.vue": 1782806765.1719818,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-task/index.vue": 1781272556.812188,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/reagent/index.vue": 1782807607.3540442,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/index.vue": 1782472598.0379121,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/my-production-material-usage/index.vue": 1782893852.8452,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/process-route/index.vue": 1782893852.7870154,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/sop/index.vue": 1782893852.719772,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-task/index.vue": 1782893852.6013515,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/reagent/index.vue": 1782893852.5094585,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/index.vue": 1782893853.82419,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/ProductionStepBadge.vue": 1782893853.410545,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/useTaskStepEditor.ts": 1782822330.679258,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/StepDetailPanel.vue": 1782802994.9180765,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/CompleteProductionTaskDialog.vue": 1781563767.3525257,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/TaskInputEnhancedTable.vue": 1782709493.924029,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/DispatchQcWorkOrderDialog.vue": 1782359900.6139107,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/SampleReceptionDialog.vue": 1782807285.1607049,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/TaskEquipmentPanel.vue": 1782720192.2193718,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/TaskExecutionDialog.vue": 1782822349.7374394,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/EditTaskInfoDialog.vue": 1781577178.2471955,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/TaskOutputList.vue": 1782806579.0832028,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/DispatchTaskDialog.vue": 1782717441.142722,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/TaskPaperAttachmentsPanel.vue": 1782483404.2007074,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/WorkOrderTaskSubList.vue": 1782808939.1268015,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/TaskOutputProductDialog.vue": 1782807317.1565738,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/ProductionWorkOrderCardList.vue": 1782807939.7824953,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/ForwardTaskDialog.vue": 1781563767.3550124,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/WorkOrderTaskStepSubList.vue": 1782808941.5863082,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/StepDetailActionBar.vue": 1782811786.5727916,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/ProductionWorkOrderTabBar.vue": 1782403774.1374023,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/StepDetailPanel.vue": 1782893853.2023683,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/CompleteProductionTaskDialog.vue": 1782893853.1254928,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/TaskInputEnhancedTable.vue": 1782893853.0951817,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/DispatchQcWorkOrderDialog.vue": 1782893852.9989007,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/SampleReceptionDialog.vue": 1782894085.3789353,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/TaskEquipmentPanel.vue": 1782893853.803821,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/TaskExecutionDialog.vue": 1782893853.724633,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/EditTaskInfoDialog.vue": 1782893853.6561613,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/TaskOutputList.vue": 1782893853.4938636,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/DispatchTaskDialog.vue": 1782893853.4321866,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/TaskPaperAttachmentsPanel.vue": 1782893853.2361045,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/WorkOrderTaskSubList.vue": 1782893853.2094715,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/TaskOutputProductDialog.vue": 1782893853.1137185,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/ProductionWorkOrderCardList.vue": 1782893852.9759836,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/ForwardTaskDialog.vue": 1782893852.8302743,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/ProductionWorkOrderQcViewDialog.vue": 1782893852.7941833,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/WorkOrderTaskStepSubList.vue": 1782893852.736343,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/StepDetailActionBar.vue": 1782893852.7041657,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/ProductionWorkOrderTabBar.vue": 1782893852.6336923,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/task-step-editor-persistence.ts": 1782811944.10899,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/DispatchStepDialog.vue": 1782472889.9876838,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/tabs/OutboundPilotTab.vue": 1781583381.1088736,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/tabs/ProductionWorkOrderTabPanel.vue": 1782703212.9716113,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/tabs/InboundCellStorageTab.vue": 1781583380.9191706,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/tabs/OutboundBasicExperimentTab.vue": 1781583381.738445,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/tabs/InboundResearchDonationTab.vue": 1781583380.9646196,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/tabs/TemporaryTab.vue": 1781583382.5206525,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/DispatchStepDialog.vue": 1782893852.5906737,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/tabs/OutboundPilotTab.vue": 1782893853.79892,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/tabs/ProductionWorkOrderTabPanel.vue": 1782893853.7061236,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/tabs/InboundCellStorageTab.vue": 1782893853.6783733,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/tabs/OutboundBasicExperimentTab.vue": 1782893853.643957,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/tabs/InboundResearchDonationTab.vue": 1782893853.5110183,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/tabs/TemporaryTab.vue": 1782893853.4739556,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/tabs/tab-registry.ts": 1781583377.0075235,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/tabs/OutboundClinicalTab.vue": 1781583382.4319067,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/composables/production-view-sections.ts": 1782719454.9569902,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/composables/useProductionViewDialog.ts": 1782804077.1251862,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/tabs/OutboundClinicalTab.vue": 1782893853.4355772,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/composables/production-view-sections.ts": 1782894016.9828084,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/composables/useProductionViewDialog.ts": 1782893377.8080904,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/composables/useProductionWorkOrderTabStepCounts.ts": 1782703040.673378,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/composables/useProductionWorkOrderTabPage.ts": 1782703027.661491,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/view-dialogs/InboundResearchDonationProductionViewDialog.vue": 1782804087.1839645,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/view-dialogs/OutboundClinicalProductionViewDialog.vue": 1782804098.0982833,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/view-dialogs/InboundCellStorageProductionViewDialog.vue": 1782804083.03463,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/composables/useProductionWorkOrderTabPage.ts": 1782881469.5639377,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/view-dialogs/InboundResearchDonationProductionViewDialog.vue": 1782893853.8921535,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/view-dialogs/OutboundClinicalProductionViewDialog.vue": 1782893853.8665204,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/view-dialogs/InboundCellStorageProductionViewDialog.vue": 1782893853.844183,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/view-dialogs/view-dialog-registry.ts": 1781583337.2398212,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/view-dialogs/OutboundPilotProductionViewDialog.vue": 1782804090.4785566,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/view-dialogs/OutboundBasicExperimentProductionViewDialog.vue": 1782804094.8326685,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/view-dialogs/ProductionWorkOrderViewDialogFrame.vue": 1781604410.6211355,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/view-dialogs/TemporaryProductionViewDialog.vue": 1782804101.4998384,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/consumable-pack/index.vue": 1781272556.8373108,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/consumable/index.vue": 1782807600.2611506,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/consumable/ConsumablePackTab.vue": 1782806765.2088249,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/cleanroom-garment/index.vue": 1782806466.559312,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-material/index.vue": 1782807688.9650154,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-material/MaterialConsumptionTab.vue": 1782806424.5374637,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-material/ProductionMaterialConfiguredCatalogDialog.vue": 1782807285.1564362,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-material/ProductionMaterialUsageTab.vue": 1782806765.2171237,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-material/ProductionMaterialStockCheckTab.vue": 1782807285.1576262,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-material/ProductionMaterialPrepTab.vue": 1782807285.1570644,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/sample-reception-completion/index.vue": 1781272556.844081,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/my-production-task/index.vue": 1782807942.2348688,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/equipment/index.vue": 1782807285.1538954,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/process/index.vue": 1782806765.2282925,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/process/ProcessRouteTab.vue": 1782806765.2317605,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/process-category/index.vue": 1781585388.7112913,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/process-category/OutputTypeTab.vue": 1782806765.2330196,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/index/index.vue": 1781272556.8548205,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/index.vue": 1782569794.1409402,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/QcWorkOrderTaskResultPanel.vue": 1782571024.398393,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/QcWorkOrderProtocolGroup.vue": 1782601949.6612926,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/QcWorkOrderSingleCard.vue": 1782709503.4541216,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/QcWorkOrderConfigureBatches.vue": 1782569795.7830539,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/QcWorkOrderFeeSummaryBar.vue": 1781585388.7152023,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/QcWorkOrderSampleGroup.vue": 1782569111.7000496,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/QcWorkOrderBatchResultTabs.vue": 1782527293.5294008,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/QcWorkOrderTaskSubList.vue": 1782807311.4193377,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/QcWorkOrderTabBar.vue": 1782394192.4055598,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/QcWorkOrderBatchSubList.vue": 1782569501.6892183,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/QcWorkOrderCardList.vue": 1782569103.9185495,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/QcWorkOrderProtocolPaymentPanel.vue": 1782806424.6486642,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/tabs/OutboundPilotTab.vue": 1781582034.0446215,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/tabs/InboundCellStorageTab.vue": 1781582031.9110096,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/tabs/QcWorkOrderTabPanel.vue": 1782802285.344359,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/tabs/OutboundBasicExperimentTab.vue": 1781582033.9975233,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/tabs/InboundResearchDonationTab.vue": 1781582033.9975069,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/tabs/AllTab.vue": 1782393769.7060475,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/tabs/TemporaryTab.vue": 1781582036.0799434,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/view-dialogs/OutboundPilotProductionViewDialog.vue": 1782893853.96219,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/view-dialogs/OutboundBasicExperimentProductionViewDialog.vue": 1782893853.9010103,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/view-dialogs/ProductionWorkOrderViewDialogFrame.vue": 1782893853.8742938,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-work-order/view-dialogs/TemporaryProductionViewDialog.vue": 1782893853.8400733,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/consumable-pack/index.vue": 1782893852.5431323,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/consumable/index.vue": 1782893852.7799647,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/consumable/ConsumablePackTab.vue": 1782893852.689723,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/cleanroom-garment/index.vue": 1782893852.58252,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-material/index.vue": 1782893852.391863,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-material/MaterialConsumptionTab.vue": 1782893852.3221345,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-material/ProductionMaterialConfiguredCatalogDialog.vue": 1782893852.288642,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-material/ProductionMaterialUsageTab.vue": 1782893852.263329,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-material/ProductionMaterialStockCheckTab.vue": 1782893852.1908164,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/production-material/ProductionMaterialPrepTab.vue": 1782893852.1329908,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/sample-reception-completion/index.vue": 1782893851.986683,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/my-production-task/index.vue": 1782893851.9189324,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/equipment/index.vue": 1782893851.7107234,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/process/index.vue": 1782893851.6625698,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/process/ProcessRouteTab.vue": 1782893851.6356437,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/process-category/index.vue": 1782893851.5846715,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/production/process-category/OutputTypeTab.vue": 1782893851.5618722,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/index/index.vue": 1782893851.535544,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/index.vue": 1782893854.1761613,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/QcWorkOrderTaskResultPanel.vue": 1782893853.990059,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/QcWorkOrderProtocolGroup.vue": 1782893854.0760326,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/QcWorkOrderSingleCard.vue": 1782893854.0393713,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/QcWorkOrderConfigureBatches.vue": 1782893853.9850519,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/QcWorkOrderFeeSummaryBar.vue": 1782893853.9414947,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/QcWorkOrderSampleGroup.vue": 1782893854.1439548,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/QcWorkOrderBatchResultTabs.vue": 1782893854.2285423,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/QcUnfinishedBadge.vue": 1782893854.1479301,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/QcWorkOrderTaskSubList.vue": 1782894082.652902,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/QcWorkOrderTabBar.vue": 1782893854.0314786,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/QcWorkOrderBatchSubList.vue": 1782893854.0134735,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/QcWorkOrderCardList.vue": 1782893853.9724226,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/QcWorkOrderProtocolPaymentPanel.vue": 1782893853.9119349,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/tabs/OutboundPilotTab.vue": 1782893854.159883,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/tabs/InboundCellStorageTab.vue": 1782893854.1357596,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/tabs/QcWorkOrderTabPanel.vue": 1782893854.0690873,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/tabs/OutboundBasicExperimentTab.vue": 1782893854.2442567,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/tabs/InboundResearchDonationTab.vue": 1782893854.1390157,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/tabs/AllTab.vue": 1782893854.1312714,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/tabs/TemporaryTab.vue": 1782893854.0570166,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/tabs/tab-registry.ts": 1782393772.4243252,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/tabs/OutboundClinicalTab.vue": 1781582035.6614258,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/tabs/OutboundClinicalTab.vue": 1782893854.022184,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/composables/useQcWorkOrderAttachmentExport.ts": 1782875325.8554192,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/composables/useOutboundQcViewDialog.ts": 1782398591.849214,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/composables/useQcWorkOrderTaskViewSections.ts": 1782527340.2357967,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/composables/useQcWorkOrderTabUnfinishedCounts.ts": 1782394182.2860413,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/composables/useInboundQcViewDialog.ts": 1782398606.799624,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/composables/useQcViewAttachmentHelpers.ts": 1781581579.8782947,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/composables/inbound-view-sections.ts": 1782719456.2815473,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/composables/qc-work-order-selection.ts": 1782875325.8554592,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/composables/inbound-view-sections.ts": 1782894008.6336527,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/composables/useQcWorkOrderTabPage.ts": 1782802279.1326668,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/view-dialogs/QcWorkOrderSystemViewDialog.vue": 1782527303.4342577,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/view-dialogs/OutboundQcProductTable.vue": 1781604200.1464918,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/view-dialogs/OutboundQcDiagnosisAttachments.vue": 1781581843.4276094,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/view-dialogs/QcWorkOrderSystemViewDialog.vue": 1782893854.2724051,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/view-dialogs/OutboundQcProductTable.vue": 1782893854.2596574,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/view-dialogs/OutboundQcDiagnosisAttachments.vue": 1782893854.2985036,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/view-dialogs/view-dialog-registry.ts": 1782393780.8839016,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/view-dialogs/InboundResearchDonationViewDialog.vue": 1782568343.8739738,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/view-dialogs/OutboundBasicExperimentViewDialog.vue": 1782568344.859248,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/view-dialogs/OutboundClinicalViewDialog.vue": 1782568345.2663684,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/view-dialogs/InboundCellStorageViewDialog.vue": 1782568343.409268,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/view-dialogs/TemporaryQcViewDialog.vue": 1782568345.6685846,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/view-dialogs/OutboundPilotViewDialog.vue": 1782568344.3903468,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/sample-reception-check-item/index.vue": 1782806765.2492979,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/lab-test-item/index.vue": 1782446811.4107797,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/lab-test-item/ThirdPartyCompanyTab.vue": 1782446800.711475,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/my-qc-material-usage/index.vue": 1781518516.1543977,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-material/index.vue": 1782807687.8569708,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-material/QcMaterialStockCheckTab.vue": 1782807285.1703076,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-material/QcMaterialUsageTab.vue": 1782806765.2571297,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-material/QcMaterialBatchAttachmentDialog.vue": 1781690342.0885053,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/pre-transit-sample/index.vue": 1782206029.583706,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/pre-transit-sample/PreTransitProtocolCardList.vue": 1782806424.693305,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/sample-reception/index.vue": 1782806471.8828664,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/sample-reception/SampleReceptionCardList.vue": 1782806424.7032602,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/my-qc-task/index.vue": 1782394624.819391,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/env-detect-record/index.vue": 1782377015.4291072,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/env-detect-item/index.vue": 1782806765.2688828,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-task/index.vue": 1781272556.8975937,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/storage-release-review/index.vue": 1782806424.713873,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/storage-release-review/StorageReleaseReviewDialog.vue": 1781585388.7405016,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/storage-release-review/StorageReleaseViewDialog.vue": 1782719629.6514444,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-material-usage/index.vue": 1781272556.9013255,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/third-party-company/index.vue": 1781415011.0881364,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/exception/500/index.vue": 1781272556.902236,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/exception/403/index.vue": 1781272556.9027894,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/exception/404/index.vue": 1781272556.9030628,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/cell-product-type/index.vue": 1781602131.352225,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/cell-product-type/CellProductPriceTab.vue": 1782806765.2868826,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/cell-product-type/ProjectPriceSystemTab.vue": 1782806765.288243,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/cell-product-type/CellProductSpecTab.vue": 1782806765.2891116,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/checkup-institution/index.vue": 1781563767.334401,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/checkup-institution/CheckupPackagePanel.vue": 1781563767.3335872,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/infusion-schedule-management/index.vue": 1781272556.9129293,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/infusion-schedule-management/InfusionScheduleHandoverDialog.vue": 1781598379.1921296,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/infusion-schedule-management/ScheduleViewDialog.vue": 1781604365.0831292,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/infusion-schedule-management/ScheduleCancelDialog.vue": 1781566676.0091887,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/infusion-schedule-management/ScheduleEditDialog.vue": 1782807285.131992,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/channel-service-order/index.vue": 1781272556.9223943,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/channel-service-order/ServiceOrderTxnTable.vue": 1782806765.3084352,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/channel-service-order/ServiceOrderTxnDialog.vue": 1782807285.1278553,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/channel/index.vue": 1782806765.3169377,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/channel/ChannelViewDialog.vue": 1782806499.307967,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/channel/ChannelServiceOrderTab.vue": 1782807285.1263318,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-refund-confirm/index.vue": 1781272556.946893,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-confirm/index.vue": 1782806765.327235,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-confirm/RefundConfirmTab.vue": 1782806765.328616,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/outbound-release-review/index.vue": 1781603476.7874172,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/outbound-release-review/OutboundReleaseViewDialog.vue": 1781604292.523926,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/outbound-release-review/OutboundReleaseReviewDialog.vue": 1781603474.5398026,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/outbound-release-review/OutboundReleaseMaterialDialog.vue": 1782807285.1330345,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/outbound-release-review/OutboundReleaseReviewCardList.vue": 1782806424.8038495,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/index.vue": 1781600006.408287,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/ApplicationDetailDialog.vue": 1782807285.134655,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/PilotApplicationTab.vue": 1782806765.33439,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/ApplicationViewDialog.vue": 1781682542.890803,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/InfusionScheduleTab.vue": 1782806424.8367257,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/ApplicationFormDialog.vue": 1782807285.135783,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/CheckupManagementTab.vue": 1782806424.8579202,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/ClinicalPaymentTab.vue": 1782807285.1399512,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/cell-product-price/index.vue": 1781272557.4568446,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/checkup-management/index.vue": 1781272557.4618897,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/checkup-management/CheckupReserveItemsTable.vue": 1781272557.4705725,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/checkup-management/CheckupViewDialog.vue": 1781585388.7666178,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/checkup-management/CheckupRegisterDialog.vue": 1781585388.7670863,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/checkup-management/CheckupDetailDialog.vue": 1782807285.129314,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/view-dialogs/InboundResearchDonationViewDialog.vue": 1782893854.249279,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/view-dialogs/OutboundBasicExperimentViewDialog.vue": 1782893854.332497,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/view-dialogs/OutboundClinicalViewDialog.vue": 1782893854.316651,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/view-dialogs/InboundCellStorageViewDialog.vue": 1782893854.3284824,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/view-dialogs/TemporaryQcViewDialog.vue": 1782893854.3063695,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-work-order/view-dialogs/OutboundPilotViewDialog.vue": 1782893854.200392,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/sample-reception-check-item/index.vue": 1782893853.86999,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/lab-test-item/index.vue": 1782893853.832618,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/lab-test-item/ThirdPartyCompanyTab.vue": 1782893853.7928631,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/my-qc-material-usage/index.vue": 1782893853.6503608,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-material/index.vue": 1782893853.482704,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-material/QcMaterialStockCheckTab.vue": 1782893853.4241662,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-material/QcMaterialUsageTab.vue": 1782893853.162949,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-material/QcMaterialBatchAttachmentDialog.vue": 1782893853.076457,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/pre-transit-sample/index.vue": 1782893853.0101395,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/pre-transit-sample/PreTransitProtocolCardList.vue": 1782894112.8165123,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/sample-reception/index.vue": 1782894068.248391,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/sample-reception/SampleReceptionCardList.vue": 1782894078.8557267,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/my-qc-task/index.vue": 1782893853.507648,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/env-detect-record/index.vue": 1782893853.44988,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/env-detect-item/index.vue": 1782893853.1796434,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-task/index.vue": 1782893853.146115,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/storage-release-review/index.vue": 1782894202.6907072,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/storage-release-review/StorageReleaseReviewDialog.vue": 1782893853.0158439,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/storage-release-review/StorageReleaseViewDialog.vue": 1782894179.409189,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/qc-material-usage/index.vue": 1782893852.8511324,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/quality-inspection/third-party-company/index.vue": 1782893852.8158212,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/exception/500/index.vue": 1782893852.7265046,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/exception/403/index.vue": 1782893852.6942284,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/exception/404/index.vue": 1782893852.624851,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/cell-product-type/index.vue": 1782893853.037768,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/cell-product-type/CellProductPriceTab.vue": 1782893852.9823923,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/cell-product-type/ProjectPriceSystemTab.vue": 1782893852.8638844,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/cell-product-type/CellProductSpecTab.vue": 1782893852.8212717,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/checkup-institution/index.vue": 1782893852.743487,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/checkup-institution/CheckupPackagePanel.vue": 1782893852.611682,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/infusion-schedule-management/index.vue": 1782893852.4317713,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/infusion-schedule-management/InfusionScheduleHandoverDialog.vue": 1782893852.3551466,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/infusion-schedule-management/ScheduleViewDialog.vue": 1782893852.3188872,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/infusion-schedule-management/ScheduleCancelDialog.vue": 1782893852.2808146,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/infusion-schedule-management/ScheduleEditDialog.vue": 1782893852.2546618,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/channel-service-order/index.vue": 1782893852.1531374,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/channel-service-order/ServiceOrderTxnTable.vue": 1782893852.1199427,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/channel-service-order/ServiceOrderTxnDialog.vue": 1782893852.0296383,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/channel/index.vue": 1782893851.968867,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/channel/ChannelViewDialog.vue": 1782893851.910507,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/channel/ChannelServiceOrderTab.vue": 1782893851.6874495,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-refund-confirm/index.vue": 1782893851.613325,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-confirm/index.vue": 1782893853.444681,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-confirm/RefundConfirmTab.vue": 1782893853.2308147,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/outbound-release-review/index.vue": 1782893853.1534364,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/outbound-release-review/OutboundReleaseViewDialog.vue": 1782893853.1006944,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/outbound-release-review/OutboundReleaseReviewDialog.vue": 1782893853.242398,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/outbound-release-review/OutboundReleaseMaterialDialog.vue": 1782893853.1737905,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/outbound-release-review/OutboundReleaseReviewCardList.vue": 1782893853.0584636,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/index.vue": 1782893852.991473,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/ApplicationDetailDialog.vue": 1782893852.9339294,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/PilotApplicationTab.vue": 1782893852.8262732,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/ApplicationViewDialog.vue": 1782893852.7602282,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/InfusionScheduleTab.vue": 1782893852.6786568,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/ApplicationFormDialog.vue": 1782893852.5596623,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/CheckupManagementTab.vue": 1782893852.365706,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/pilot-application/ClinicalPaymentTab.vue": 1782893852.3358445,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/cell-product-price/index.vue": 1782893852.3049684,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/checkup-management/index.vue": 1782893852.2775676,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/checkup-management/CheckupReserveItemsTable.vue": 1782893852.2584097,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/checkup-management/CheckupViewDialog.vue": 1782893852.231232,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/checkup-management/CheckupRegisterDialog.vue": 1782893852.176913,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/checkup-management/CheckupDetailDialog.vue": 1782893852.1057308,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/checkup-management/checkup-reserve-items.ts": 1781272557.5954251,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/checkup-management/CheckupFillDialog.vue": 1781594573.8421357,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/checkup-management/CheckupMarkCheckedDialog.vue": 1781594629.8261228,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-info/index.vue": 1781272558.0460358,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/channel-service-order-finance/index.vue": 1782806765.3620505,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/project-price-system/index.vue": 1781272558.2950988,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/cell-product-spec/index.vue": 1781272558.3464932,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/basic-info/sample-code/index.vue": 1781272558.356484,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/basic-info/cell-sample-type/index.vue": 1781747673.1194487,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/basic-info/cell-sample-type/SampleCodeTab.vue": 1782806765.3995123,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/basic-info/insurance-company/index.vue": 1781563767.3120062,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/basic-info/collection-protocol-no/index.vue": 1781272558.4055521,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/basic-info/customer/index.vue": 1782806765.4357877,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/basic-info/collection-region/index.vue": 1782806765.436434,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/basic-info/collection-region/CollectionProtocolNoTab.vue": 1782806765.438883,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/checkup-management/CheckupFillDialog.vue": 1782893851.993419,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/checkup-management/CheckupMarkCheckedDialog.vue": 1782893851.9295256,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/clinical-payment-info/index.vue": 1782893851.7028527,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/channel-service-order-finance/index.vue": 1782893851.6796,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/project-price-system/index.vue": 1782893851.639349,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/pilot-service/cell-product-spec/index.vue": 1782893851.5999632,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/basic-info/sample-code/index.vue": 1782893851.5876079,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/basic-info/cell-sample-type/index.vue": 1782893851.5657287,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/basic-info/cell-sample-type/SampleCodeTab.vue": 1782893851.5487845,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/basic-info/insurance-company/index.vue": 1782893851.6212523,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/basic-info/collection-protocol-no/index.vue": 1782893851.573797,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/basic-info/customer/index.vue": 1782893851.5518563,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/basic-info/collection-region/index.vue": 1782893851.539197,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/views/basic-info/collection-region/CollectionProtocolNoTab.vue": 1782893851.5241253,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/assets/svg/loading.ts": 1781272558.486104,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/store/index.ts": 1781272559.227605,
|
||||
"/Users/wuzilong/work/00code/zkxw/web-admin/src/store/modules/qc-menu-badge.ts": 1782394567.2213001,
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
import request from '@/utils/http'
|
||||
|
||||
export type InboundSampleSpecialMarkPayload = {
|
||||
receptionSource: 'cell_storage' | 'research_donation'
|
||||
protocolSampleId: string
|
||||
isSpecial: boolean
|
||||
specialRemark?: string
|
||||
}
|
||||
|
||||
export type InboundSampleSpecialMarkResult = {
|
||||
isSpecial: boolean
|
||||
specialRemark: string
|
||||
}
|
||||
|
||||
export function fetchUpdateInboundSampleSpecialMark(data: InboundSampleSpecialMarkPayload) {
|
||||
return request.put<InboundSampleSpecialMarkResult>({
|
||||
url: '/web/admin/inbound-samples/special-mark',
|
||||
data
|
||||
})
|
||||
}
|
||||
@@ -28,6 +28,7 @@ export type MaterialUsage = {
|
||||
stockBefore?: number
|
||||
stockAfter: number
|
||||
receiver?: string
|
||||
operatorName?: string
|
||||
purpose?: string
|
||||
useTime?: string
|
||||
sourceType: string
|
||||
|
||||
@@ -88,17 +88,18 @@ export type MaterialBatchOption = {
|
||||
}
|
||||
|
||||
export type StockInPayload = {
|
||||
stockInNo: string
|
||||
stockInDate: string
|
||||
expireDate: string
|
||||
catalogNo: string
|
||||
batchNo: string
|
||||
manufacturer: string
|
||||
unitPrice: number
|
||||
amount: number
|
||||
qty: number
|
||||
stockInNo?: string
|
||||
stockInDate?: string
|
||||
expireDate?: string
|
||||
catalogNo?: string
|
||||
batchNo?: string
|
||||
manufacturer?: string
|
||||
unitPrice?: number
|
||||
amount?: number
|
||||
qty?: number
|
||||
remark?: string
|
||||
stockInTime?: string
|
||||
operatorName?: string
|
||||
}
|
||||
|
||||
export type BatchStockInLine = StockInPayload & {
|
||||
@@ -184,6 +185,7 @@ export function fetchBatchStockInMaterial(data: {
|
||||
items: BatchStockInLine[]
|
||||
remark?: string
|
||||
stockInTime?: string
|
||||
operatorName?: string
|
||||
}) {
|
||||
return request.post<{ count: number }>({
|
||||
url: '/web/admin/material-batches/batch-stock-in',
|
||||
@@ -210,6 +212,7 @@ export function fetchBatchStockOutMaterial(data: {
|
||||
purpose?: string
|
||||
remark?: string
|
||||
stockOutTime?: string
|
||||
operatorName?: string
|
||||
}) {
|
||||
return request.post<{ count: number }>({
|
||||
url: '/web/admin/material-batches/batch-stock-out',
|
||||
@@ -222,6 +225,7 @@ export function fetchBatchDiscardMaterial(data: {
|
||||
discardReason: string
|
||||
remark?: string
|
||||
discardTime?: string
|
||||
operatorName?: string
|
||||
}) {
|
||||
return request.post<{ count: number }>({
|
||||
url: '/web/admin/material-batches/batch-discard',
|
||||
|
||||
@@ -20,6 +20,8 @@ export interface ProductionWorkOrderItem {
|
||||
receptionSource?: string
|
||||
receptionSourceLabel?: string
|
||||
sampleTypeName?: string
|
||||
isSpecial?: boolean
|
||||
specialRemark?: string
|
||||
handlerName?: string
|
||||
receptionTime?: string
|
||||
workOrderStatus: string
|
||||
@@ -195,6 +197,19 @@ export function fetchCreateQcFromProduction(
|
||||
})
|
||||
}
|
||||
|
||||
export type ProductionWorkOrderQcInfoDetail = {
|
||||
showGateSection?: boolean
|
||||
gateQcInfo?: import('@/components/business/sample-qc-info-cards/index.vue').SampleQcInfo | null
|
||||
processQcInfoList?: import('@/components/business/sample-qc-info-cards/index.vue').SampleQcInfo[]
|
||||
sampleReception?: import('@/components/business/sample-qc-info-cards/index.vue').SampleReceptionBrief | null
|
||||
}
|
||||
|
||||
export function fetchProductionWorkOrderQcInfo(workOrderId: string) {
|
||||
return request.get<ProductionWorkOrderQcInfoDetail>({
|
||||
url: `/web/admin/production-work-orders/${workOrderId}/qc-info`
|
||||
})
|
||||
}
|
||||
|
||||
export type ProductionWorkOrderTabStepCount = {
|
||||
overdueIncomplete: number
|
||||
unassigned: number
|
||||
|
||||
Loaded 100 of 478 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user