提交
This commit is contained in:
1 parent
276299ff27
commit
c6c3a37fa7
241 files changed
+17841
-15059
No files matched your search
+1
-1
@@ -1 +1 @@
|
||||
12254
|
||||
33472
|
||||
+11
-11
@@ -135,7 +135,7 @@ async def list_tenants(
|
||||
_user: dict = Depends(require_admin_or_super_admin),
|
||||
db: Session = Depends(get_db),
|
||||
):
|
||||
items, total = tenant_svc.list_tenants(db, page=page, page_size=pageSize, keyword=keyword)
|
||||
items, total = tenant_svc.list_tenants(db, page=page, page_size=pageSize, keyword=keyword, user_info=_user)
|
||||
total_pages = tenant_svc.total_pages(total, pageSize)
|
||||
return success_response(
|
||||
{
|
||||
@@ -440,7 +440,7 @@ async def list_dict_types(
|
||||
):
|
||||
tenant_no = _get_tenant_no(db, user)
|
||||
items, total = dict_type_svc.list_dict_types(
|
||||
db, page=page, page_size=pageSize, keyword=keyword, tenant_no=tenant_no
|
||||
db, page=page, page_size=pageSize, keyword=keyword, tenant_no=tenant_no, user_info=user
|
||||
)
|
||||
tp = dict_type_svc.total_pages(total, pageSize)
|
||||
return success_response({"list": items, "total": total, "page": page, "pageSize": pageSize, "totalPages": tp})
|
||||
@@ -541,7 +541,7 @@ async def list_dict_data(
|
||||
):
|
||||
tenant_no = _get_tenant_no(db, user)
|
||||
items, total = dict_data_svc.list_dict_data(
|
||||
db, page=page, page_size=pageSize, dict_type_code=dictType, keyword=keyword, tenant_no=tenant_no
|
||||
db, page=page, page_size=pageSize, dict_type_code=dictType, keyword=keyword, tenant_no=tenant_no, user_info=user
|
||||
)
|
||||
tp = dict_data_svc.total_pages(total, pageSize)
|
||||
return success_response({"list": items, "total": total, "page": page, "pageSize": pageSize, "totalPages": tp})
|
||||
@@ -654,7 +654,7 @@ async def list_depts(
|
||||
db: Session = Depends(get_db),
|
||||
):
|
||||
tenant_no = _get_tenant_no(db, user)
|
||||
tree = dept_svc.list_depts_tree(db, keyword=keyword, tenant_no=tenant_no)
|
||||
tree = dept_svc.list_depts_tree(db, keyword=keyword, tenant_no=tenant_no, user_info=user)
|
||||
return success_response(tree)
|
||||
|
||||
|
||||
@@ -767,7 +767,7 @@ async def list_sites(
|
||||
db: Session = Depends(get_db),
|
||||
):
|
||||
tenant_no = _get_tenant_no(db, user)
|
||||
items, total = site_svc.list_sites(db, page=page, page_size=pageSize, keyword=keyword, tenant_no=tenant_no)
|
||||
items, total = site_svc.list_sites(db, page=page, page_size=pageSize, keyword=keyword, tenant_no=tenant_no, user_info=user)
|
||||
tp = site_svc.total_pages(total, pageSize)
|
||||
return success_response({"list": items, "total": total, "page": page, "pageSize": pageSize, "totalPages": tp})
|
||||
|
||||
@@ -876,7 +876,7 @@ async def list_posts(
|
||||
db: Session = Depends(get_db),
|
||||
):
|
||||
tenant_no = _get_tenant_no(db, user)
|
||||
items, total = post_svc.list_posts(db, page=page, page_size=pageSize, keyword=keyword, tenant_no=tenant_no)
|
||||
items, total = post_svc.list_posts(db, page=page, page_size=pageSize, keyword=keyword, tenant_no=tenant_no, user_info=user)
|
||||
tp = post_svc.total_pages(total, pageSize)
|
||||
return success_response({"list": items, "total": total, "page": page, "pageSize": pageSize, "totalPages": tp})
|
||||
|
||||
@@ -1013,7 +1013,7 @@ async def list_item_units(
|
||||
db: Session = Depends(get_db),
|
||||
):
|
||||
tenant_no = _get_tenant_no(db, user)
|
||||
items, total = item_unit_svc.list_item_units(db, page=page, page_size=pageSize, keyword=keyword, tenant_no=tenant_no)
|
||||
items, total = item_unit_svc.list_item_units(db, page=page, page_size=pageSize, keyword=keyword, tenant_no=tenant_no, user_info=user)
|
||||
tp = item_unit_svc.total_pages(total, pageSize)
|
||||
return success_response({"list": items, "total": total, "page": page, "pageSize": pageSize, "totalPages": tp})
|
||||
|
||||
@@ -1108,7 +1108,7 @@ async def list_express_companies(
|
||||
db: Session = Depends(get_db),
|
||||
):
|
||||
tenant_no = _get_tenant_no(db, user)
|
||||
items, total = express_company_svc.list_express_companies(db, page=page, page_size=pageSize, keyword=keyword, tenant_no=tenant_no)
|
||||
items, total = express_company_svc.list_express_companies(db, page=page, page_size=pageSize, keyword=keyword, tenant_no=tenant_no, user_info=user)
|
||||
tp = express_company_svc.total_pages(total, pageSize)
|
||||
return success_response({"list": items, "total": total, "page": page, "pageSize": pageSize, "totalPages": tp})
|
||||
|
||||
@@ -1215,7 +1215,7 @@ async def list_menus(
|
||||
db: Session = Depends(get_db),
|
||||
):
|
||||
tenant_no = _get_tenant_no(db, user)
|
||||
tree = menu_svc.list_menus_tree(db, keyword=keyword, tenant_no=tenant_no)
|
||||
tree = menu_svc.list_menus_tree(db, keyword=keyword, tenant_no=tenant_no, user_info=user)
|
||||
return success_response(tree)
|
||||
|
||||
|
||||
@@ -1300,7 +1300,7 @@ class RoleCreateBody(BaseModel):
|
||||
model_config = ConfigDict(populate_by_name=True)
|
||||
|
||||
role_name: str = Field(..., alias="roleName")
|
||||
data_scope: Optional[str] = Field("1", alias="dataScope")
|
||||
data_scope: Optional[str] = Field("4", alias="dataScope")
|
||||
status: Optional[str] = Field("1", alias="status")
|
||||
order_num: Optional[int] = Field(None, alias="orderNum")
|
||||
remark: Optional[str] = None
|
||||
@@ -1336,7 +1336,7 @@ async def list_role_management(
|
||||
db: Session = Depends(get_db),
|
||||
):
|
||||
tenant_no = _get_tenant_no(db, user)
|
||||
items, total = role_svc.list_roles(db, page=page, page_size=pageSize, keyword=keyword, tenant_no=tenant_no)
|
||||
items, total = role_svc.list_roles(db, page=page, page_size=pageSize, keyword=keyword, tenant_no=tenant_no, user_info=user)
|
||||
tp = role_svc.total_pages(total, pageSize)
|
||||
return success_response({"list": items, "total": total, "page": page, "pageSize": pageSize, "totalPages": tp})
|
||||
|
||||
|
||||
@@ -131,6 +131,7 @@ async def list_collection_protocols(
|
||||
protocol_status=protocolStatus,
|
||||
tenant_no=tenant_no,
|
||||
scope_collector_user_id=current_user_id,
|
||||
user_info=user,
|
||||
)
|
||||
tp = cp_svc.total_pages(total, pageSize)
|
||||
return success_response({"list": items, "total": total, "page": page, "pageSize": pageSize, "totalPages": tp})
|
||||
@@ -377,6 +378,7 @@ async def list_collection_protocol_audits(
|
||||
keyword=keyword,
|
||||
audit_status=auditStatus,
|
||||
tenant_no=tenant_no,
|
||||
user_info=user,
|
||||
)
|
||||
tp = cp_svc.total_pages(total, pageSize)
|
||||
return success_response({"list": items, "total": total, "page": page, "pageSize": pageSize, "totalPages": tp})
|
||||
@@ -437,6 +439,7 @@ async def list_payment_details(
|
||||
keyword=keyword or None,
|
||||
transfer_type=transferType or None,
|
||||
tenant_no=tenant_no,
|
||||
user_info=user,
|
||||
)
|
||||
tp = cp_svc.total_pages(total, pageSize)
|
||||
return success_response({"list": items, "total": total, "page": page, "pageSize": pageSize, "totalPages": tp})
|
||||
@@ -553,7 +556,7 @@ async def list_receipt_confirm(
|
||||
db: Session = Depends(get_db),
|
||||
):
|
||||
tenant_no = _get_tenant_no(db, user)
|
||||
items, total = cp_svc.list_receipt_confirm_details(db, page=page, page_size=pageSize, tenant_no=tenant_no)
|
||||
items, total = cp_svc.list_receipt_confirm_details(db, page=page, page_size=pageSize, tenant_no=tenant_no, user_info=user)
|
||||
tp = cp_svc.total_pages(total, pageSize)
|
||||
return success_response({"list": items, "total": total, "page": page, "pageSize": pageSize, "totalPages": tp})
|
||||
|
||||
@@ -567,7 +570,7 @@ async def list_receipt_confirmed(
|
||||
):
|
||||
tenant_no = _get_tenant_no(db, user)
|
||||
items, total = cp_svc.list_receipt_confirmed_details(
|
||||
db, page=page, page_size=pageSize, tenant_no=tenant_no
|
||||
db, page=page, page_size=pageSize, tenant_no=tenant_no, user_info=user
|
||||
)
|
||||
tp = cp_svc.total_pages(total, pageSize)
|
||||
return success_response({"list": items, "total": total, "page": page, "pageSize": pageSize, "totalPages": tp})
|
||||
@@ -624,7 +627,7 @@ async def list_refund_confirm(
|
||||
db: Session = Depends(get_db),
|
||||
):
|
||||
tenant_no = _get_tenant_no(db, user)
|
||||
items, total = cp_svc.list_refund_confirm_details(db, page=page, page_size=pageSize, tenant_no=tenant_no)
|
||||
items, total = cp_svc.list_refund_confirm_details(db, page=page, page_size=pageSize, tenant_no=tenant_no, user_info=user)
|
||||
tp = cp_svc.total_pages(total, pageSize)
|
||||
return success_response({"list": items, "total": total, "page": page, "pageSize": pageSize, "totalPages": tp})
|
||||
|
||||
@@ -638,7 +641,7 @@ async def list_refund_confirmed(
|
||||
):
|
||||
tenant_no = _get_tenant_no(db, user)
|
||||
items, total = cp_svc.list_refund_confirmed_details(
|
||||
db, page=page, page_size=pageSize, tenant_no=tenant_no
|
||||
db, page=page, page_size=pageSize, tenant_no=tenant_no, user_info=user
|
||||
)
|
||||
tp = cp_svc.total_pages(total, pageSize)
|
||||
return success_response({"list": items, "total": total, "page": page, "pageSize": pageSize, "totalPages": tp})
|
||||
@@ -688,6 +691,7 @@ async def list_storage_certs(
|
||||
make_status=makeStatus,
|
||||
page=page,
|
||||
page_size=pageSize,
|
||||
user_info=user,
|
||||
)
|
||||
page_safe = max(1, page)
|
||||
page_size_safe = min(max(1, pageSize), 100)
|
||||
@@ -731,6 +735,9 @@ async def list_fullmoon_todos(
|
||||
)
|
||||
)
|
||||
|
||||
from app.core.data_scope import apply_data_scope
|
||||
q = apply_data_scope(q, BizCollectionProtocol, user, db, tenant_no)
|
||||
|
||||
rows = q.order_by(BizCollectionProtocol.create_time.desc()).all()
|
||||
|
||||
protocol_ids = [r.id for r, _ in rows]
|
||||
|
||||
@@ -20,5 +20,5 @@ async def list_ethnics_for_select(
|
||||
db: Session = Depends(get_db),
|
||||
):
|
||||
"""返回民族码表选项(按排序号升序)。"""
|
||||
rows = ethnic_svc.list_ethnics(db, keyword=keyword, limit=limit)
|
||||
rows = ethnic_svc.list_ethnics(db, keyword=keyword, limit=limit, user_info=_user)
|
||||
return success_response({"list": rows})
|
||||
@@ -121,7 +121,7 @@ def _row_to_dict_project_price(row: BizInsuranceProjectPrice) -> dict:
|
||||
|
||||
|
||||
def _list_insurance_companies(
|
||||
db: Session, *, page: int, page_size: int, keyword: Optional[str], tenant_no: str
|
||||
db: Session, *, page: int, page_size: int, keyword: Optional[str], tenant_no: str, user_info=None
|
||||
):
|
||||
q = db.query(BizInsuranceCompany).filter(
|
||||
BizInsuranceCompany.tenant_no == tenant_no,
|
||||
@@ -129,6 +129,9 @@ def _list_insurance_companies(
|
||||
)
|
||||
if keyword:
|
||||
q = q.filter(BizInsuranceCompany.company_name.like(f"%{keyword}%"))
|
||||
if user_info:
|
||||
from app.core.data_scope import apply_data_scope
|
||||
q = apply_data_scope(q, BizInsuranceCompany, user_info, db, tenant_no)
|
||||
total = q.count()
|
||||
rows = (
|
||||
q.order_by(BizInsuranceCompany.create_time.desc())
|
||||
@@ -243,7 +246,7 @@ def _soft_delete_insurance_company(db: Session, row_id: str, *, tenant_no: str):
|
||||
|
||||
|
||||
def _list_insurance_company_invoices(
|
||||
db: Session, insurance_company_id: str, *, tenant_no: str
|
||||
db: Session, insurance_company_id: str, *, tenant_no: str, user_info=None
|
||||
):
|
||||
# Verify parent exists
|
||||
parent = (
|
||||
@@ -257,16 +260,15 @@ def _list_insurance_company_invoices(
|
||||
)
|
||||
if not parent:
|
||||
raise ValueError("保险公司不存在")
|
||||
rows = (
|
||||
db.query(BizInsuranceCompanyInvoice)
|
||||
.filter(
|
||||
BizInsuranceCompanyInvoice.insurance_company_id == insurance_company_id,
|
||||
BizInsuranceCompanyInvoice.tenant_no == tenant_no,
|
||||
BizInsuranceCompanyInvoice.del_flag == 0,
|
||||
)
|
||||
.order_by(BizInsuranceCompanyInvoice.create_time.desc())
|
||||
.all()
|
||||
q = db.query(BizInsuranceCompanyInvoice).filter(
|
||||
BizInsuranceCompanyInvoice.insurance_company_id == insurance_company_id,
|
||||
BizInsuranceCompanyInvoice.tenant_no == tenant_no,
|
||||
BizInsuranceCompanyInvoice.del_flag == 0,
|
||||
)
|
||||
if user_info:
|
||||
from app.core.data_scope import apply_data_scope
|
||||
q = apply_data_scope(q, BizInsuranceCompanyInvoice, user_info, db, tenant_no)
|
||||
rows = q.order_by(BizInsuranceCompanyInvoice.create_time.desc()).all()
|
||||
return [_row_to_dict_invoice(r) for r in rows]
|
||||
|
||||
|
||||
@@ -381,9 +383,8 @@ def _soft_delete_insurance_company_invoice(db: Session, row_id: str, *, tenant_n
|
||||
|
||||
|
||||
def _list_insurance_project_prices(
|
||||
db: Session, insurance_company_id: str, *, tenant_no: str
|
||||
db: Session, insurance_company_id: str, *, tenant_no: str, user_info=None
|
||||
):
|
||||
# Verify parent exists
|
||||
parent = (
|
||||
db.query(BizInsuranceCompany)
|
||||
.filter(
|
||||
@@ -395,16 +396,15 @@ def _list_insurance_project_prices(
|
||||
)
|
||||
if not parent:
|
||||
raise ValueError("保险公司不存在")
|
||||
rows = (
|
||||
db.query(BizInsuranceProjectPrice)
|
||||
.filter(
|
||||
BizInsuranceProjectPrice.insurance_company_id == insurance_company_id,
|
||||
BizInsuranceProjectPrice.tenant_no == tenant_no,
|
||||
BizInsuranceProjectPrice.del_flag == 0,
|
||||
)
|
||||
.order_by(BizInsuranceProjectPrice.create_time.desc())
|
||||
.all()
|
||||
q = db.query(BizInsuranceProjectPrice).filter(
|
||||
BizInsuranceProjectPrice.insurance_company_id == insurance_company_id,
|
||||
BizInsuranceProjectPrice.tenant_no == tenant_no,
|
||||
BizInsuranceProjectPrice.del_flag == 0,
|
||||
)
|
||||
if user_info:
|
||||
from app.core.data_scope import apply_data_scope
|
||||
q = apply_data_scope(q, BizInsuranceProjectPrice, user_info, db, tenant_no)
|
||||
rows = q.order_by(BizInsuranceProjectPrice.create_time.desc()).all()
|
||||
return [_row_to_dict_project_price(r) for r in rows]
|
||||
|
||||
|
||||
@@ -537,7 +537,7 @@ async def list_insurance_companies(
|
||||
):
|
||||
tenant_no = _get_tenant_no(db, user)
|
||||
items, total = _list_insurance_companies(
|
||||
db, page=page, page_size=pageSize, keyword=keyword, tenant_no=tenant_no
|
||||
db, page=page, page_size=pageSize, keyword=keyword, tenant_no=tenant_no, user_info=user
|
||||
)
|
||||
tp = _total_pages(total, pageSize)
|
||||
return success_response(
|
||||
@@ -651,7 +651,7 @@ async def list_insurance_company_invoices(
|
||||
):
|
||||
try:
|
||||
tenant_no = _get_tenant_no(db, user)
|
||||
items = _list_insurance_company_invoices(db, company_id, tenant_no=tenant_no)
|
||||
items = _list_insurance_company_invoices(db, company_id, tenant_no=tenant_no, user_info=user)
|
||||
return success_response(items)
|
||||
except ValueError as e:
|
||||
return error_response(400, str(e))
|
||||
@@ -761,7 +761,7 @@ async def list_insurance_project_prices(
|
||||
):
|
||||
try:
|
||||
tenant_no = _get_tenant_no(db, user)
|
||||
items = _list_insurance_project_prices(db, company_id, tenant_no=tenant_no)
|
||||
items = _list_insurance_project_prices(db, company_id, tenant_no=tenant_no, user_info=user)
|
||||
return success_response(items)
|
||||
except ValueError as e:
|
||||
return error_response(400, str(e))
|
||||
|
||||
@@ -48,7 +48,7 @@ async def list_leaves(
|
||||
user_id = _user.get("user_id") or _user.get("id", "")
|
||||
items, total = leave_crud.list_leaves(
|
||||
db, page=page, page_size=pageSize, keyword=keyword, status=status,
|
||||
tenant_no=tenant_no, create_by=user_id,
|
||||
tenant_no=tenant_no, create_by=user_id, user_info=_user,
|
||||
)
|
||||
for item in items:
|
||||
item["leaveTypeLabel"] = _LEAVE_TYPE_MAP.get(item.get("leaveType", ""), item.get("leaveType", ""))
|
||||
|
||||
@@ -75,7 +75,7 @@ async def list_materials(
|
||||
tenant_no = _get_tenant_no(db, user)
|
||||
items, total = mat_svc.list_materials(
|
||||
db, tenant_no, page=page, page_size=pageSize,
|
||||
keyword=keyword, category=category, status=status,
|
||||
keyword=keyword, category=category, status=status, user_info=user,
|
||||
)
|
||||
return success_response(_page_payload(items, total, page, pageSize))
|
||||
except PermissionError as e:
|
||||
@@ -217,7 +217,7 @@ async def list_stock_logs(
|
||||
items, total = msl_svc.list_stock_logs(
|
||||
db, tenant_no, page=page, page_size=pageSize,
|
||||
material_id=materialId, change_type=changeType,
|
||||
start_time=startTime, end_time=endTime, keyword=keyword,
|
||||
start_time=startTime, end_time=endTime, keyword=keyword, user_info=user,
|
||||
)
|
||||
return success_response(_page_payload(items, total, page, pageSize))
|
||||
except PermissionError as e:
|
||||
|
||||
@@ -116,35 +116,35 @@ STATIC_MENU_TREE = [
|
||||
"name": "BizCustomer",
|
||||
"path": "customer",
|
||||
"component": "/basic-info/customer/index",
|
||||
"meta": {"title": "客户管理", "keepAlive": True},
|
||||
"meta": {"title": "客户管理", "keepAlive": True, "menuCode": "biz:customer:list"},
|
||||
},
|
||||
{
|
||||
"id": "40000000000000000000000000000003",
|
||||
"name": "BizCellSampleType",
|
||||
"path": "cell-sample-type",
|
||||
"component": "/basic-info/cell-sample-type/index",
|
||||
"meta": {"title": "细胞样本类型管理", "keepAlive": True},
|
||||
"meta": {"title": "细胞样本类型管理", "keepAlive": True, "menuCode": "biz:cellSampleType:list"},
|
||||
},
|
||||
{
|
||||
"id": "40000000000000000000000000000004",
|
||||
"name": "BizCollectionRegion",
|
||||
"path": "collection-region",
|
||||
"component": "/basic-info/collection-region/index",
|
||||
"meta": {"title": "采集地区及医院管理", "keepAlive": True},
|
||||
"meta": {"title": "采集地区及医院管理", "keepAlive": True, "menuCode": "biz:collectionRegion:list"},
|
||||
},
|
||||
{
|
||||
"id": "40000000000000000000000000000005",
|
||||
"name": "BizCollectionProtocolNo",
|
||||
"path": "collection-protocol-no",
|
||||
"component": "/basic-info/collection-protocol-no/index",
|
||||
"meta": {"title": "采集协议号管理", "keepAlive": True},
|
||||
"meta": {"title": "采集协议号管理", "keepAlive": True, "menuCode": "biz:collectionProtocolNo:list"},
|
||||
},
|
||||
{
|
||||
"id": "40000000000000000000000000000006",
|
||||
"name": "BizSampleCode",
|
||||
"path": "sample-code",
|
||||
"component": "/basic-info/sample-code/index",
|
||||
"meta": {"title": "样本编码管理", "keepAlive": True},
|
||||
"meta": {"title": "样本编码管理", "keepAlive": True, "menuCode": "biz:sampleCode:list"},
|
||||
},
|
||||
],
|
||||
},
|
||||
|
||||
@@ -4,6 +4,7 @@ from typing import Any, Optional
|
||||
|
||||
from fastapi import APIRouter, Depends, Query
|
||||
from pydantic import BaseModel, ConfigDict, Field
|
||||
from sqlalchemy import or_
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from app.core.data_scope import apply_data_scope
|
||||
@@ -70,8 +71,10 @@ async def list_clean_rooms(
|
||||
BizCleanRoom.del_flag == 0,
|
||||
BizCleanRoom.tenant_no == tenant_no,
|
||||
)
|
||||
if keyword:
|
||||
query = query.filter(BizCleanRoom.room_name.like(f"%{keyword}%"))
|
||||
kw = (keyword or "").strip()
|
||||
if kw:
|
||||
like = f"%{kw}%"
|
||||
query = query.filter(or_(BizCleanRoom.room_code.like(like), BizCleanRoom.room_name.like(like)))
|
||||
query = apply_data_scope(query, BizCleanRoom, user, db, tenant_no)
|
||||
total = query.count()
|
||||
items = query.order_by(BizCleanRoom.create_time.desc()).offset((page - 1) * pageSize).limit(pageSize).all()
|
||||
@@ -425,6 +428,19 @@ class StorageSlotUpdateBody(BaseModel):
|
||||
remark: Optional[str] = None
|
||||
|
||||
|
||||
class StorageSlotClearBody(BaseModel):
|
||||
model_config = ConfigDict(populate_by_name=True)
|
||||
facility_node_id: str = Field(..., alias="facilityNodeId")
|
||||
|
||||
|
||||
class StorageSlotInsertRowBody(BaseModel):
|
||||
model_config = ConfigDict(populate_by_name=True)
|
||||
facility_node_id: str = Field(..., alias="facilityNodeId")
|
||||
after_row_num: int = Field(..., ge=0, alias="afterRowNum")
|
||||
cols: int = Field(..., ge=1)
|
||||
code_prefix: Optional[str] = Field("", alias="codePrefix")
|
||||
|
||||
|
||||
@router.get("/storage-facility-slots")
|
||||
async def list_storage_slots(
|
||||
facilityNodeId: str = Query(..., alias="facilityNodeId"),
|
||||
@@ -513,6 +529,50 @@ async def update_storage_slot(
|
||||
return error_response(400, str(e))
|
||||
|
||||
|
||||
@router.post("/storage-facility-slots/insert-row")
|
||||
async def insert_storage_slot_row(
|
||||
body: StorageSlotInsertRowBody,
|
||||
user: dict = Depends(require_admin_or_super_admin),
|
||||
db: Session = Depends(get_db),
|
||||
):
|
||||
try:
|
||||
tenant_no = _get_tenant_no(db, user)
|
||||
result = storage_facility_svc.insert_row_and_shift_slots(
|
||||
db,
|
||||
facility_node_id=body.facility_node_id,
|
||||
after_row_num=body.after_row_num,
|
||||
cols=body.cols,
|
||||
code_prefix=body.code_prefix or "",
|
||||
tenant_no=tenant_no,
|
||||
user_id=user.get("user_id"),
|
||||
)
|
||||
return success_response(result, message="新增行成功")
|
||||
except ValueError as e:
|
||||
return error_response(400, str(e))
|
||||
|
||||
|
||||
@router.post("/storage-facility-slots/clear")
|
||||
async def clear_storage_slots(
|
||||
body: StorageSlotClearBody,
|
||||
user: dict = Depends(require_admin_or_super_admin),
|
||||
db: Session = Depends(get_db),
|
||||
):
|
||||
try:
|
||||
tenant_no = _get_tenant_no(db, user)
|
||||
cleared_count = storage_facility_svc.clear_slots_by_facility_node(
|
||||
db,
|
||||
facility_node_id=body.facility_node_id,
|
||||
tenant_no=tenant_no,
|
||||
user_id=user.get("user_id"),
|
||||
)
|
||||
return success_response(
|
||||
{"clearedCount": cleared_count},
|
||||
message=f"已清空 {cleared_count} 个格子",
|
||||
)
|
||||
except ValueError as e:
|
||||
return error_response(400, str(e))
|
||||
|
||||
|
||||
@router.delete("/storage-facility-slots/{slot_id}")
|
||||
async def delete_storage_slot(
|
||||
slot_id: str,
|
||||
@@ -570,8 +630,16 @@ async def list_exhibition_appointments(
|
||||
BizExhibitionAppointment.del_flag == 0,
|
||||
BizExhibitionAppointment.tenant_no == tenant_no,
|
||||
)
|
||||
if keyword:
|
||||
query = query.filter(BizExhibitionAppointment.visit_org.like(f"%{keyword}%"))
|
||||
kw = (keyword or "").strip()
|
||||
if kw:
|
||||
like = f"%{kw}%"
|
||||
query = query.filter(
|
||||
or_(
|
||||
BizExhibitionAppointment.appointment_no.like(like),
|
||||
BizExhibitionAppointment.contact_name.like(like),
|
||||
BizExhibitionAppointment.visit_org.like(like),
|
||||
)
|
||||
)
|
||||
query = apply_data_scope(query, BizExhibitionAppointment, user, db, tenant_no)
|
||||
total = query.count()
|
||||
items = query.order_by(BizExhibitionAppointment.create_time.desc()).offset((page - 1) * pageSize).limit(pageSize).all()
|
||||
|
||||
@@ -57,7 +57,7 @@ async def list_cell_product_types(
|
||||
):
|
||||
tenant_no = _get_tenant_no(db, user)
|
||||
items, total = ps_svc.list_cell_product_types(
|
||||
db, page=page, page_size=pageSize, keyword=keyword, tenant_no=tenant_no
|
||||
db, page=page, page_size=pageSize, keyword=keyword, tenant_no=tenant_no, user_info=user
|
||||
)
|
||||
tp = ps_svc.total_pages(total, pageSize)
|
||||
return success_response(
|
||||
@@ -159,7 +159,7 @@ async def list_cell_product_specs(
|
||||
):
|
||||
tenant_no = _get_tenant_no(db, user)
|
||||
items, total = ps_svc.list_cell_product_specs(
|
||||
db, page=page, page_size=pageSize, keyword=keyword, tenant_no=tenant_no
|
||||
db, page=page, page_size=pageSize, keyword=keyword, tenant_no=tenant_no, user_info=user
|
||||
)
|
||||
tp = ps_svc.total_pages(total, pageSize)
|
||||
return success_response(
|
||||
@@ -280,6 +280,7 @@ async def list_cell_product_prices(
|
||||
keyword=keyword,
|
||||
tenant_no=tenant_no,
|
||||
cell_product_type_id=cell_product_type_id,
|
||||
user_info=user,
|
||||
)
|
||||
tp = ps_svc.total_pages(total, pageSize)
|
||||
return success_response(
|
||||
@@ -395,7 +396,7 @@ async def list_project_systems(
|
||||
):
|
||||
tenant_no = _get_tenant_no(db, user)
|
||||
items, total = ps_svc.list_project_systems(
|
||||
db, page=page, page_size=pageSize, keyword=keyword, tenant_no=tenant_no
|
||||
db, page=page, page_size=pageSize, keyword=keyword, tenant_no=tenant_no, user_info=user
|
||||
)
|
||||
tp = ps_svc.total_pages(total, pageSize)
|
||||
return success_response(
|
||||
@@ -509,7 +510,7 @@ async def list_project_system_items(
|
||||
):
|
||||
try:
|
||||
tenant_no = _get_tenant_no(db, user)
|
||||
items = ps_svc.list_project_system_items(db, system_id, tenant_no=tenant_no)
|
||||
items = ps_svc.list_project_system_items(db, system_id, tenant_no=tenant_no, user_info=user)
|
||||
return success_response(items)
|
||||
except ValueError as e:
|
||||
return error_response(400, str(e))
|
||||
@@ -635,7 +636,7 @@ async def list_channels(
|
||||
):
|
||||
tenant_no = _get_tenant_no(db, user)
|
||||
items, total = ps_svc.list_channels(
|
||||
db, page=page, page_size=pageSize, keyword=keyword, tenant_no=tenant_no
|
||||
db, page=page, page_size=pageSize, keyword=keyword, tenant_no=tenant_no, user_info=user
|
||||
)
|
||||
tp = ps_svc.total_pages(total, pageSize)
|
||||
return success_response(
|
||||
@@ -757,7 +758,7 @@ async def list_channel_invoices(
|
||||
):
|
||||
try:
|
||||
tenant_no = _get_tenant_no(db, user)
|
||||
items = ps_svc.list_channel_invoices(db, channel_id, tenant_no=tenant_no)
|
||||
items = ps_svc.list_channel_invoices(db, channel_id, tenant_no=tenant_no, user_info=user)
|
||||
return success_response(items)
|
||||
except ValueError as e:
|
||||
return error_response(400, str(e))
|
||||
@@ -865,7 +866,7 @@ async def list_channel_mail_addresses(
|
||||
):
|
||||
try:
|
||||
tenant_no = _get_tenant_no(db, user)
|
||||
items = ps_svc.list_channel_mail_addresses(db, channel_id, tenant_no=tenant_no)
|
||||
items = ps_svc.list_channel_mail_addresses(db, channel_id, tenant_no=tenant_no, user_info=user)
|
||||
return success_response(items)
|
||||
except ValueError as e:
|
||||
return error_response(400, str(e))
|
||||
@@ -973,7 +974,7 @@ async def list_channel_agreements(
|
||||
):
|
||||
try:
|
||||
tenant_no = _get_tenant_no(db, user)
|
||||
items = ps_svc.list_channel_agreements(db, channel_id, tenant_no=tenant_no)
|
||||
items = ps_svc.list_channel_agreements(db, channel_id, tenant_no=tenant_no, user_info=user)
|
||||
return success_response(items)
|
||||
except ValueError as e:
|
||||
return error_response(400, str(e))
|
||||
@@ -1127,7 +1128,7 @@ async def list_channel_agreement_prices(
|
||||
):
|
||||
try:
|
||||
tenant_no = _get_tenant_no(db, user)
|
||||
items = ps_svc.list_channel_agreement_prices(db, agreement_id, tenant_no=tenant_no)
|
||||
items = ps_svc.list_channel_agreement_prices(db, agreement_id, tenant_no=tenant_no, user_info=user)
|
||||
return success_response(items)
|
||||
except ValueError as e:
|
||||
return error_response(400, str(e))
|
||||
@@ -1245,7 +1246,7 @@ async def list_checkup_institutions(
|
||||
):
|
||||
tenant_no = _get_tenant_no(db, user)
|
||||
items, total = ps_svc.list_checkup_institutions(
|
||||
db, page=page, page_size=pageSize, keyword=keyword, tenant_no=tenant_no
|
||||
db, page=page, page_size=pageSize, keyword=keyword, tenant_no=tenant_no, user_info=user
|
||||
)
|
||||
tp = ps_svc.total_pages(total, pageSize)
|
||||
return success_response(
|
||||
@@ -1357,7 +1358,7 @@ async def list_checkup_institution_invoices(
|
||||
):
|
||||
try:
|
||||
tenant_no = _get_tenant_no(db, user)
|
||||
items = ps_svc.list_checkup_institution_invoices(db, institution_id, tenant_no=tenant_no)
|
||||
items = ps_svc.list_checkup_institution_invoices(db, institution_id, tenant_no=tenant_no, user_info=user)
|
||||
return success_response(items)
|
||||
except ValueError as e:
|
||||
return error_response(400, str(e))
|
||||
@@ -1465,7 +1466,7 @@ async def list_checkup_institution_projects(
|
||||
):
|
||||
try:
|
||||
tenant_no = _get_tenant_no(db, user)
|
||||
items = ps_svc.list_checkup_institution_projects(db, institution_id, tenant_no=tenant_no)
|
||||
items = ps_svc.list_checkup_institution_projects(db, institution_id, tenant_no=tenant_no, user_info=user)
|
||||
return success_response(items)
|
||||
except ValueError as e:
|
||||
return error_response(400, str(e))
|
||||
@@ -1606,7 +1607,7 @@ async def list_checkup_institution_packages(
|
||||
):
|
||||
try:
|
||||
tenant_no = _get_tenant_no(db, user)
|
||||
items = ps_svc.list_checkup_institution_packages(db, institution_id, tenant_no=tenant_no)
|
||||
items = ps_svc.list_checkup_institution_packages(db, institution_id, tenant_no=tenant_no, user_info=user)
|
||||
return success_response(items)
|
||||
except ValueError as e:
|
||||
return error_response(400, str(e))
|
||||
|
||||
@@ -95,7 +95,7 @@ async def list_consumables(
|
||||
db: Session = Depends(get_db),
|
||||
):
|
||||
tenant_no = _get_tenant_no(db, user)
|
||||
items, total = consumable_svc.list_consumables(db, page=page, page_size=pageSize, keyword=keyword, tenant_no=tenant_no)
|
||||
items, total = consumable_svc.list_consumables(db, page=page, page_size=pageSize, keyword=keyword, tenant_no=tenant_no, user_info=user)
|
||||
tp = consumable_svc.total_pages(total, pageSize)
|
||||
return success_response({"list": items, "total": total, "page": page, "pageSize": pageSize, "totalPages": tp})
|
||||
|
||||
@@ -106,7 +106,7 @@ async def list_all_consumables(
|
||||
db: Session = Depends(get_db),
|
||||
):
|
||||
tenant_no = _get_tenant_no(db, user)
|
||||
items, _ = consumable_svc.list_consumables(db, page=1, page_size=9999, tenant_no=tenant_no)
|
||||
items, _ = consumable_svc.list_consumables(db, page=1, page_size=9999, tenant_no=tenant_no, user_info=user)
|
||||
return success_response(items)
|
||||
|
||||
|
||||
@@ -214,7 +214,7 @@ async def list_reagents(
|
||||
db: Session = Depends(get_db),
|
||||
):
|
||||
tenant_no = _get_tenant_no(db, user)
|
||||
items, total = reagent_svc.list_reagents(db, page=page, page_size=pageSize, keyword=keyword, tenant_no=tenant_no)
|
||||
items, total = reagent_svc.list_reagents(db, page=page, page_size=pageSize, keyword=keyword, tenant_no=tenant_no, user_info=user)
|
||||
tp = reagent_svc.total_pages(total, pageSize)
|
||||
return success_response({"list": items, "total": total, "page": page, "pageSize": pageSize, "totalPages": tp})
|
||||
|
||||
@@ -225,7 +225,7 @@ async def list_all_reagents(
|
||||
db: Session = Depends(get_db),
|
||||
):
|
||||
tenant_no = _get_tenant_no(db, user)
|
||||
items, _ = reagent_svc.list_reagents(db, page=1, page_size=9999, tenant_no=tenant_no)
|
||||
items, _ = reagent_svc.list_reagents(db, page=1, page_size=9999, tenant_no=tenant_no, user_info=user)
|
||||
return success_response(items)
|
||||
|
||||
|
||||
@@ -329,7 +329,7 @@ async def list_sop_documents(
|
||||
db: Session = Depends(get_db),
|
||||
):
|
||||
tenant_no = _get_tenant_no(db, user)
|
||||
items, total = sop_document_svc.list_sop_documents(db, page=page, page_size=pageSize, keyword=keyword, tenant_no=tenant_no)
|
||||
items, total = sop_document_svc.list_sop_documents(db, page=page, page_size=pageSize, keyword=keyword, tenant_no=tenant_no, user_info=user)
|
||||
tp = sop_document_svc.total_pages(total, pageSize)
|
||||
return success_response({"list": items, "total": total, "page": page, "pageSize": pageSize, "totalPages": tp})
|
||||
|
||||
@@ -340,7 +340,7 @@ async def list_all_sop_documents(
|
||||
db: Session = Depends(get_db),
|
||||
):
|
||||
tenant_no = _get_tenant_no(db, user)
|
||||
items, _ = sop_document_svc.list_sop_documents(db, page=1, page_size=9999, tenant_no=tenant_no)
|
||||
items, _ = sop_document_svc.list_sop_documents(db, page=1, page_size=9999, tenant_no=tenant_no, user_info=user)
|
||||
return success_response(items)
|
||||
|
||||
|
||||
@@ -443,7 +443,7 @@ async def list_process_categories(
|
||||
db: Session = Depends(get_db),
|
||||
):
|
||||
tenant_no = _get_tenant_no(db, user)
|
||||
items, total = process_category_svc.list_process_categories(db, page=page, page_size=pageSize, keyword=keyword, tenant_no=tenant_no)
|
||||
items, total = process_category_svc.list_process_categories(db, page=page, page_size=pageSize, keyword=keyword, tenant_no=tenant_no, user_info=user)
|
||||
tp = process_category_svc.total_pages(total, pageSize)
|
||||
return success_response({"list": items, "total": total, "page": page, "pageSize": pageSize, "totalPages": tp})
|
||||
|
||||
@@ -454,7 +454,7 @@ async def list_all_process_categories(
|
||||
db: Session = Depends(get_db),
|
||||
):
|
||||
tenant_no = _get_tenant_no(db, user)
|
||||
items, _ = process_category_svc.list_process_categories(db, page=1, page_size=9999, tenant_no=tenant_no)
|
||||
items, _ = process_category_svc.list_process_categories(db, page=1, page_size=9999, tenant_no=tenant_no, user_info=user)
|
||||
return success_response(items)
|
||||
|
||||
|
||||
@@ -546,7 +546,7 @@ async def list_output_types(
|
||||
db: Session = Depends(get_db),
|
||||
):
|
||||
tenant_no = _get_tenant_no(db, user)
|
||||
items, total = output_type_svc.list_output_types(db, page=page, page_size=pageSize, keyword=keyword, tenant_no=tenant_no)
|
||||
items, total = output_type_svc.list_output_types(db, page=page, page_size=pageSize, keyword=keyword, tenant_no=tenant_no, user_info=user)
|
||||
tp = output_type_svc.total_pages(total, pageSize)
|
||||
return success_response({"list": items, "total": total, "page": page, "pageSize": pageSize, "totalPages": tp})
|
||||
|
||||
@@ -557,7 +557,7 @@ async def list_all_output_types(
|
||||
db: Session = Depends(get_db),
|
||||
):
|
||||
tenant_no = _get_tenant_no(db, user)
|
||||
items, _ = output_type_svc.list_output_types(db, page=1, page_size=9999, tenant_no=tenant_no)
|
||||
items, _ = output_type_svc.list_output_types(db, page=1, page_size=9999, tenant_no=tenant_no, user_info=user)
|
||||
return success_response(items)
|
||||
|
||||
|
||||
@@ -667,7 +667,7 @@ async def list_consumable_packs(
|
||||
db: Session = Depends(get_db),
|
||||
):
|
||||
tenant_no = _get_tenant_no(db, user)
|
||||
items, total = consumable_pack_svc.list_consumable_packs(db, page=page, page_size=pageSize, keyword=keyword, tenant_no=tenant_no)
|
||||
items, total = consumable_pack_svc.list_consumable_packs(db, page=page, page_size=pageSize, keyword=keyword, tenant_no=tenant_no, user_info=user)
|
||||
tp = consumable_pack_svc.total_pages(total, pageSize)
|
||||
return success_response({"list": items, "total": total, "page": page, "pageSize": pageSize, "totalPages": tp})
|
||||
|
||||
@@ -678,7 +678,7 @@ async def list_all_consumable_packs(
|
||||
db: Session = Depends(get_db),
|
||||
):
|
||||
tenant_no = _get_tenant_no(db, user)
|
||||
items = consumable_pack_svc.list_all_packs(db, tenant_no)
|
||||
items = consumable_pack_svc.list_all_packs(db, tenant_no, user_info=user)
|
||||
return success_response(items)
|
||||
|
||||
|
||||
@@ -848,7 +848,7 @@ async def list_processes(
|
||||
db: Session = Depends(get_db),
|
||||
):
|
||||
tenant_no = _get_tenant_no(db, user)
|
||||
items, total = process_svc.list_processes(db, page=page, page_size=pageSize, keyword=keyword, tenant_no=tenant_no)
|
||||
items, total = process_svc.list_processes(db, page=page, page_size=pageSize, keyword=keyword, tenant_no=tenant_no, user_info=user)
|
||||
tp = process_svc.total_pages(total, pageSize)
|
||||
return success_response({"list": items, "total": total, "page": page, "pageSize": pageSize, "totalPages": tp})
|
||||
|
||||
@@ -859,7 +859,7 @@ async def list_all_processes(
|
||||
db: Session = Depends(get_db),
|
||||
):
|
||||
tenant_no = _get_tenant_no(db, user)
|
||||
items = process_svc.list_all_processes(db, tenant_no)
|
||||
items = process_svc.list_all_processes(db, tenant_no, user_info=user)
|
||||
return success_response(items)
|
||||
|
||||
|
||||
@@ -993,6 +993,7 @@ async def list_process_routes(
|
||||
db, page=page, page_size=pageSize,
|
||||
route_name=routeName, route_code=routeCode,
|
||||
product_type_id=productTypeId, tenant_no=tenant_no,
|
||||
user_info=user,
|
||||
)
|
||||
tp = route_svc.total_pages(total, pageSize)
|
||||
return success_response({"list": items, "total": total, "page": page, "pageSize": pageSize, "totalPages": tp})
|
||||
@@ -1252,6 +1253,7 @@ async def list_production_work_orders(
|
||||
)
|
||||
result = production_work_order_svc.list_production_work_orders(
|
||||
db, tenant_no=tenant_no, query=query, page=page, page_size=pageSize,
|
||||
user_info=user,
|
||||
)
|
||||
items = result.get("items", [])
|
||||
total = result.get("total", 0)
|
||||
@@ -1327,6 +1329,7 @@ async def list_production_tasks(
|
||||
items, total = production_task_svc.list_production_tasks(
|
||||
db, tenant_no=tenant_no, page=page, page_size=pageSize,
|
||||
work_order_id=workOrderId, task_no=taskNo, task_status=taskStatus,
|
||||
user_info=user,
|
||||
)
|
||||
tp = production_task_svc.total_pages(total, pageSize)
|
||||
return success_response({"list": items, "total": total, "page": page, "pageSize": pageSize, "totalPages": tp})
|
||||
@@ -1560,6 +1563,7 @@ async def list_cell_products(
|
||||
db, tenant_no=tenant_no, page=page, page_size=pageSize,
|
||||
product_code=productCode, product_name=productName,
|
||||
product_type_id=productTypeId, product_status=productStatus,
|
||||
user_info=user,
|
||||
)
|
||||
items = result.get("items", [])
|
||||
total = result.get("total", 0)
|
||||
|
||||
+13
-6
@@ -72,7 +72,8 @@ async def list_qc_third_party_companies(
|
||||
try:
|
||||
tenant_no = _get_tenant_no(db, user)
|
||||
items, total = tpc_svc.list_companies(
|
||||
db, page=page, page_size=pageSize, keyword=keyword, status=status, tenant_no=tenant_no
|
||||
db, page=page, page_size=pageSize, keyword=keyword, status=status, tenant_no=tenant_no,
|
||||
user_info=user
|
||||
)
|
||||
return success_response(_page_payload(items, total, page, pageSize))
|
||||
except PermissionError as e:
|
||||
@@ -230,6 +231,7 @@ async def list_qc_third_party_items(
|
||||
status=status,
|
||||
company_id=companyId,
|
||||
tenant_no=tenant_no,
|
||||
user_info=user,
|
||||
)
|
||||
return success_response(_page_payload(items, total, page, pageSize))
|
||||
except PermissionError as e:
|
||||
@@ -246,7 +248,7 @@ async def list_qc_third_party_items_active(
|
||||
):
|
||||
try:
|
||||
tenant_no = _get_tenant_no(db, user)
|
||||
return success_response(tpi_svc.list_active_items(db, tenant_no, company_id=companyId))
|
||||
return success_response(tpi_svc.list_active_items(db, tenant_no, company_id=companyId, user_info=user))
|
||||
except PermissionError as e:
|
||||
return error_response(str(e), code=403)
|
||||
except Exception as e:
|
||||
@@ -390,7 +392,8 @@ async def list_qc_lab_test_items(
|
||||
try:
|
||||
tenant_no = _get_tenant_no(db, user)
|
||||
items, total = lab_svc.list_lab_items(
|
||||
db, page=page, page_size=pageSize, keyword=keyword, status=status, tenant_no=tenant_no
|
||||
db, page=page, page_size=pageSize, keyword=keyword, status=status, tenant_no=tenant_no,
|
||||
user_info=user
|
||||
)
|
||||
return success_response(_page_payload(items, total, page, pageSize))
|
||||
except PermissionError as e:
|
||||
@@ -406,7 +409,7 @@ async def list_qc_lab_test_items_active(
|
||||
):
|
||||
try:
|
||||
tenant_no = _get_tenant_no(db, user)
|
||||
return success_response(lab_svc.list_active_lab_items(db, tenant_no))
|
||||
return success_response(lab_svc.list_active_lab_items(db, tenant_no, user_info=user))
|
||||
except PermissionError as e:
|
||||
return error_response(str(e), code=403)
|
||||
except Exception as e:
|
||||
@@ -501,7 +504,7 @@ async def list_item_params(
|
||||
):
|
||||
try:
|
||||
tenant_no = _get_tenant_no(db, user)
|
||||
return success_response(param_svc.list_params_by_item(db, itemSource, itemId, tenant_no))
|
||||
return success_response(param_svc.list_params_by_item(db, itemSource, itemId, tenant_no, user_info=user))
|
||||
except PermissionError as e:
|
||||
return error_response(str(e), code=403)
|
||||
except Exception as e:
|
||||
@@ -558,6 +561,7 @@ async def list_qc_work_orders(
|
||||
keyword=keyword,
|
||||
work_order_status=workOrderStatus,
|
||||
tenant_no=tenant_no,
|
||||
user_info=user,
|
||||
)
|
||||
return success_response(_page_payload(items, total, page, pageSize))
|
||||
except PermissionError as e:
|
||||
@@ -645,6 +649,7 @@ async def list_qc_tasks(
|
||||
work_order_id=workOrderId,
|
||||
qc_biz_type=qcBizType,
|
||||
tenant_no=tenant_no,
|
||||
user_info=user,
|
||||
)
|
||||
return success_response(_page_payload(items, total, page, pageSize))
|
||||
except PermissionError as e:
|
||||
@@ -717,7 +722,7 @@ async def get_task_results(
|
||||
):
|
||||
try:
|
||||
tenant_no = _get_tenant_no(db, user)
|
||||
return success_response(result_svc.list_results_by_task(db, task_id, tenant_no))
|
||||
return success_response(result_svc.list_results_by_task(db, task_id, tenant_no, user_info=user))
|
||||
except PermissionError as e:
|
||||
return error_response(str(e), code=403)
|
||||
except Exception as e:
|
||||
@@ -849,6 +854,7 @@ async def list_qc_materials(
|
||||
tenant_no = _get_tenant_no(db, user)
|
||||
items, total = mat_svc.list_materials(
|
||||
db, page=page, page_size=pageSize, keyword=keyword, status=status, tenant_no=tenant_no,
|
||||
user_info=user,
|
||||
)
|
||||
return success_response(_page_payload(items, total, page, pageSize))
|
||||
except PermissionError as e:
|
||||
@@ -959,6 +965,7 @@ async def list_qc_material_usages(
|
||||
db, tenant_no, page=page, page_size=pageSize,
|
||||
material_id=materialId, change_type=changeType,
|
||||
start_time=startTime, end_time=endTime,
|
||||
user_info=user,
|
||||
)
|
||||
return success_response(_page_payload(items, total, page, pageSize))
|
||||
except PermissionError as e:
|
||||
|
||||
@@ -130,6 +130,7 @@ async def list_research_donations(
|
||||
keyword=keyword,
|
||||
donation_status=donationStatus,
|
||||
collector_user_id=collector_user_id,
|
||||
user_info=user,
|
||||
)
|
||||
return success_response(result)
|
||||
|
||||
@@ -156,6 +157,7 @@ async def list_research_donation_audits(
|
||||
page_size=pageSize,
|
||||
keyword=keyword,
|
||||
audit_status=auditStatus,
|
||||
user_info=user,
|
||||
)
|
||||
return success_response(result)
|
||||
|
||||
|
||||
@@ -208,7 +208,7 @@ async def list_pending_samples(
|
||||
tenant_no = _get_tenant_no(db, user)
|
||||
items, total = sr_svc.list_pending_protocol_samples(
|
||||
db, page=page, page_size=pageSize, tenant_no=tenant_no, keyword=keyword,
|
||||
source_type=sourceType,
|
||||
source_type=sourceType, user_info=user,
|
||||
)
|
||||
return success_response(_page_payload(items, total, page, pageSize))
|
||||
except PermissionError as e:
|
||||
@@ -230,7 +230,7 @@ async def list_received_samples(
|
||||
tenant_no = _get_tenant_no(db, user)
|
||||
items, total = sr_svc.list_received_protocol_samples(
|
||||
db, page=page, page_size=pageSize, tenant_no=tenant_no, keyword=keyword,
|
||||
source_type=sourceType,
|
||||
source_type=sourceType, user_info=user,
|
||||
)
|
||||
return success_response(_page_payload(items, total, page, pageSize))
|
||||
except PermissionError as e:
|
||||
|
||||
@@ -158,7 +158,7 @@ async def list_process_defs(
|
||||
):
|
||||
tenant_no = _user.get("tenant_no", "zkxw")
|
||||
items, total = wf_crud.list_process_defs(
|
||||
db, page=page, page_size=pageSize, keyword=keyword, status=status, tenant_no=tenant_no
|
||||
db, page=page, page_size=pageSize, keyword=keyword, status=status, tenant_no=tenant_no, user_info=_user
|
||||
)
|
||||
tp = wf_crud.total_pages(total, pageSize)
|
||||
return success_response({"list": items, "total": total, "page": page, "pageSize": pageSize, "totalPages": tp})
|
||||
@@ -261,7 +261,7 @@ async def list_versions(
|
||||
db: Session = Depends(get_db),
|
||||
):
|
||||
tenant_no = _user.get("tenant_no", "zkxw")
|
||||
items = wf_crud.list_versions(db, def_id, tenant_no=tenant_no)
|
||||
items = wf_crud.list_versions(db, def_id, tenant_no=tenant_no, user_info=_user)
|
||||
return success_response(items)
|
||||
|
||||
|
||||
@@ -347,7 +347,7 @@ async def list_my_instances(
|
||||
tenant_no = user.get("tenant_no", "zkxw")
|
||||
items, total = wf_crud.list_my_instances(
|
||||
db, user_id, page=page, page_size=pageSize,
|
||||
keyword=keyword, status=status, tenant_no=tenant_no,
|
||||
keyword=keyword, status=status, tenant_no=tenant_no, user_info=user,
|
||||
)
|
||||
_enrich_task_list(db, items)
|
||||
tp = wf_crud.total_pages(total, pageSize)
|
||||
@@ -428,7 +428,7 @@ async def list_pending_tasks(
|
||||
user_id = user.get("user_id") or user.get("id")
|
||||
tenant_no = user.get("tenant_no", "zkxw")
|
||||
items, total = wf_crud.list_pending_tasks(
|
||||
db, user_id, page=page, page_size=pageSize, keyword=keyword, tenant_no=tenant_no
|
||||
db, user_id, page=page, page_size=pageSize, keyword=keyword, tenant_no=tenant_no, user_info=user
|
||||
)
|
||||
_enrich_task_list(db, items)
|
||||
tp = wf_crud.total_pages(total, pageSize)
|
||||
@@ -446,7 +446,7 @@ async def list_completed_tasks(
|
||||
user_id = user.get("user_id") or user.get("id")
|
||||
tenant_no = user.get("tenant_no", "zkxw")
|
||||
items, total = wf_crud.list_completed_tasks(
|
||||
db, user_id, page=page, page_size=pageSize, keyword=keyword, tenant_no=tenant_no
|
||||
db, user_id, page=page, page_size=pageSize, keyword=keyword, tenant_no=tenant_no, user_info=user
|
||||
)
|
||||
_enrich_task_list(db, items)
|
||||
tp = wf_crud.total_pages(total, pageSize)
|
||||
|
||||
@@ -122,34 +122,38 @@ def apply_data_scope(query, model, user_info: dict, db: Session, tenant_no: str
|
||||
Returns:
|
||||
应用数据权限过滤后的 query
|
||||
"""
|
||||
# 1. super_admin 直接放行
|
||||
# 1. 无用户信息 → 不过滤
|
||||
if not user_info:
|
||||
return query
|
||||
|
||||
# 2. super_admin 直接放行
|
||||
if user_info.get("role") == "super_admin":
|
||||
return query
|
||||
|
||||
# 2. 获取 user_id
|
||||
# 3. 获取 user_id
|
||||
user_id = user_info.get("user_id")
|
||||
if not user_id:
|
||||
return query
|
||||
|
||||
# 3. 确定 tenant_no
|
||||
# 4. 确定 tenant_no
|
||||
effective_tenant = tenant_no or settings.DEFAULT_TENANT_NO
|
||||
|
||||
# 4. 检查 model 是否有可过滤字段
|
||||
# 5. 检查 model 是否有可过滤字段
|
||||
has_dept = hasattr(model, "create_dept_id")
|
||||
has_user = hasattr(model, "create_by")
|
||||
if not has_dept and not has_user:
|
||||
return query
|
||||
|
||||
# 5. 获取用户所有角色的数据权限
|
||||
# 6. 获取用户所有角色的数据权限
|
||||
role_scopes = _resolve_user_role_scopes(db, user_id, effective_tenant)
|
||||
if not role_scopes:
|
||||
return query
|
||||
return query.filter(False)
|
||||
|
||||
# 6. 任一角色拥有全部数据权限 → 放行(union 语义)
|
||||
# 7. 任一角色拥有全部数据权限 → 放行(union 语义)
|
||||
if any(rs["data_scope"] == "1" for rs in role_scopes):
|
||||
return query
|
||||
|
||||
# 7. 收集所有角色的 dept_ids 和 user_ids(union 合并)
|
||||
# 8. 收集所有角色的 dept_ids 和 user_ids(union 合并)
|
||||
dept_ids: Set[str] = set()
|
||||
user_ids: Set[str] = set()
|
||||
|
||||
@@ -184,7 +188,7 @@ def apply_data_scope(query, model, user_info: dict, db: Session, tenant_no: str
|
||||
elif detail.scope_type == "user":
|
||||
user_ids.add(val)
|
||||
|
||||
# 8. 构建 OR 条件并应用
|
||||
# 9. 构建 OR 条件并应用
|
||||
conditions = []
|
||||
if dept_ids and has_dept:
|
||||
conditions.append(model.create_dept_id.in_(dept_ids))
|
||||
|
||||
@@ -48,6 +48,7 @@ def list_cell_products(
|
||||
product_name: Optional[str] = None,
|
||||
product_type_id: Optional[str] = None,
|
||||
product_status: Optional[str] = None,
|
||||
user_info=None,
|
||||
) -> Dict[str, Any]:
|
||||
def _filtered():
|
||||
q0 = db.query(BizCellProduct).filter(
|
||||
@@ -64,6 +65,9 @@ def list_cell_products(
|
||||
q0 = q0.filter(BizCellProduct.product_type_id == product_type_id)
|
||||
if product_status:
|
||||
q0 = q0.filter(BizCellProduct.product_status == product_status)
|
||||
if user_info:
|
||||
from app.core.data_scope import apply_data_scope
|
||||
q0 = apply_data_scope(q0, BizCellProduct, user_info, db, tenant_no)
|
||||
return q0
|
||||
|
||||
total = _filtered().order_by(None).with_entities(func.count(BizCellProduct.id)).scalar() or 0
|
||||
|
||||
@@ -600,8 +600,8 @@ def list_storage_certs(
|
||||
make_status: Optional[str] = None,
|
||||
page: int = 1,
|
||||
page_size: int = 10,
|
||||
user_info=None,
|
||||
) -> Tuple[List[Dict[str, Any]], int]:
|
||||
"""储存证管理列表:生效中协议 + 当事人/样本/储存证信息(不要求样本已入库)。"""
|
||||
q = db.query(BizCollectionProtocol).filter(
|
||||
BizCollectionProtocol.del_flag == 0,
|
||||
BizCollectionProtocol.tenant_no == tenant_no,
|
||||
@@ -624,6 +624,9 @@ def list_storage_certs(
|
||||
BizCollectionProtocol.id.in_(party_ids),
|
||||
)
|
||||
)
|
||||
if user_info:
|
||||
from app.core.data_scope import apply_data_scope
|
||||
q = apply_data_scope(q, BizCollectionProtocol, user_info, db, tenant_no)
|
||||
|
||||
rows_all = q.order_by(BizCollectionProtocol.create_time.desc()).all()
|
||||
protocol_ids = [r.id for r in rows_all]
|
||||
@@ -715,6 +718,7 @@ def list_collection_protocols(
|
||||
protocol_status: Optional[str] = None,
|
||||
tenant_no: Optional[str] = None,
|
||||
scope_collector_user_id: Optional[str] = None,
|
||||
user_info=None,
|
||||
) -> Tuple[List[Dict[str, Any]], int]:
|
||||
def _filtered():
|
||||
q0 = db.query(BizCollectionProtocol).filter(BizCollectionProtocol.del_flag == 0)
|
||||
@@ -735,6 +739,9 @@ def list_collection_protocols(
|
||||
BizCollectionProtocol.remark.like(like),
|
||||
)
|
||||
)
|
||||
if user_info:
|
||||
from app.core.data_scope import apply_data_scope
|
||||
q0 = apply_data_scope(q0, BizCollectionProtocol, user_info, db, tenant_no)
|
||||
return q0
|
||||
|
||||
total = _filtered().order_by(None).with_entities(func.count(BizCollectionProtocol.id)).scalar() or 0
|
||||
@@ -988,6 +995,7 @@ def list_audits(
|
||||
keyword: Optional[str] = None,
|
||||
audit_status: Optional[str] = None,
|
||||
tenant_no: Optional[str] = None,
|
||||
user_info=None,
|
||||
) -> Tuple[List[Dict[str, Any]], int]:
|
||||
q_base = (
|
||||
db.query(BizProtocolAudit, BizCollectionProtocol.protocol_no)
|
||||
@@ -1010,6 +1018,9 @@ def list_audits(
|
||||
q_base = q_base.filter(
|
||||
or_(BizCollectionProtocol.protocol_no.like(like), BizProtocolAudit.audit_remark.like(like))
|
||||
)
|
||||
if user_info:
|
||||
from app.core.data_scope import apply_data_scope
|
||||
q_base = apply_data_scope(q_base, BizProtocolAudit, user_info, db, tenant_no)
|
||||
|
||||
total = q_base.order_by(None).with_entities(func.count(BizProtocolAudit.id)).scalar() or 0
|
||||
page = max(1, page)
|
||||
@@ -1132,10 +1143,14 @@ def list_receipt_confirm_details(
|
||||
page: int = 1,
|
||||
page_size: int = 10,
|
||||
tenant_no: Optional[str] = None,
|
||||
user_info=None,
|
||||
) -> Tuple[List[Dict[str, Any]], int]:
|
||||
if not tenant_no:
|
||||
return [], 0
|
||||
q_base = _detail_query_with_protocol(db, tenant_no, "jfqrz")
|
||||
if user_info:
|
||||
from app.core.data_scope import apply_data_scope
|
||||
q_base = apply_data_scope(q_base, BizProtocolPaymentDetail, user_info, db, tenant_no)
|
||||
total = q_base.order_by(None).with_entities(func.count(BizProtocolPaymentDetail.id)).scalar() or 0
|
||||
page = max(1, page)
|
||||
page_size = min(max(1, page_size), 100)
|
||||
@@ -1154,11 +1169,14 @@ def list_receipt_confirmed_details(
|
||||
page: int = 1,
|
||||
page_size: int = 10,
|
||||
tenant_no: Optional[str] = None,
|
||||
user_info=None,
|
||||
) -> Tuple[List[Dict[str, Any]], int]:
|
||||
"""财务已确认收款(yjf),按确认时间倒序。"""
|
||||
if not tenant_no:
|
||||
return [], 0
|
||||
q_base = _detail_query_with_protocol(db, tenant_no, "yjf")
|
||||
if user_info:
|
||||
from app.core.data_scope import apply_data_scope
|
||||
q_base = apply_data_scope(q_base, BizProtocolPaymentDetail, user_info, db, tenant_no)
|
||||
total = q_base.order_by(None).with_entities(func.count(BizProtocolPaymentDetail.id)).scalar() or 0
|
||||
page = max(1, page)
|
||||
page_size = min(max(1, page_size), 100)
|
||||
@@ -1225,10 +1243,14 @@ def list_refund_confirm_details(
|
||||
page: int = 1,
|
||||
page_size: int = 10,
|
||||
tenant_no: Optional[str] = None,
|
||||
user_info=None,
|
||||
) -> Tuple[List[Dict[str, Any]], int]:
|
||||
if not tenant_no:
|
||||
return [], 0
|
||||
q_base = _detail_query_with_protocol(db, tenant_no, "tfqrz")
|
||||
if user_info:
|
||||
from app.core.data_scope import apply_data_scope
|
||||
q_base = apply_data_scope(q_base, BizProtocolPaymentDetail, user_info, db, tenant_no)
|
||||
total = q_base.order_by(None).with_entities(func.count(BizProtocolPaymentDetail.id)).scalar() or 0
|
||||
page = max(1, page)
|
||||
page_size = min(max(1, page_size), 100)
|
||||
@@ -1255,11 +1277,14 @@ def list_refund_confirmed_details(
|
||||
page: int = 1,
|
||||
page_size: int = 10,
|
||||
tenant_no: Optional[str] = None,
|
||||
user_info=None,
|
||||
) -> Tuple[List[Dict[str, Any]], int]:
|
||||
"""财务已确认退费(ytf),按确认时间倒序。"""
|
||||
if not tenant_no:
|
||||
return [], 0
|
||||
q_base = _detail_query_with_protocol(db, tenant_no, "ytf")
|
||||
if user_info:
|
||||
from app.core.data_scope import apply_data_scope
|
||||
q_base = apply_data_scope(q_base, BizProtocolPaymentDetail, user_info, db, tenant_no)
|
||||
total = q_base.order_by(None).with_entities(func.count(BizProtocolPaymentDetail.id)).scalar() or 0
|
||||
page = max(1, page)
|
||||
page_size = min(max(1, page_size), 100)
|
||||
@@ -1486,6 +1511,7 @@ def list_payment_details_page(
|
||||
keyword: Optional[str] = None,
|
||||
transfer_type: Optional[str] = None,
|
||||
tenant_no: Optional[str] = None,
|
||||
user_info=None,
|
||||
) -> Tuple[List[Dict[str, Any]], int]:
|
||||
if not tenant_no:
|
||||
return [], 0
|
||||
@@ -1507,6 +1533,9 @@ def list_payment_details_page(
|
||||
q = q.filter(BizCollectionProtocol.protocol_no.like(like))
|
||||
if transfer_type and transfer_type.strip():
|
||||
q = q.filter(BizProtocolPaymentDetail.transfer_type == transfer_type.strip())
|
||||
if user_info:
|
||||
from app.core.data_scope import apply_data_scope
|
||||
q = apply_data_scope(q, BizProtocolPaymentDetail, user_info, db, tenant_no)
|
||||
total = q.order_by(None).with_entities(func.count(BizProtocolPaymentDetail.id)).scalar() or 0
|
||||
page = max(1, page)
|
||||
page_size = min(max(1, page_size), 100)
|
||||
@@ -1559,6 +1588,7 @@ def list_installment_warning(
|
||||
page_size: int = 10,
|
||||
warning_type: str = "all",
|
||||
tenant_no: Optional[str] = None,
|
||||
user_info=None,
|
||||
) -> Tuple[List[Dict[str, Any]], int]:
|
||||
if not tenant_no:
|
||||
return [], 0
|
||||
@@ -1566,6 +1596,9 @@ def list_installment_warning(
|
||||
q0 = _detail_query_with_protocol(db, tenant_no, "dfj").filter(
|
||||
BizProtocolPaymentDetail.installment_no.isnot(None),
|
||||
)
|
||||
if user_info:
|
||||
from app.core.data_scope import apply_data_scope
|
||||
q0 = apply_data_scope(q0, BizProtocolPaymentDetail, user_info, db, tenant_no)
|
||||
|
||||
# 拉取当前租户下候选(分期号非空);日期过滤在内存中完成以保证与 classify 一致
|
||||
rows_all = q0.order_by(BizProtocolPaymentDetail.installment_due_date.asc()).all()
|
||||
|
||||
@@ -36,6 +36,7 @@ def list_consumables(
|
||||
page_size: int = 10,
|
||||
keyword: Optional[str] = None,
|
||||
tenant_no: Optional[str] = None,
|
||||
user_info=None,
|
||||
) -> Tuple[List[Dict[str, Any]], int]:
|
||||
def _filtered():
|
||||
q0 = db.query(BizConsumable).filter(BizConsumable.del_flag == 0)
|
||||
@@ -50,6 +51,9 @@ def list_consumables(
|
||||
BizConsumable.consumable_name.like(like),
|
||||
)
|
||||
)
|
||||
if user_info:
|
||||
from app.core.data_scope import apply_data_scope
|
||||
q0 = apply_data_scope(q0, BizConsumable, user_info, db, tenant_no)
|
||||
return q0
|
||||
|
||||
total = _filtered().order_by(None).with_entities(func.count(BizConsumable.id)).scalar() or 0
|
||||
|
||||
@@ -48,6 +48,7 @@ def list_consumable_packs(
|
||||
page_size: int = 10,
|
||||
keyword: Optional[str] = None,
|
||||
tenant_no: Optional[str] = None,
|
||||
user_info=None,
|
||||
) -> Tuple[List[Dict[str, Any]], int]:
|
||||
def _filtered():
|
||||
q0 = db.query(BizConsumablePack).filter(BizConsumablePack.del_flag == 0)
|
||||
@@ -62,6 +63,9 @@ def list_consumable_packs(
|
||||
BizConsumablePack.pack_name.like(like),
|
||||
)
|
||||
)
|
||||
if user_info:
|
||||
from app.core.data_scope import apply_data_scope
|
||||
q0 = apply_data_scope(q0, BizConsumablePack, user_info, db, tenant_no)
|
||||
return q0
|
||||
|
||||
total = _filtered().order_by(None).with_entities(func.count(BizConsumablePack.id)).scalar() or 0
|
||||
@@ -77,13 +81,12 @@ def list_consumable_packs(
|
||||
return [_row_to_dict(x) for x in rows], int(total)
|
||||
|
||||
|
||||
def list_all_packs(db: Session, tenant_no: str) -> List[Dict[str, Any]]:
|
||||
rows = (
|
||||
db.query(BizConsumablePack)
|
||||
.filter(and_(BizConsumablePack.tenant_no == tenant_no, BizConsumablePack.del_flag == 0))
|
||||
.order_by(BizConsumablePack.create_time.desc())
|
||||
.all()
|
||||
)
|
||||
def list_all_packs(db: Session, tenant_no: str, user_info=None) -> List[Dict[str, Any]]:
|
||||
q0 = db.query(BizConsumablePack).filter(and_(BizConsumablePack.tenant_no == tenant_no, BizConsumablePack.del_flag == 0))
|
||||
if user_info:
|
||||
from app.core.data_scope import apply_data_scope
|
||||
q0 = apply_data_scope(q0, BizConsumablePack, user_info, db, tenant_no)
|
||||
rows = q0.order_by(BizConsumablePack.create_time.desc()).all()
|
||||
return [_row_to_dict(x) for x in rows]
|
||||
|
||||
|
||||
|
||||
@@ -56,6 +56,7 @@ def list_depts(
|
||||
*,
|
||||
keyword: Optional[str] = None,
|
||||
tenant_no: Optional[str] = None,
|
||||
user_info=None,
|
||||
) -> List[Dict[str, Any]]:
|
||||
q = db.query(SysDept).filter(SysDept.del_flag == 0)
|
||||
if tenant_no:
|
||||
@@ -64,6 +65,9 @@ def list_depts(
|
||||
if kw:
|
||||
like = f"%{kw}%"
|
||||
q = q.filter(SysDept.dept_name.like(like))
|
||||
if user_info:
|
||||
from app.core.data_scope import apply_data_scope
|
||||
q = apply_data_scope(q, SysDept, user_info, db, tenant_no)
|
||||
rows = q.order_by(SysDept.create_time.desc()).all()
|
||||
return [_row_to_dict(x) for x in rows]
|
||||
|
||||
@@ -73,17 +77,18 @@ def list_depts_tree(
|
||||
*,
|
||||
keyword: Optional[str] = None,
|
||||
tenant_no: Optional[str] = None,
|
||||
user_info=None,
|
||||
) -> List[Dict[str, Any]]:
|
||||
kw = (keyword or "").strip()
|
||||
if not kw:
|
||||
flat = list_depts(db, keyword=None, tenant_no=tenant_no)
|
||||
flat = list_depts(db, keyword=None, tenant_no=tenant_no, user_info=user_info)
|
||||
return _build_tree(flat, "0")
|
||||
|
||||
matched = list_depts(db, keyword=keyword, tenant_no=tenant_no)
|
||||
matched = list_depts(db, keyword=keyword, tenant_no=tenant_no, user_info=user_info)
|
||||
if not matched:
|
||||
return []
|
||||
|
||||
all_flat = list_depts(db, keyword=None, tenant_no=tenant_no)
|
||||
all_flat = list_depts(db, keyword=None, tenant_no=tenant_no, user_info=user_info)
|
||||
seed_ids = {m["id"] for m in matched if m.get("id")}
|
||||
expanded = _collect_with_ancestors(all_flat, seed_ids)
|
||||
return _build_tree(expanded, "0")
|
||||
|
||||
@@ -34,6 +34,7 @@ def list_dict_data(
|
||||
dict_type_code: Optional[str] = None,
|
||||
keyword: Optional[str] = None,
|
||||
tenant_no: Optional[str] = None,
|
||||
user_info=None,
|
||||
) -> Tuple[List[Dict[str, Any]], int]:
|
||||
def _filtered():
|
||||
q0 = db.query(SysDictData).filter(SysDictData.del_flag == 0)
|
||||
@@ -45,6 +46,9 @@ def list_dict_data(
|
||||
if kw:
|
||||
like = f"%{kw}%"
|
||||
q0 = q0.filter(SysDictData.dict_label.like(like))
|
||||
if user_info:
|
||||
from app.core.data_scope import apply_data_scope
|
||||
q0 = apply_data_scope(q0, SysDictData, user_info, db, tenant_no)
|
||||
return q0
|
||||
|
||||
total = _filtered().order_by(None).with_entities(func.count(SysDictData.id)).scalar() or 0
|
||||
|
||||
@@ -32,6 +32,7 @@ def list_dict_types(
|
||||
page_size: int = 10,
|
||||
keyword: Optional[str] = None,
|
||||
tenant_no: Optional[str] = None,
|
||||
user_info=None,
|
||||
) -> Tuple[List[Dict[str, Any]], int]:
|
||||
def _filtered():
|
||||
q0 = db.query(SysDictType).filter(SysDictType.del_flag == 0)
|
||||
@@ -41,6 +42,9 @@ def list_dict_types(
|
||||
if kw:
|
||||
like = f"%{kw}%"
|
||||
q0 = q0.filter(or_(SysDictType.dict_name.like(like), SysDictType.dict_type.like(like)))
|
||||
if user_info:
|
||||
from app.core.data_scope import apply_data_scope
|
||||
q0 = apply_data_scope(q0, SysDictType, user_info, db, tenant_no)
|
||||
return q0
|
||||
|
||||
total = _filtered().order_by(None).with_entities(func.count(SysDictType.id)).scalar() or 0
|
||||
|
||||
@@ -20,11 +20,15 @@ def list_ethnics(
|
||||
*,
|
||||
keyword: Optional[str] = None,
|
||||
limit: int = 200,
|
||||
user_info=None,
|
||||
) -> List[Dict[str, Any]]:
|
||||
q = db.query(SysEthnic).filter(SysEthnic.del_flag == 0)
|
||||
kw = (keyword or "").strip()
|
||||
if kw:
|
||||
like = f"%{kw}%"
|
||||
q = q.filter(SysEthnic.ethnic_name.like(like))
|
||||
if user_info:
|
||||
from app.core.data_scope import apply_data_scope
|
||||
q = apply_data_scope(q, SysEthnic, user_info, db)
|
||||
rows = q.order_by(SysEthnic.order_num.asc(), SysEthnic.ethnic_code.asc()).limit(max(1, min(limit, 500))).all()
|
||||
return [_row_to_dict(x) for x in rows]
|
||||
@@ -32,6 +32,7 @@ def list_express_companies(
|
||||
page_size: int = 10,
|
||||
keyword: Optional[str] = None,
|
||||
tenant_no: Optional[str] = None,
|
||||
user_info=None,
|
||||
) -> Tuple[List[Dict[str, Any]], int]:
|
||||
def _filtered():
|
||||
q0 = db.query(BizExpressCompany).filter(BizExpressCompany.del_flag == 0)
|
||||
@@ -41,6 +42,9 @@ def list_express_companies(
|
||||
if kw:
|
||||
like = f"%{kw}%"
|
||||
q0 = q0.filter(or_(BizExpressCompany.express_code.like(like), BizExpressCompany.express_name.like(like)))
|
||||
if user_info:
|
||||
from app.core.data_scope import apply_data_scope
|
||||
q0 = apply_data_scope(q0, BizExpressCompany, user_info, db, tenant_no)
|
||||
return q0
|
||||
|
||||
total = _filtered().order_by(None).with_entities(func.count(BizExpressCompany.id)).scalar() or 0
|
||||
|
||||
@@ -32,6 +32,7 @@ def list_item_units(
|
||||
page_size: int = 10,
|
||||
keyword: Optional[str] = None,
|
||||
tenant_no: Optional[str] = None,
|
||||
user_info=None,
|
||||
) -> Tuple[List[Dict[str, Any]], int]:
|
||||
def _filtered():
|
||||
q0 = db.query(BizItemUnit).filter(BizItemUnit.del_flag == 0)
|
||||
@@ -41,6 +42,9 @@ def list_item_units(
|
||||
if kw:
|
||||
like = f"%{kw}%"
|
||||
q0 = q0.filter(or_(BizItemUnit.unit_code.like(like), BizItemUnit.unit_name.like(like)))
|
||||
if user_info:
|
||||
from app.core.data_scope import apply_data_scope
|
||||
q0 = apply_data_scope(q0, BizItemUnit, user_info, db, tenant_no)
|
||||
return q0
|
||||
|
||||
total = _filtered().order_by(None).with_entities(func.count(BizItemUnit.id)).scalar() or 0
|
||||
|
||||
@@ -44,6 +44,7 @@ def list_leaves(
|
||||
status: Optional[str] = None,
|
||||
tenant_no: Optional[str] = None,
|
||||
create_by: Optional[str] = None,
|
||||
user_info=None,
|
||||
) -> Tuple[List[Dict[str, Any]], int]:
|
||||
q = db.query(BizLeaveRequest).filter(BizLeaveRequest.del_flag == 0)
|
||||
if tenant_no:
|
||||
@@ -56,6 +57,9 @@ def list_leaves(
|
||||
if kw:
|
||||
like = f"%{kw}%"
|
||||
q = q.filter(or_(BizLeaveRequest.reason.like(like), BizLeaveRequest.leave_type.like(like)))
|
||||
if user_info:
|
||||
from app.core.data_scope import apply_data_scope
|
||||
q = apply_data_scope(q, BizLeaveRequest, user_info, db, tenant_no)
|
||||
total = q.count()
|
||||
rows = (
|
||||
q.order_by(BizLeaveRequest.create_time.desc())
|
||||
|
||||
@@ -65,6 +65,7 @@ def list_materials(
|
||||
keyword: Optional[str] = None,
|
||||
category: Optional[str] = None,
|
||||
status: Optional[str] = None,
|
||||
user_info=None,
|
||||
) -> Tuple[List[Dict[str, Any]], int]:
|
||||
def _filtered():
|
||||
q0 = db.query(BizMaterial).filter(
|
||||
@@ -86,6 +87,9 @@ def list_materials(
|
||||
st = (status or "").strip()
|
||||
if st in ("0", "1"):
|
||||
q0 = q0.filter(BizMaterial.status == st)
|
||||
if user_info:
|
||||
from app.core.data_scope import apply_data_scope
|
||||
q0 = apply_data_scope(q0, BizMaterial, user_info, db, tenant_no)
|
||||
return q0
|
||||
|
||||
total = _filtered().order_by(None).with_entities(func.count(BizMaterial.id)).scalar() or 0
|
||||
|
||||
@@ -50,6 +50,7 @@ def list_stock_logs(
|
||||
start_time: Optional[str] = None,
|
||||
end_time: Optional[str] = None,
|
||||
keyword: Optional[str] = None,
|
||||
user_info=None,
|
||||
) -> Tuple[List[Dict[str, Any]], int]:
|
||||
def _filtered():
|
||||
q0 = db.query(BizMaterialStockLog).filter(
|
||||
@@ -73,6 +74,9 @@ def list_stock_logs(
|
||||
BizMaterialStockLog.material_name.ilike(like),
|
||||
)
|
||||
)
|
||||
if user_info:
|
||||
from app.core.data_scope import apply_data_scope
|
||||
q0 = apply_data_scope(q0, BizMaterialStockLog, user_info, db, tenant_no)
|
||||
return q0
|
||||
|
||||
total = _filtered().order_by(None).with_entities(func.count(BizMaterialStockLog.id)).scalar() or 0
|
||||
|
||||
@@ -43,6 +43,7 @@ def list_menus(
|
||||
*,
|
||||
keyword: Optional[str] = None,
|
||||
tenant_no: Optional[str] = None,
|
||||
user_info=None,
|
||||
) -> List[Dict[str, Any]]:
|
||||
q = db.query(SysMenu).filter(SysMenu.del_flag == 0)
|
||||
if tenant_no:
|
||||
@@ -51,6 +52,9 @@ def list_menus(
|
||||
if kw:
|
||||
like = f"%{kw}%"
|
||||
q = q.filter(SysMenu.menu_name.like(like))
|
||||
if user_info:
|
||||
from app.core.data_scope import apply_data_scope
|
||||
q = apply_data_scope(q, SysMenu, user_info, db, tenant_no)
|
||||
rows = q.order_by(SysMenu.create_time.desc()).all()
|
||||
return [_row_to_dict(x) for x in rows]
|
||||
|
||||
@@ -60,9 +64,38 @@ def list_menus_tree(
|
||||
*,
|
||||
keyword: Optional[str] = None,
|
||||
tenant_no: Optional[str] = None,
|
||||
user_info=None,
|
||||
) -> List[Dict[str, Any]]:
|
||||
flat = list_menus(db, keyword=keyword, tenant_no=tenant_no)
|
||||
return _build_tree(flat, "0")
|
||||
kw = (keyword or "").strip()
|
||||
# 关键词检索时:仅返回命中节点会导致其父节点缺失,从而无法组装为以 parentId=0 开始的树。
|
||||
# 这里改为:命中节点 + 其所有祖先节点,再组树。
|
||||
if not kw:
|
||||
flat = list_menus(db, keyword=None, tenant_no=tenant_no, user_info=user_info)
|
||||
return _build_tree(flat, "0")
|
||||
|
||||
all_items = list_menus(db, keyword=None, tenant_no=tenant_no, user_info=user_info)
|
||||
id_map: Dict[str, Dict[str, Any]] = {x.get("id"): x for x in all_items if x.get("id")}
|
||||
|
||||
like_items = [
|
||||
x for x in all_items if kw and kw in (x.get("menuName") or "")
|
||||
]
|
||||
|
||||
picked: Dict[str, Dict[str, Any]] = {}
|
||||
|
||||
def pick_with_ancestors(item_id: str) -> None:
|
||||
cur = id_map.get(item_id)
|
||||
while cur and cur.get("id") and cur.get("id") not in picked:
|
||||
picked[cur["id"]] = cur
|
||||
parent_id = (cur.get("parentId") or "0").strip()
|
||||
if not parent_id or parent_id == "0":
|
||||
break
|
||||
cur = id_map.get(parent_id)
|
||||
|
||||
for it in like_items:
|
||||
if it.get("id"):
|
||||
pick_with_ancestors(it["id"])
|
||||
|
||||
return _build_tree(list(picked.values()), "0")
|
||||
|
||||
|
||||
def get_menu(db: Session, menu_id: str) -> Optional[SysMenu]:
|
||||
|
||||
@@ -32,6 +32,7 @@ def list_output_types(
|
||||
page_size: int = 10,
|
||||
keyword: Optional[str] = None,
|
||||
tenant_no: Optional[str] = None,
|
||||
user_info=None,
|
||||
) -> Tuple[List[Dict[str, Any]], int]:
|
||||
def _filtered():
|
||||
q0 = db.query(BizOutputType).filter(BizOutputType.del_flag == 0)
|
||||
@@ -46,6 +47,9 @@ def list_output_types(
|
||||
BizOutputType.type_name.like(like),
|
||||
)
|
||||
)
|
||||
if user_info:
|
||||
from app.core.data_scope import apply_data_scope
|
||||
q0 = apply_data_scope(q0, BizOutputType, user_info, db, tenant_no)
|
||||
return q0
|
||||
|
||||
total = _filtered().order_by(None).with_entities(func.count(BizOutputType.id)).scalar() or 0
|
||||
|
||||
@@ -46,7 +46,7 @@ def _row_to_dict_cell_product_type(row) -> Dict[str, Any]:
|
||||
}
|
||||
|
||||
|
||||
def list_cell_product_types(db, *, page=1, page_size=10, keyword=None, tenant_no=None):
|
||||
def list_cell_product_types(db, *, page=1, page_size=10, keyword=None, tenant_no=None, user_info=None):
|
||||
def _filtered():
|
||||
q0 = db.query(BizCellProductType).filter(BizCellProductType.del_flag == 0)
|
||||
if tenant_no:
|
||||
@@ -60,6 +60,9 @@ def list_cell_product_types(db, *, page=1, page_size=10, keyword=None, tenant_no
|
||||
BizCellProductType.product_type_name.like(like),
|
||||
)
|
||||
)
|
||||
if user_info:
|
||||
from app.core.data_scope import apply_data_scope
|
||||
q0 = apply_data_scope(q0, BizCellProductType, user_info, db, tenant_no)
|
||||
return q0
|
||||
|
||||
total = _filtered().order_by(None).with_entities(func.count(BizCellProductType.id)).scalar() or 0
|
||||
@@ -158,7 +161,7 @@ def _row_to_dict_cell_product_spec(row) -> Dict[str, Any]:
|
||||
}
|
||||
|
||||
|
||||
def list_cell_product_specs(db, *, page=1, page_size=10, keyword=None, tenant_no=None):
|
||||
def list_cell_product_specs(db, *, page=1, page_size=10, keyword=None, tenant_no=None, user_info=None):
|
||||
def _filtered():
|
||||
q0 = db.query(BizCellProductSpec).filter(BizCellProductSpec.del_flag == 0)
|
||||
if tenant_no:
|
||||
@@ -172,6 +175,9 @@ def list_cell_product_specs(db, *, page=1, page_size=10, keyword=None, tenant_no
|
||||
BizCellProductSpec.spec_name.like(like),
|
||||
)
|
||||
)
|
||||
if user_info:
|
||||
from app.core.data_scope import apply_data_scope
|
||||
q0 = apply_data_scope(q0, BizCellProductSpec, user_info, db, tenant_no)
|
||||
return q0
|
||||
|
||||
total = _filtered().order_by(None).with_entities(func.count(BizCellProductSpec.id)).scalar() or 0
|
||||
@@ -276,7 +282,7 @@ def _row_to_dict_cell_product_price(row) -> Dict[str, Any]:
|
||||
}
|
||||
|
||||
|
||||
def list_cell_product_prices(db, *, page=1, page_size=10, keyword=None, tenant_no=None, cell_product_type_id=None):
|
||||
def list_cell_product_prices(db, *, page=1, page_size=10, keyword=None, tenant_no=None, cell_product_type_id=None, user_info=None):
|
||||
def _filtered():
|
||||
q0 = db.query(BizCellProductPrice).filter(BizCellProductPrice.del_flag == 0)
|
||||
if tenant_no:
|
||||
@@ -293,6 +299,9 @@ def list_cell_product_prices(db, *, page=1, page_size=10, keyword=None, tenant_n
|
||||
BizCellProductPrice.cell_type_name.like(like),
|
||||
)
|
||||
)
|
||||
if user_info:
|
||||
from app.core.data_scope import apply_data_scope
|
||||
q0 = apply_data_scope(q0, BizCellProductPrice, user_info, db, tenant_no)
|
||||
return q0
|
||||
|
||||
total = _filtered().order_by(None).with_entities(func.count(BizCellProductPrice.id)).scalar() or 0
|
||||
@@ -441,7 +450,7 @@ def _row_to_dict_project_system(row) -> Dict[str, Any]:
|
||||
}
|
||||
|
||||
|
||||
def list_project_systems(db, *, page=1, page_size=10, keyword=None, tenant_no=None):
|
||||
def list_project_systems(db, *, page=1, page_size=10, keyword=None, tenant_no=None, user_info=None):
|
||||
def _filtered():
|
||||
q0 = db.query(BizCellProductProjectSystem).filter(BizCellProductProjectSystem.del_flag == 0)
|
||||
if tenant_no:
|
||||
@@ -455,6 +464,9 @@ def list_project_systems(db, *, page=1, page_size=10, keyword=None, tenant_no=No
|
||||
BizCellProductProjectSystem.system_name.like(like),
|
||||
)
|
||||
)
|
||||
if user_info:
|
||||
from app.core.data_scope import apply_data_scope
|
||||
q0 = apply_data_scope(q0, BizCellProductProjectSystem, user_info, db, tenant_no)
|
||||
return q0
|
||||
|
||||
total = _filtered().order_by(None).with_entities(func.count(BizCellProductProjectSystem.id)).scalar() or 0
|
||||
@@ -566,7 +578,7 @@ def _row_to_dict_project_system_item(row) -> Dict[str, Any]:
|
||||
}
|
||||
|
||||
|
||||
def list_project_system_items(db, project_system_id, tenant_no=None):
|
||||
def list_project_system_items(db, project_system_id, tenant_no=None, user_info=None):
|
||||
q = db.query(BizCellProductProjectSystemItem).filter(
|
||||
and_(
|
||||
BizCellProductProjectSystemItem.project_system_id == project_system_id,
|
||||
@@ -575,6 +587,9 @@ def list_project_system_items(db, project_system_id, tenant_no=None):
|
||||
)
|
||||
if tenant_no:
|
||||
q = q.filter(BizCellProductProjectSystemItem.tenant_no == tenant_no)
|
||||
if user_info:
|
||||
from app.core.data_scope import apply_data_scope
|
||||
q = apply_data_scope(q, BizCellProductProjectSystemItem, user_info, db, tenant_no)
|
||||
rows = q.order_by(BizCellProductProjectSystemItem.create_time.desc()).all()
|
||||
return [_row_to_dict_project_system_item(x) for x in rows]
|
||||
|
||||
@@ -723,7 +738,7 @@ def _row_to_dict_channel(
|
||||
}
|
||||
|
||||
|
||||
def list_channels(db, *, page=1, page_size=10, keyword=None, tenant_no=None):
|
||||
def list_channels(db, *, page=1, page_size=10, keyword=None, tenant_no=None, user_info=None):
|
||||
def _filtered():
|
||||
q0 = db.query(BizChannel).filter(BizChannel.del_flag == 0)
|
||||
if tenant_no:
|
||||
@@ -738,6 +753,9 @@ def list_channels(db, *, page=1, page_size=10, keyword=None, tenant_no=None):
|
||||
BizChannel.contact_name.like(like),
|
||||
)
|
||||
)
|
||||
if user_info:
|
||||
from app.core.data_scope import apply_data_scope
|
||||
q0 = apply_data_scope(q0, BizChannel, user_info, db, tenant_no)
|
||||
return q0
|
||||
|
||||
total = _filtered().order_by(None).with_entities(func.count(BizChannel.id)).scalar() or 0
|
||||
@@ -870,7 +888,7 @@ def _row_to_dict_channel_invoice(row) -> Dict[str, Any]:
|
||||
}
|
||||
|
||||
|
||||
def list_channel_invoices(db, channel_id, tenant_no=None):
|
||||
def list_channel_invoices(db, channel_id, tenant_no=None, user_info=None):
|
||||
q = db.query(BizChannelInvoice).filter(
|
||||
and_(
|
||||
BizChannelInvoice.channel_id == channel_id,
|
||||
@@ -879,6 +897,9 @@ def list_channel_invoices(db, channel_id, tenant_no=None):
|
||||
)
|
||||
if tenant_no:
|
||||
q = q.filter(BizChannelInvoice.tenant_no == tenant_no)
|
||||
if user_info:
|
||||
from app.core.data_scope import apply_data_scope
|
||||
q = apply_data_scope(q, BizChannelInvoice, user_info, db, tenant_no)
|
||||
rows = q.order_by(BizChannelInvoice.create_time.desc()).all()
|
||||
return [_row_to_dict_channel_invoice(x) for x in rows]
|
||||
|
||||
@@ -1003,7 +1024,7 @@ def _row_to_dict_channel_mail_address(row) -> Dict[str, Any]:
|
||||
}
|
||||
|
||||
|
||||
def list_channel_mail_addresses(db, channel_id, tenant_no=None):
|
||||
def list_channel_mail_addresses(db, channel_id, tenant_no=None, user_info=None):
|
||||
q = db.query(BizChannelMailAddress).filter(
|
||||
and_(
|
||||
BizChannelMailAddress.channel_id == channel_id,
|
||||
@@ -1012,6 +1033,9 @@ def list_channel_mail_addresses(db, channel_id, tenant_no=None):
|
||||
)
|
||||
if tenant_no:
|
||||
q = q.filter(BizChannelMailAddress.tenant_no == tenant_no)
|
||||
if user_info:
|
||||
from app.core.data_scope import apply_data_scope
|
||||
q = apply_data_scope(q, BizChannelMailAddress, user_info, db, tenant_no)
|
||||
rows = q.order_by(BizChannelMailAddress.create_time.desc()).all()
|
||||
return [_row_to_dict_channel_mail_address(x) for x in rows]
|
||||
|
||||
@@ -1131,7 +1155,7 @@ def _row_to_dict_channel_agreement(row) -> Dict[str, Any]:
|
||||
}
|
||||
|
||||
|
||||
def list_channel_agreements(db, channel_id, tenant_no=None):
|
||||
def list_channel_agreements(db, channel_id, tenant_no=None, user_info=None):
|
||||
q = db.query(BizChannelAgreement).filter(
|
||||
and_(
|
||||
BizChannelAgreement.channel_id == channel_id,
|
||||
@@ -1140,6 +1164,9 @@ def list_channel_agreements(db, channel_id, tenant_no=None):
|
||||
)
|
||||
if tenant_no:
|
||||
q = q.filter(BizChannelAgreement.tenant_no == tenant_no)
|
||||
if user_info:
|
||||
from app.core.data_scope import apply_data_scope
|
||||
q = apply_data_scope(q, BizChannelAgreement, user_info, db, tenant_no)
|
||||
rows = q.order_by(BizChannelAgreement.create_time.desc()).all()
|
||||
return [_row_to_dict_channel_agreement(x) for x in rows]
|
||||
|
||||
@@ -1366,7 +1393,7 @@ def _channel_agreement_price_exists(
|
||||
return False
|
||||
|
||||
|
||||
def list_channel_agreement_prices(db, channel_agreement_id, tenant_no=None):
|
||||
def list_channel_agreement_prices(db, channel_agreement_id, tenant_no=None, user_info=None):
|
||||
q = db.query(BizChannelAgreementProductPrice).filter(
|
||||
and_(
|
||||
BizChannelAgreementProductPrice.channel_agreement_id == channel_agreement_id,
|
||||
@@ -1375,6 +1402,9 @@ def list_channel_agreement_prices(db, channel_agreement_id, tenant_no=None):
|
||||
)
|
||||
if tenant_no:
|
||||
q = q.filter(BizChannelAgreementProductPrice.tenant_no == tenant_no)
|
||||
if user_info:
|
||||
from app.core.data_scope import apply_data_scope
|
||||
q = apply_data_scope(q, BizChannelAgreementProductPrice, user_info, db, tenant_no)
|
||||
rows = q.order_by(BizChannelAgreementProductPrice.create_time.desc()).all()
|
||||
return [_row_to_dict_channel_agreement_price(x) for x in rows]
|
||||
|
||||
@@ -1533,7 +1563,7 @@ def _row_to_dict_checkup_institution(row) -> Dict[str, Any]:
|
||||
}
|
||||
|
||||
|
||||
def list_checkup_institutions(db, *, page=1, page_size=10, keyword=None, tenant_no=None):
|
||||
def list_checkup_institutions(db, *, page=1, page_size=10, keyword=None, tenant_no=None, user_info=None):
|
||||
def _filtered():
|
||||
q0 = db.query(BizCheckupInstitution).filter(BizCheckupInstitution.del_flag == 0)
|
||||
if tenant_no:
|
||||
@@ -1547,6 +1577,9 @@ def list_checkup_institutions(db, *, page=1, page_size=10, keyword=None, tenant_
|
||||
BizCheckupInstitution.contact_name.like(like),
|
||||
)
|
||||
)
|
||||
if user_info:
|
||||
from app.core.data_scope import apply_data_scope
|
||||
q0 = apply_data_scope(q0, BizCheckupInstitution, user_info, db, tenant_no)
|
||||
return q0
|
||||
|
||||
total = _filtered().order_by(None).with_entities(func.count(BizCheckupInstitution.id)).scalar() or 0
|
||||
@@ -1671,7 +1704,7 @@ def _row_to_dict_checkup_institution_invoice(row) -> Dict[str, Any]:
|
||||
}
|
||||
|
||||
|
||||
def list_checkup_institution_invoices(db, checkup_institution_id, tenant_no=None):
|
||||
def list_checkup_institution_invoices(db, checkup_institution_id, tenant_no=None, user_info=None):
|
||||
q = db.query(BizCheckupInstitutionInvoice).filter(
|
||||
and_(
|
||||
BizCheckupInstitutionInvoice.checkup_institution_id == checkup_institution_id,
|
||||
@@ -1680,6 +1713,9 @@ def list_checkup_institution_invoices(db, checkup_institution_id, tenant_no=None
|
||||
)
|
||||
if tenant_no:
|
||||
q = q.filter(BizCheckupInstitutionInvoice.tenant_no == tenant_no)
|
||||
if user_info:
|
||||
from app.core.data_scope import apply_data_scope
|
||||
q = apply_data_scope(q, BizCheckupInstitutionInvoice, user_info, db, tenant_no)
|
||||
rows = q.order_by(BizCheckupInstitutionInvoice.create_time.desc()).all()
|
||||
return [_row_to_dict_checkup_institution_invoice(x) for x in rows]
|
||||
|
||||
@@ -1804,7 +1840,7 @@ def _row_to_dict_checkup_institution_project(row) -> Dict[str, Any]:
|
||||
}
|
||||
|
||||
|
||||
def list_checkup_institution_projects(db, checkup_institution_id, tenant_no=None):
|
||||
def list_checkup_institution_projects(db, checkup_institution_id, tenant_no=None, user_info=None):
|
||||
q = db.query(BizCheckupInstitutionProject).filter(
|
||||
and_(
|
||||
BizCheckupInstitutionProject.checkup_institution_id == checkup_institution_id,
|
||||
@@ -1813,6 +1849,9 @@ def list_checkup_institution_projects(db, checkup_institution_id, tenant_no=None
|
||||
)
|
||||
if tenant_no:
|
||||
q = q.filter(BizCheckupInstitutionProject.tenant_no == tenant_no)
|
||||
if user_info:
|
||||
from app.core.data_scope import apply_data_scope
|
||||
q = apply_data_scope(q, BizCheckupInstitutionProject, user_info, db, tenant_no)
|
||||
rows = q.order_by(BizCheckupInstitutionProject.create_time.desc()).all()
|
||||
return [_row_to_dict_checkup_institution_project(x) for x in rows]
|
||||
|
||||
@@ -2084,7 +2123,7 @@ def _insert_package_items(
|
||||
db.add(obj)
|
||||
|
||||
|
||||
def list_checkup_institution_packages(db, checkup_institution_id, tenant_no=None):
|
||||
def list_checkup_institution_packages(db, checkup_institution_id, tenant_no=None, user_info=None):
|
||||
q = db.query(BizCheckupInstitutionPackage).filter(
|
||||
and_(
|
||||
BizCheckupInstitutionPackage.checkup_institution_id == checkup_institution_id,
|
||||
@@ -2093,6 +2132,9 @@ def list_checkup_institution_packages(db, checkup_institution_id, tenant_no=None
|
||||
)
|
||||
if tenant_no:
|
||||
q = q.filter(BizCheckupInstitutionPackage.tenant_no == tenant_no)
|
||||
if user_info:
|
||||
from app.core.data_scope import apply_data_scope
|
||||
q = apply_data_scope(q, BizCheckupInstitutionPackage, user_info, db, tenant_no)
|
||||
rows = q.order_by(BizCheckupInstitutionPackage.create_time.desc()).all()
|
||||
out = []
|
||||
for row in rows:
|
||||
|
||||
@@ -33,6 +33,7 @@ def list_posts(
|
||||
page_size: int = 10,
|
||||
keyword: Optional[str] = None,
|
||||
tenant_no: Optional[str] = None,
|
||||
user_info=None,
|
||||
) -> Tuple[List[Dict[str, Any]], int]:
|
||||
def _filtered():
|
||||
q0 = db.query(SysPost).filter(SysPost.del_flag == 0)
|
||||
@@ -42,6 +43,9 @@ def list_posts(
|
||||
if kw:
|
||||
like = f"%{kw}%"
|
||||
q0 = q0.filter(or_(SysPost.post_name.like(like), SysPost.post_code.like(like)))
|
||||
if user_info:
|
||||
from app.core.data_scope import apply_data_scope
|
||||
q0 = apply_data_scope(q0, SysPost, user_info, db, tenant_no)
|
||||
return q0
|
||||
|
||||
total = _filtered().order_by(None).with_entities(func.count(SysPost.id)).scalar() or 0
|
||||
|
||||
@@ -92,6 +92,7 @@ def list_processes(
|
||||
page_size: int = 10,
|
||||
keyword: Optional[str] = None,
|
||||
tenant_no: Optional[str] = None,
|
||||
user_info=None,
|
||||
) -> Tuple[List[Dict[str, Any]], int]:
|
||||
def _filtered():
|
||||
q0 = db.query(BizProcess).filter(BizProcess.del_flag == 0)
|
||||
@@ -106,6 +107,9 @@ def list_processes(
|
||||
BizProcess.process_name.like(like),
|
||||
)
|
||||
)
|
||||
if user_info:
|
||||
from app.core.data_scope import apply_data_scope
|
||||
q0 = apply_data_scope(q0, BizProcess, user_info, db, tenant_no)
|
||||
return q0
|
||||
|
||||
total = _filtered().order_by(None).with_entities(func.count(BizProcess.id)).scalar() or 0
|
||||
@@ -121,13 +125,12 @@ def list_processes(
|
||||
return [_row_to_dict(x) for x in rows], int(total)
|
||||
|
||||
|
||||
def list_all_processes(db: Session, tenant_no: str) -> List[Dict[str, Any]]:
|
||||
rows = (
|
||||
db.query(BizProcess)
|
||||
.filter(and_(BizProcess.tenant_no == tenant_no, BizProcess.del_flag == 0))
|
||||
.order_by(BizProcess.create_time.desc())
|
||||
.all()
|
||||
)
|
||||
def list_all_processes(db: Session, tenant_no: str, user_info=None) -> List[Dict[str, Any]]:
|
||||
q0 = db.query(BizProcess).filter(and_(BizProcess.tenant_no == tenant_no, BizProcess.del_flag == 0))
|
||||
if user_info:
|
||||
from app.core.data_scope import apply_data_scope
|
||||
q0 = apply_data_scope(q0, BizProcess, user_info, db, tenant_no)
|
||||
rows = q0.order_by(BizProcess.create_time.desc()).all()
|
||||
return [_row_to_dict(x) for x in rows]
|
||||
|
||||
|
||||
|
||||
@@ -32,6 +32,7 @@ def list_process_categories(
|
||||
page_size: int = 10,
|
||||
keyword: Optional[str] = None,
|
||||
tenant_no: Optional[str] = None,
|
||||
user_info=None,
|
||||
) -> Tuple[List[Dict[str, Any]], int]:
|
||||
def _filtered():
|
||||
q0 = db.query(BizProcessCategory).filter(BizProcessCategory.del_flag == 0)
|
||||
@@ -46,6 +47,9 @@ def list_process_categories(
|
||||
BizProcessCategory.category_name.like(like),
|
||||
)
|
||||
)
|
||||
if user_info:
|
||||
from app.core.data_scope import apply_data_scope
|
||||
q0 = apply_data_scope(q0, BizProcessCategory, user_info, db, tenant_no)
|
||||
return q0
|
||||
|
||||
total = _filtered().order_by(None).with_entities(func.count(BizProcessCategory.id)).scalar() or 0
|
||||
|
||||
@@ -118,7 +118,8 @@ def _step_data_collection_row_to_dict(d: BizProcessRouteStepDataCollection) -> D
|
||||
def list_routes(db: Session, *, page: int = 1, page_size: int = 10,
|
||||
route_name: Optional[str] = None, route_code: Optional[str] = None,
|
||||
product_type_id: Optional[str] = None,
|
||||
tenant_no: Optional[str] = None) -> Tuple[List[Dict], int]:
|
||||
tenant_no: Optional[str] = None,
|
||||
user_info=None) -> Tuple[List[Dict], int]:
|
||||
def _filtered():
|
||||
q = db.query(BizProcessRoute).filter(BizProcessRoute.del_flag == 0)
|
||||
if tenant_no:
|
||||
@@ -129,6 +130,9 @@ def list_routes(db: Session, *, page: int = 1, page_size: int = 10,
|
||||
q = q.filter(BizProcessRoute.route_code == route_code.strip())
|
||||
if product_type_id and product_type_id.strip():
|
||||
q = q.filter(BizProcessRoute.product_type_id == product_type_id.strip())
|
||||
if user_info:
|
||||
from app.core.data_scope import apply_data_scope
|
||||
q = apply_data_scope(q, BizProcessRoute, user_info, db, tenant_no)
|
||||
return q
|
||||
|
||||
total = _filtered().order_by(None).with_entities(func.count(BizProcessRoute.id)).scalar() or 0
|
||||
|
||||
@@ -320,6 +320,7 @@ def list_production_tasks(
|
||||
work_order_id: Optional[str] = None,
|
||||
task_no: Optional[str] = None,
|
||||
task_status: Optional[str] = None,
|
||||
user_info=None,
|
||||
) -> Tuple[List[Dict[str, Any]], int]:
|
||||
def _filtered():
|
||||
q = db.query(BizProductionTask).filter(
|
||||
@@ -332,6 +333,9 @@ def list_production_tasks(
|
||||
q = q.filter(BizProductionTask.task_no.like(f"%{task_no.strip()}%"))
|
||||
if task_status and task_status.strip():
|
||||
q = q.filter(BizProductionTask.task_status == task_status.strip())
|
||||
if user_info:
|
||||
from app.core.data_scope import apply_data_scope
|
||||
q = apply_data_scope(q, BizProductionTask, user_info, db, tenant_no)
|
||||
return q
|
||||
|
||||
total = _filtered().order_by(None).with_entities(func.count(BizProductionTask.id)).scalar() or 0
|
||||
|
||||
@@ -193,6 +193,7 @@ def list_production_work_orders(
|
||||
query: Optional[ProductionWorkOrderListQuery] = None,
|
||||
page: int = 1,
|
||||
page_size: int = 20,
|
||||
user_info=None,
|
||||
) -> Dict[str, Any]:
|
||||
def _filtered():
|
||||
q0 = db.query(BizProductionWorkOrder).filter(BizProductionWorkOrder.del_flag == 0)
|
||||
@@ -210,6 +211,9 @@ def list_production_work_orders(
|
||||
if query.sample_code and query.sample_code.strip():
|
||||
like = f"%{query.sample_code.strip()}%"
|
||||
q0 = q0.filter(BizProductionWorkOrder.sample_code.like(like))
|
||||
if user_info:
|
||||
from app.core.data_scope import apply_data_scope
|
||||
q0 = apply_data_scope(q0, BizProductionWorkOrder, user_info, db, tenant_no)
|
||||
return q0
|
||||
|
||||
effective_page = query.page if query and query.page else page
|
||||
|
||||
@@ -22,19 +22,18 @@ def _row_to_dict(r: BizQcItemParam) -> Dict[str, Any]:
|
||||
|
||||
|
||||
def list_params_by_item(
|
||||
db: Session, item_source: str, item_id: str, tenant_no: str
|
||||
db: Session, item_source: str, item_id: str, tenant_no: str, *, user_info=None
|
||||
) -> List[Dict[str, Any]]:
|
||||
rows = (
|
||||
db.query(BizQcItemParam)
|
||||
.filter(
|
||||
BizQcItemParam.item_source == item_source,
|
||||
BizQcItemParam.item_id == item_id,
|
||||
BizQcItemParam.tenant_no == tenant_no,
|
||||
BizQcItemParam.del_flag == 0,
|
||||
)
|
||||
.order_by(BizQcItemParam.order_num.asc())
|
||||
.all()
|
||||
q = db.query(BizQcItemParam).filter(
|
||||
BizQcItemParam.item_source == item_source,
|
||||
BizQcItemParam.item_id == item_id,
|
||||
BizQcItemParam.tenant_no == tenant_no,
|
||||
BizQcItemParam.del_flag == 0,
|
||||
)
|
||||
if user_info:
|
||||
from app.core.data_scope import apply_data_scope
|
||||
q = apply_data_scope(q, BizQcItemParam, user_info, db, tenant_no)
|
||||
rows = q.order_by(BizQcItemParam.order_num.asc()).all()
|
||||
return [_row_to_dict(r) for r in rows]
|
||||
|
||||
|
||||
|
||||
@@ -49,6 +49,7 @@ def list_lab_items(
|
||||
keyword: Optional[str] = None,
|
||||
status: Optional[str] = None,
|
||||
tenant_no: Optional[str] = None,
|
||||
user_info=None,
|
||||
) -> Tuple[List[Dict[str, Any]], int]:
|
||||
def _filtered():
|
||||
q0 = db.query(BizQcLabTestItem).filter(BizQcLabTestItem.del_flag == 0)
|
||||
@@ -63,6 +64,9 @@ def list_lab_items(
|
||||
st = (status or "").strip()
|
||||
if st in ("0", "1"):
|
||||
q0 = q0.filter(BizQcLabTestItem.status == st)
|
||||
if user_info:
|
||||
from app.core.data_scope import apply_data_scope
|
||||
q0 = apply_data_scope(q0, BizQcLabTestItem, user_info, db, tenant_no)
|
||||
return q0
|
||||
|
||||
total = _filtered().order_by(None).with_entities(func.count(BizQcLabTestItem.id)).scalar() or 0
|
||||
@@ -78,17 +82,16 @@ def list_lab_items(
|
||||
return [_row_to_dict(x) for x in rows], int(total)
|
||||
|
||||
|
||||
def list_active_lab_items(db: Session, tenant_no: str) -> List[Dict[str, Any]]:
|
||||
rows = (
|
||||
db.query(BizQcLabTestItem)
|
||||
.filter(
|
||||
BizQcLabTestItem.tenant_no == tenant_no,
|
||||
BizQcLabTestItem.del_flag == 0,
|
||||
BizQcLabTestItem.status == "1",
|
||||
)
|
||||
.order_by(BizQcLabTestItem.order_num.asc(), BizQcLabTestItem.create_time.desc())
|
||||
.all()
|
||||
def list_active_lab_items(db: Session, tenant_no: str, *, user_info=None) -> List[Dict[str, Any]]:
|
||||
q = db.query(BizQcLabTestItem).filter(
|
||||
BizQcLabTestItem.tenant_no == tenant_no,
|
||||
BizQcLabTestItem.del_flag == 0,
|
||||
BizQcLabTestItem.status == "1",
|
||||
)
|
||||
if user_info:
|
||||
from app.core.data_scope import apply_data_scope
|
||||
q = apply_data_scope(q, BizQcLabTestItem, user_info, db, tenant_no)
|
||||
rows = q.order_by(BizQcLabTestItem.order_num.asc(), BizQcLabTestItem.create_time.desc()).all()
|
||||
return [_row_to_dict(x) for x in rows]
|
||||
|
||||
|
||||
|
||||
@@ -77,6 +77,7 @@ def list_materials(
|
||||
keyword: Optional[str] = None,
|
||||
status: Optional[str] = None,
|
||||
tenant_no: Optional[str] = None,
|
||||
user_info=None,
|
||||
) -> Tuple[List[Dict[str, Any]], int]:
|
||||
def _filtered():
|
||||
q0 = db.query(BizQcMaterial).filter(BizQcMaterial.del_flag == 0)
|
||||
@@ -94,6 +95,9 @@ def list_materials(
|
||||
st = (status or "").strip()
|
||||
if st in ("0", "1"):
|
||||
q0 = q0.filter(BizQcMaterial.status == st)
|
||||
if user_info:
|
||||
from app.core.data_scope import apply_data_scope
|
||||
q0 = apply_data_scope(q0, BizQcMaterial, user_info, db, tenant_no)
|
||||
return q0
|
||||
|
||||
total = _filtered().order_by(None).with_entities(func.count(BizQcMaterial.id)).scalar() or 0
|
||||
|
||||
@@ -42,6 +42,7 @@ def list_usages(
|
||||
change_type: Optional[str] = None,
|
||||
start_time: Optional[str] = None,
|
||||
end_time: Optional[str] = None,
|
||||
user_info=None,
|
||||
) -> Tuple[List[Dict[str, Any]], int]:
|
||||
def _filtered():
|
||||
q0 = db.query(BizQcMaterialUsage).filter(
|
||||
@@ -56,6 +57,9 @@ def list_usages(
|
||||
q0 = q0.filter(BizQcMaterialUsage.create_time >= start_time)
|
||||
if end_time:
|
||||
q0 = q0.filter(BizQcMaterialUsage.create_time <= end_time + " 23:59:59")
|
||||
if user_info:
|
||||
from app.core.data_scope import apply_data_scope
|
||||
q0 = apply_data_scope(q0, BizQcMaterialUsage, user_info, db, tenant_no)
|
||||
return q0
|
||||
|
||||
total = _filtered().order_by(None).with_entities(func.count(BizQcMaterialUsage.id)).scalar() or 0
|
||||
|
||||
@@ -231,6 +231,7 @@ def list_tasks(
|
||||
work_order_id: Optional[str] = None,
|
||||
qc_biz_type: Optional[str] = None,
|
||||
tenant_no: Optional[str] = None,
|
||||
user_info=None,
|
||||
) -> Tuple[List[Dict[str, Any]], int]:
|
||||
def _filtered():
|
||||
q0 = (
|
||||
@@ -269,6 +270,9 @@ def list_tasks(
|
||||
bt = (qc_biz_type or "").strip()
|
||||
if bt:
|
||||
q0 = q0.filter(BizQcWorkOrder.qc_biz_type == bt)
|
||||
if user_info:
|
||||
from app.core.data_scope import apply_data_scope
|
||||
q0 = apply_data_scope(q0, BizQcTask, user_info, db, tenant_no)
|
||||
return q0
|
||||
|
||||
total = _filtered().order_by(None).with_entities(func.count(BizQcTask.id)).scalar() or 0
|
||||
|
||||
@@ -25,18 +25,17 @@ def _row_to_dict(r: BizQcTaskResult) -> Dict[str, Any]:
|
||||
|
||||
|
||||
def _list_saved_results_by_task(
|
||||
db: Session, task_id: str, tenant_no: str
|
||||
db: Session, task_id: str, tenant_no: str, *, user_info=None
|
||||
) -> List[Dict[str, Any]]:
|
||||
rows = (
|
||||
db.query(BizQcTaskResult)
|
||||
.filter(
|
||||
BizQcTaskResult.task_id == task_id,
|
||||
BizQcTaskResult.tenant_no == tenant_no,
|
||||
BizQcTaskResult.del_flag == 0,
|
||||
)
|
||||
.order_by(BizQcTaskResult.create_time.asc())
|
||||
.all()
|
||||
q = db.query(BizQcTaskResult).filter(
|
||||
BizQcTaskResult.task_id == task_id,
|
||||
BizQcTaskResult.tenant_no == tenant_no,
|
||||
BizQcTaskResult.del_flag == 0,
|
||||
)
|
||||
if user_info:
|
||||
from app.core.data_scope import apply_data_scope
|
||||
q = apply_data_scope(q, BizQcTaskResult, user_info, db, tenant_no)
|
||||
rows = q.order_by(BizQcTaskResult.create_time.asc()).all()
|
||||
return [_row_to_dict(r) for r in rows]
|
||||
|
||||
|
||||
@@ -92,10 +91,10 @@ def _merge_saved_into_template(
|
||||
|
||||
|
||||
def list_results_by_task(
|
||||
db: Session, task_id: str, tenant_no: str
|
||||
db: Session, task_id: str, tenant_no: str, *, user_info=None
|
||||
) -> List[Dict[str, Any]]:
|
||||
"""返回任务结果填写表单:项目参数模板 + 已保存值(无模板时仅返回已保存记录)。"""
|
||||
saved = _list_saved_results_by_task(db, task_id, tenant_no)
|
||||
saved = _list_saved_results_by_task(db, task_id, tenant_no, user_info=user_info)
|
||||
task = get_task(db, task_id, tenant_no=tenant_no)
|
||||
if not task:
|
||||
return saved
|
||||
|
||||
@@ -55,6 +55,7 @@ def list_companies(
|
||||
keyword: Optional[str] = None,
|
||||
status: Optional[str] = None,
|
||||
tenant_no: Optional[str] = None,
|
||||
user_info=None,
|
||||
) -> Tuple[List[Dict[str, Any]], int]:
|
||||
def _filtered():
|
||||
q0 = db.query(BizQcThirdPartyCompany).filter(BizQcThirdPartyCompany.del_flag == 0)
|
||||
@@ -72,6 +73,9 @@ def list_companies(
|
||||
st = (status or "").strip()
|
||||
if st in ("0", "1"):
|
||||
q0 = q0.filter(BizQcThirdPartyCompany.status == st)
|
||||
if user_info:
|
||||
from app.core.data_scope import apply_data_scope
|
||||
q0 = apply_data_scope(q0, BizQcThirdPartyCompany, user_info, db, tenant_no)
|
||||
return q0
|
||||
|
||||
total = _filtered().order_by(None).with_entities(func.count(BizQcThirdPartyCompany.id)).scalar() or 0
|
||||
|
||||
@@ -76,6 +76,7 @@ def list_items(
|
||||
status: Optional[str] = None,
|
||||
company_id: Optional[str] = None,
|
||||
tenant_no: Optional[str] = None,
|
||||
user_info=None,
|
||||
) -> Tuple[List[Dict[str, Any]], int]:
|
||||
def _filtered():
|
||||
q0 = db.query(BizQcThirdPartyItem).filter(BizQcThirdPartyItem.del_flag == 0)
|
||||
@@ -95,6 +96,9 @@ def list_items(
|
||||
st = (status or "").strip()
|
||||
if st in ("0", "1"):
|
||||
q0 = q0.filter(BizQcThirdPartyItem.status == st)
|
||||
if user_info:
|
||||
from app.core.data_scope import apply_data_scope
|
||||
q0 = apply_data_scope(q0, BizQcThirdPartyItem, user_info, db, tenant_no)
|
||||
return q0
|
||||
|
||||
total = _filtered().order_by(None).with_entities(func.count(BizQcThirdPartyItem.id)).scalar() or 0
|
||||
@@ -113,7 +117,7 @@ def list_items(
|
||||
|
||||
|
||||
def list_active_items(
|
||||
db: Session, tenant_no: str, company_id: Optional[str] = None
|
||||
db: Session, tenant_no: str, company_id: Optional[str] = None, *, user_info=None
|
||||
) -> List[Dict[str, Any]]:
|
||||
q = db.query(BizQcThirdPartyItem).filter(
|
||||
BizQcThirdPartyItem.tenant_no == tenant_no,
|
||||
@@ -122,6 +126,9 @@ def list_active_items(
|
||||
)
|
||||
if company_id:
|
||||
q = q.filter(BizQcThirdPartyItem.company_id == company_id)
|
||||
if user_info:
|
||||
from app.core.data_scope import apply_data_scope
|
||||
q = apply_data_scope(q, BizQcThirdPartyItem, user_info, db, tenant_no)
|
||||
rows = q.order_by(
|
||||
BizQcThirdPartyItem.order_num.asc(), BizQcThirdPartyItem.create_time.desc()
|
||||
).all()
|
||||
|
||||
@@ -343,6 +343,7 @@ def list_work_orders(
|
||||
keyword: Optional[str] = None,
|
||||
work_order_status: Optional[str] = None,
|
||||
tenant_no: Optional[str] = None,
|
||||
user_info=None,
|
||||
) -> Tuple[List[Dict[str, Any]], int]:
|
||||
def _filtered():
|
||||
q0 = db.query(BizQcWorkOrder).filter(BizQcWorkOrder.del_flag == 0)
|
||||
@@ -361,6 +362,9 @@ def list_work_orders(
|
||||
st = (work_order_status or "").strip()
|
||||
if st:
|
||||
q0 = q0.filter(BizQcWorkOrder.work_order_status == st)
|
||||
if user_info:
|
||||
from app.core.data_scope import apply_data_scope
|
||||
q0 = apply_data_scope(q0, BizQcWorkOrder, user_info, db, tenant_no)
|
||||
return q0
|
||||
|
||||
total = _filtered().order_by(None).with_entities(func.count(BizQcWorkOrder.id)).scalar() or 0
|
||||
|
||||
@@ -36,6 +36,7 @@ def list_reagents(
|
||||
page_size: int = 10,
|
||||
keyword: Optional[str] = None,
|
||||
tenant_no: Optional[str] = None,
|
||||
user_info=None,
|
||||
) -> Tuple[List[Dict[str, Any]], int]:
|
||||
def _filtered():
|
||||
q0 = db.query(BizReagent).filter(BizReagent.del_flag == 0)
|
||||
@@ -50,6 +51,9 @@ def list_reagents(
|
||||
BizReagent.reagent_name.like(like),
|
||||
)
|
||||
)
|
||||
if user_info:
|
||||
from app.core.data_scope import apply_data_scope
|
||||
q0 = apply_data_scope(q0, BizReagent, user_info, db, tenant_no)
|
||||
return q0
|
||||
|
||||
total = _filtered().order_by(None).with_entities(func.count(BizReagent.id)).scalar() or 0
|
||||
|
||||
@@ -376,8 +376,8 @@ def list_donations(
|
||||
keyword: Optional[str] = None,
|
||||
donation_status: Optional[str] = None,
|
||||
collector_user_id: Optional[str] = None,
|
||||
user_info=None,
|
||||
) -> Dict[str, Any]:
|
||||
"""分页查询科研捐赠列表,含母亲姓名/电话(join party 表)。"""
|
||||
def _base():
|
||||
q = (
|
||||
db.query(BizResearchDonation)
|
||||
@@ -392,7 +392,6 @@ def list_donations(
|
||||
kw = (keyword or "").strip()
|
||||
if kw:
|
||||
like = f"%{kw}%"
|
||||
# 子查询:party 表中 mother_name 匹配的 donation_id 集合
|
||||
party_match = (
|
||||
db.query(BizResearchDonationParty.research_donation_id)
|
||||
.filter(
|
||||
@@ -407,6 +406,9 @@ def list_donations(
|
||||
BizResearchDonation.id.in_(party_match),
|
||||
)
|
||||
)
|
||||
if user_info:
|
||||
from app.core.data_scope import apply_data_scope
|
||||
q = apply_data_scope(q, BizResearchDonation, user_info, db, tenant_no)
|
||||
return q
|
||||
|
||||
total = (
|
||||
@@ -855,8 +857,8 @@ def list_audits(
|
||||
page_size: int = 10,
|
||||
keyword: Optional[str] = None,
|
||||
audit_status: Optional[str] = None,
|
||||
user_info=None,
|
||||
) -> Dict[str, Any]:
|
||||
"""分页查询审核记录。"""
|
||||
q_base = (
|
||||
db.query(BizResearchDonationAudit, BizResearchDonation.donation_no)
|
||||
.join(
|
||||
@@ -881,6 +883,9 @@ def list_audits(
|
||||
BizResearchDonationAudit.audit_remark.like(like),
|
||||
)
|
||||
)
|
||||
if user_info:
|
||||
from app.core.data_scope import apply_data_scope
|
||||
q_base = apply_data_scope(q_base, BizResearchDonationAudit, user_info, db, tenant_no)
|
||||
|
||||
total = (
|
||||
q_base.order_by(None)
|
||||
|
||||
@@ -49,6 +49,7 @@ def list_roles(
|
||||
page_size: int = 10,
|
||||
keyword: Optional[str] = None,
|
||||
tenant_no: Optional[str] = None,
|
||||
user_info=None,
|
||||
) -> Tuple[List[Dict[str, Any]], int]:
|
||||
def _filtered():
|
||||
q0 = db.query(SysRole).filter(SysRole.del_flag == 0)
|
||||
@@ -58,6 +59,9 @@ def list_roles(
|
||||
if kw:
|
||||
like = f"%{kw}%"
|
||||
q0 = q0.filter(SysRole.role_name.like(like))
|
||||
if user_info:
|
||||
from app.core.data_scope import apply_data_scope
|
||||
q0 = apply_data_scope(q0, SysRole, user_info, db, tenant_no)
|
||||
return q0
|
||||
|
||||
total = _filtered().order_by(None).with_entities(func.count(SysRole.id)).scalar() or 0
|
||||
@@ -99,7 +103,7 @@ def create_role(
|
||||
db: Session,
|
||||
*,
|
||||
role_name: str,
|
||||
data_scope: str = "1",
|
||||
data_scope: str = "4",
|
||||
status: str = "1",
|
||||
tenant_no: str = "zkxw",
|
||||
order_num: Optional[int] = None,
|
||||
|
||||
@@ -379,15 +379,18 @@ def list_pending_protocol_samples(
|
||||
tenant_no: Optional[str] = None,
|
||||
keyword: Optional[str] = None,
|
||||
source_type: Optional[str] = None,
|
||||
user_info=None,
|
||||
) -> Tuple[List[Dict[str, Any]], int]:
|
||||
if not tenant_no:
|
||||
return [], 0
|
||||
|
||||
# 收集两种来源的样本
|
||||
all_items: List[Dict[str, Any]] = []
|
||||
|
||||
if not source_type or source_type == "cell_storage":
|
||||
q_base = _sample_pending_query(db, tenant_no, keyword)
|
||||
if user_info:
|
||||
from app.core.data_scope import apply_data_scope
|
||||
q_base = apply_data_scope(q_base, BizProtocolSample, user_info, db, tenant_no)
|
||||
cell_total = q_base.order_by(None).with_entities(func.count(BizProtocolSample.id)).scalar() or 0
|
||||
cell_rows = (
|
||||
q_base.order_by(
|
||||
@@ -403,6 +406,9 @@ def list_pending_protocol_samples(
|
||||
|
||||
if not source_type or source_type == "research_donation":
|
||||
q_donation = _donation_sample_pending_query(db, tenant_no, keyword)
|
||||
if user_info:
|
||||
from app.core.data_scope import apply_data_scope
|
||||
q_donation = apply_data_scope(q_donation, BizResearchDonationSample, user_info, db, tenant_no)
|
||||
donation_total = q_donation.order_by(None).with_entities(func.count(BizResearchDonationSample.id)).scalar() or 0
|
||||
donation_rows = (
|
||||
q_donation.order_by(
|
||||
@@ -435,11 +441,11 @@ def list_received_protocol_samples(
|
||||
tenant_no: Optional[str] = None,
|
||||
keyword: Optional[str] = None,
|
||||
source_type: Optional[str] = None,
|
||||
user_info=None,
|
||||
) -> Tuple[List[Dict[str, Any]], int]:
|
||||
if not tenant_no:
|
||||
return [], 0
|
||||
|
||||
# 查询所有接收记录,按 source_type 过滤
|
||||
q_rec = db.query(BizSampleReception).filter(
|
||||
BizSampleReception.tenant_no == tenant_no,
|
||||
BizSampleReception.del_flag == 0,
|
||||
@@ -447,10 +453,8 @@ def list_received_protocol_samples(
|
||||
if source_type:
|
||||
q_rec = q_rec.filter(BizSampleReception.reception_source == source_type)
|
||||
|
||||
# 关键词搜索
|
||||
if keyword and keyword.strip():
|
||||
kw = f"%{keyword.strip()}%"
|
||||
# 细胞存储样本关键词
|
||||
cell_sample_ids_kw = (
|
||||
_sample_detail_rows_query(db)
|
||||
.with_entities(BizProtocolSample.id)
|
||||
@@ -467,7 +471,6 @@ def list_received_protocol_samples(
|
||||
)
|
||||
.subquery()
|
||||
)
|
||||
# 捐赠样本关键词
|
||||
donation_sample_ids_kw = (
|
||||
_donation_sample_detail_rows_query(db)
|
||||
.with_entities(_donation_sample_id_col(BizResearchDonationSample.id))
|
||||
@@ -492,6 +495,10 @@ def list_received_protocol_samples(
|
||||
)
|
||||
)
|
||||
|
||||
if user_info:
|
||||
from app.core.data_scope import apply_data_scope
|
||||
q_rec = apply_data_scope(q_rec, BizSampleReception, user_info, db, tenant_no)
|
||||
|
||||
total = q_rec.count()
|
||||
page = max(1, page)
|
||||
page_size = min(max(1, page_size), 100)
|
||||
|
||||
@@ -38,6 +38,7 @@ def list_sites(
|
||||
page_size: int = 10,
|
||||
keyword: Optional[str] = None,
|
||||
tenant_no: Optional[str] = None,
|
||||
user_info=None,
|
||||
) -> Tuple[List[Dict[str, Any]], int]:
|
||||
def _filtered():
|
||||
q0 = db.query(SysSite).filter(SysSite.del_flag == 0)
|
||||
@@ -47,6 +48,9 @@ def list_sites(
|
||||
if kw:
|
||||
like = f"%{kw}%"
|
||||
q0 = q0.filter(or_(SysSite.site_name.like(like), SysSite.site_code.like(like)))
|
||||
if user_info:
|
||||
from app.core.data_scope import apply_data_scope
|
||||
q0 = apply_data_scope(q0, SysSite, user_info, db, tenant_no)
|
||||
return q0
|
||||
|
||||
total = _filtered().order_by(None).with_entities(func.count(SysSite.id)).scalar() or 0
|
||||
|
||||
@@ -41,6 +41,7 @@ def list_sop_documents(
|
||||
page_size: int = 10,
|
||||
keyword: Optional[str] = None,
|
||||
tenant_no: Optional[str] = None,
|
||||
user_info=None,
|
||||
) -> Tuple[List[Dict[str, Any]], int]:
|
||||
def _filtered():
|
||||
q0 = db.query(BizSopDocument).filter(BizSopDocument.del_flag == 0)
|
||||
@@ -55,6 +56,9 @@ def list_sop_documents(
|
||||
BizSopDocument.sop_name.like(like),
|
||||
)
|
||||
)
|
||||
if user_info:
|
||||
from app.core.data_scope import apply_data_scope
|
||||
q0 = apply_data_scope(q0, BizSopDocument, user_info, db, tenant_no)
|
||||
return q0
|
||||
|
||||
total = _filtered().order_by(None).with_entities(func.count(BizSopDocument.id)).scalar() or 0
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from datetime import datetime
|
||||
import re
|
||||
from typing import Any, Dict, List, Optional
|
||||
|
||||
from sqlalchemy import and_, or_
|
||||
@@ -302,6 +303,38 @@ def soft_delete_slot(db: Session, slot_id: str, tenant_no: Optional[str] = None)
|
||||
db.commit()
|
||||
|
||||
|
||||
def clear_slots_by_facility_node(
|
||||
db: Session,
|
||||
*,
|
||||
facility_node_id: str,
|
||||
tenant_no: str,
|
||||
user_id: Optional[str] = None,
|
||||
) -> int:
|
||||
fid = (facility_node_id or "").strip()
|
||||
if not fid:
|
||||
raise ValueError("所属设施节点不能为空")
|
||||
node = db.query(BizStorageFacility).filter(
|
||||
and_(
|
||||
BizStorageFacility.id == fid,
|
||||
BizStorageFacility.del_flag == 0,
|
||||
BizStorageFacility.tenant_no == tenant_no,
|
||||
)
|
||||
).first()
|
||||
if not node:
|
||||
raise ValueError("所属设施节点不存在")
|
||||
now = datetime.now()
|
||||
updated = db.query(BizStorageFacilitySlot).filter(
|
||||
BizStorageFacilitySlot.facility_node_id == fid,
|
||||
BizStorageFacilitySlot.del_flag == 0,
|
||||
BizStorageFacilitySlot.tenant_no == tenant_no,
|
||||
).update(
|
||||
{"del_flag": 1, "update_time": now, "update_by": user_id},
|
||||
synchronize_session=False
|
||||
)
|
||||
db.commit()
|
||||
return int(updated or 0)
|
||||
|
||||
|
||||
def batch_create_slots(
|
||||
db: Session,
|
||||
*,
|
||||
@@ -354,3 +387,83 @@ def batch_create_slots(
|
||||
for s in slots:
|
||||
db.refresh(s)
|
||||
return [_slot_to_dict(s) for s in slots]
|
||||
|
||||
|
||||
def insert_row_and_shift_slots(
|
||||
db: Session,
|
||||
*,
|
||||
facility_node_id: str,
|
||||
after_row_num: int,
|
||||
cols: int,
|
||||
code_prefix: str = "",
|
||||
tenant_no: str = "zkxw",
|
||||
user_id: Optional[str] = None,
|
||||
) -> Dict[str, int]:
|
||||
fid = (facility_node_id or "").strip()
|
||||
if not fid:
|
||||
raise ValueError("所属设施节点不能为空")
|
||||
if after_row_num < 0:
|
||||
raise ValueError("插入行号参数不合法")
|
||||
if cols < 1:
|
||||
raise ValueError("列数必须大于 0")
|
||||
|
||||
node = db.query(BizStorageFacility).filter(
|
||||
and_(
|
||||
BizStorageFacility.id == fid,
|
||||
BizStorageFacility.del_flag == 0,
|
||||
BizStorageFacility.tenant_no == tenant_no,
|
||||
)
|
||||
).first()
|
||||
if not node:
|
||||
raise ValueError("所属设施节点不存在")
|
||||
if not node.is_leaf:
|
||||
raise ValueError("只能为叶子节点新增格子行")
|
||||
|
||||
row_code_pattern = re.compile(r"^(.*?)(\d+)-(\d+)$")
|
||||
slots = db.query(BizStorageFacilitySlot).filter(
|
||||
and_(
|
||||
BizStorageFacilitySlot.facility_node_id == fid,
|
||||
BizStorageFacilitySlot.del_flag == 0,
|
||||
BizStorageFacilitySlot.tenant_no == tenant_no,
|
||||
)
|
||||
).all()
|
||||
|
||||
now = datetime.now()
|
||||
shifted_count = 0
|
||||
for slot in slots:
|
||||
match = row_code_pattern.match((slot.slot_code or "").strip())
|
||||
if not match:
|
||||
continue
|
||||
prefix, row_no_raw, col_no_raw = match.groups()
|
||||
row_no = int(row_no_raw)
|
||||
if row_no > after_row_num:
|
||||
slot.slot_code = f"{prefix}{row_no + 1}-{int(col_no_raw)}"
|
||||
slot.update_by = user_id
|
||||
slot.update_time = now
|
||||
shifted_count += 1
|
||||
|
||||
insert_row_num = after_row_num + 1
|
||||
prefix = (code_prefix or "").strip()
|
||||
created_slots: List[BizStorageFacilitySlot] = []
|
||||
for col in range(1, cols + 1):
|
||||
created_slots.append(
|
||||
BizStorageFacilitySlot(
|
||||
id=generate_uuid(),
|
||||
facility_node_id=fid,
|
||||
slot_code=f"{prefix}{insert_row_num}-{col}",
|
||||
slot_status="空",
|
||||
tenant_no=tenant_no,
|
||||
order_num=0,
|
||||
remark=None,
|
||||
create_by=user_id,
|
||||
create_dept_id="",
|
||||
create_time=now,
|
||||
update_by=user_id,
|
||||
update_time=now,
|
||||
del_flag=0,
|
||||
)
|
||||
)
|
||||
if created_slots:
|
||||
db.add_all(created_slots)
|
||||
db.commit()
|
||||
return {"shiftedCount": shifted_count, "createdCount": len(created_slots)}
|
||||
@@ -33,6 +33,7 @@ def list_tenants(
|
||||
page: int = 1,
|
||||
page_size: int = 10,
|
||||
keyword: Optional[str] = None,
|
||||
user_info=None,
|
||||
) -> Tuple[List[Dict[str, Any]], int]:
|
||||
def _filtered():
|
||||
q0 = db.query(SysTenant).filter(SysTenant.del_flag == 0)
|
||||
@@ -40,6 +41,9 @@ def list_tenants(
|
||||
if kw:
|
||||
like = f"%{kw}%"
|
||||
q0 = q0.filter(or_(SysTenant.tenant_no.like(like), SysTenant.tenant_name.like(like)))
|
||||
if user_info:
|
||||
from app.core.data_scope import apply_data_scope
|
||||
q0 = apply_data_scope(q0, SysTenant, user_info, db)
|
||||
return q0
|
||||
|
||||
total = _filtered().order_by(None).with_entities(func.count(SysTenant.id)).scalar() or 0
|
||||
|
||||
@@ -48,6 +48,7 @@ def list_process_defs(
|
||||
keyword: Optional[str] = None,
|
||||
status: Optional[str] = None,
|
||||
tenant_no: Optional[str] = None,
|
||||
user_info=None,
|
||||
) -> Tuple[List[Dict[str, Any]], int]:
|
||||
def _filtered():
|
||||
q0 = db.query(WfProcessDef).filter(WfProcessDef.del_flag == 0)
|
||||
@@ -59,6 +60,9 @@ def list_process_defs(
|
||||
if kw:
|
||||
like = f"%{kw}%"
|
||||
q0 = q0.filter(or_(WfProcessDef.process_name.like(like), WfProcessDef.process_code.like(like)))
|
||||
if user_info:
|
||||
from app.core.data_scope import apply_data_scope
|
||||
q0 = apply_data_scope(q0, WfProcessDef, user_info, db, tenant_no)
|
||||
return q0
|
||||
|
||||
total = _filtered().order_by(None).with_entities(func.count(WfProcessDef.id)).scalar() or 0
|
||||
@@ -320,13 +324,16 @@ def _version_to_dict(v: WfProcessVersion) -> Dict[str, Any]:
|
||||
|
||||
|
||||
def list_versions(
|
||||
db: Session, process_def_id: str, tenant_no: Optional[str] = None
|
||||
db: Session, process_def_id: str, tenant_no: Optional[str] = None, user_info=None
|
||||
) -> List[Dict[str, Any]]:
|
||||
q = db.query(WfProcessVersion).filter(
|
||||
and_(WfProcessVersion.process_def_id == process_def_id, WfProcessVersion.del_flag == 0)
|
||||
)
|
||||
if tenant_no:
|
||||
q = q.filter(WfProcessVersion.tenant_no == tenant_no)
|
||||
if user_info:
|
||||
from app.core.data_scope import apply_data_scope
|
||||
q = apply_data_scope(q, WfProcessVersion, user_info, db, tenant_no)
|
||||
rows = q.order_by(WfProcessVersion.version_no.desc()).all()
|
||||
return [_version_to_dict(v) for v in rows]
|
||||
|
||||
@@ -419,6 +426,7 @@ def list_my_instances(
|
||||
keyword: Optional[str] = None,
|
||||
status: Optional[str] = None,
|
||||
tenant_no: Optional[str] = None,
|
||||
user_info=None,
|
||||
) -> Tuple[List[Dict[str, Any]], int]:
|
||||
from sqlalchemy import func as sa_func
|
||||
|
||||
@@ -469,6 +477,9 @@ def list_my_instances(
|
||||
q0 = q0.filter(
|
||||
or_(WfProcessDef.process_name.like(like), WfProcessInstance.business_id.like(like))
|
||||
)
|
||||
if user_info:
|
||||
from app.core.data_scope import apply_data_scope
|
||||
q0 = apply_data_scope(q0, WfProcessInstance, user_info, db, tenant_no)
|
||||
|
||||
total = q0.order_by(None).with_entities(func.count(WfProcessInstance.id)).scalar() or 0
|
||||
page = max(1, page)
|
||||
@@ -644,6 +655,7 @@ def list_pending_tasks(
|
||||
page_size: int = 10,
|
||||
keyword: Optional[str] = None,
|
||||
tenant_no: Optional[str] = None,
|
||||
user_info=None,
|
||||
) -> Tuple[List[Dict[str, Any]], int]:
|
||||
q0 = (
|
||||
db.query(WfTask, WfProcessInstance, WfProcessVersion, WfProcessDef)
|
||||
@@ -669,6 +681,9 @@ def list_pending_tasks(
|
||||
q0 = q0.filter(
|
||||
or_(WfProcessDef.process_name.like(like), WfProcessDef.process_code.like(like))
|
||||
)
|
||||
if user_info:
|
||||
from app.core.data_scope import apply_data_scope
|
||||
q0 = apply_data_scope(q0, WfTask, user_info, db, tenant_no)
|
||||
|
||||
total = q0.order_by(None).with_entities(func.count(WfTask.id)).scalar() or 0
|
||||
page = max(1, page)
|
||||
@@ -703,6 +718,7 @@ def list_completed_tasks(
|
||||
page_size: int = 10,
|
||||
keyword: Optional[str] = None,
|
||||
tenant_no: Optional[str] = None,
|
||||
user_info=None,
|
||||
) -> Tuple[List[Dict[str, Any]], int]:
|
||||
q0 = (
|
||||
db.query(WfTask, WfProcessInstance, WfProcessVersion, WfProcessDef)
|
||||
@@ -728,6 +744,9 @@ def list_completed_tasks(
|
||||
q0 = q0.filter(
|
||||
or_(WfProcessDef.process_name.like(like), WfProcessDef.process_code.like(like))
|
||||
)
|
||||
if user_info:
|
||||
from app.core.data_scope import apply_data_scope
|
||||
q0 = apply_data_scope(q0, WfTask, user_info, db, tenant_no)
|
||||
|
||||
total = q0.order_by(None).with_entities(func.count(WfTask.id)).scalar() or 0
|
||||
page = max(1, page)
|
||||
|
||||
+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_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": "L53"}, {"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": "L67"}, {"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": "L116"}, {"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": "L141"}, {"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": "L156"}, {"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": "L175"}, {"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": "L201"}, {"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": "L211"}, {"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": "L247"}, {"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": "L290"}, {"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": "L339"}, {"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": "L365"}, {"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": "L387"}, {"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": "L395"}, {"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": "L424"}, {"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": "L448"}, {"id": "api_collection_protocol_refundfinancesubmitbody", "label": "RefundFinanceSubmitBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/collection_protocol.py", "source_location": "L454"}, {"id": "api_collection_protocol_batchrefundfinancesubmitbody", "label": "BatchRefundFinanceSubmitBody", "file_type": "code", "source_file": "/Users/wuzilongLine 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": "L146"}, {"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": "L158"}, {"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_00code_zkxw_backend_app_crud_dict_data_py", "target": "crud_dict_data_list_dict_data", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_data.py", "source_location": "L29", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_dict_data_py", "target": "crud_dict_data_get_dict_data", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_data.py", "source_location": "L67", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_dict_data_py", "target": "cLine truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_storage_facility_py", "label": "storage_facility.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L1"}, {"id": "crud_storage_facility_row_to_dict", "label": "_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L20"}, {"id": "crud_storage_facility_list_all_facilities", "label": "list_all_facilities()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L35"}, {"id": "crud_storage_facility_get_facility", "label": "get_facility()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L53"}, {"id": "crud_storage_facility_get_children", "label": "get_children()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L62"}, {"id": "crud_storage_facility_collect_descendant_ids", "label": "collect_descendant_ids()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L78"}, {"id": "crud_storage_facility_create_facility", "label": "create_facility()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L91"}, {"id": "crud_storage_facility_update_facility", "label": "update_facility()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L128"}, {"id": "crud_storage_facility_soft_delete_facility", "label": "soft_delete_facility()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L164"}, {"id": "crud_storage_facility_slot_to_dict", "label": "_slot_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L190"}, {"id": "crud_storage_facility_list_slots", "label": "list_slots()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L204"}, {"id": "crud_storage_facility_get_slot", "label": "get_slot()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L222"}, {"id": "crud_storage_facility_create_slot", "label": "create_slot()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L231"}, {"id": "crud_storage_facility_update_slot", "label": "update_slot()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L266"}, {"id": "crud_storage_facility_soft_delete_slot", "label": "soft_delete_slot()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L296"}, {"id": "crud_storage_facility_clear_slots_by_facility_node", "label": "clear_slots_by_facility_node()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L306"}, {"id": "crud_storage_facility_batch_create_slots", "label": "batch_create_slots()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L338"}, {"id": "crud_storage_facility_insert_row_and_shift_slots", "label": "insert_row_and_shift_slots()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L392"}, {"id": "crud_storage_facility_rationale_1", "label": "\u5b58\u50a8\u8bbe\u65bd\uff08\u6811\u7ed3\u6784\uff09+ \u5c0f\u683c CRUD\uff08biz_storage_facility / biz_storage_facility_slot\uff09", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L1"}, {"id": "crud_storage_facility_rationale_41", "label": "Return FLAT list of all non-deleted facility nodes (no pagination, no tree build", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L41"}, {"id": "crud_storage_facility_rationale_63", "label": "Direct children of a node.", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L63"}, {"id": "crud_storage_facility_rationale_79", "label": "Iteratively collect ALL descendant node IDs (stack-based, no recursion).", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facilLine truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_api_menu_py", "label": "menu.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/menu.py", "source_location": "L1"}, {"id": "api_menu_get_menu_list", "label": "get_menu_list()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/menu.py", "source_location": "L260"}, {"id": "api_menu_rationale_1", "label": "\u8fd0\u8425\u7aef\u83dc\u5355\u63a5\u53e3\uff08\u4e0e web-admin \u524d\u7aef\u9759\u6001\u8def\u7531 sqxp.ts \u5bf9\u9f50\uff0c\u4f9b\u540e\u7aef\u83dc\u5355\u6a21\u5f0f\u8054\u8c03\uff09", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/menu.py", "source_location": "L1"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_api_menu_py", "target": "fastapi", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/menu.py", "source_location": "L2", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_menu_py", "target": "app_core_menu_guard", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/menu.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_menu_py", "target": "app_core_response", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/menu.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_menu_py", "target": "api_menu_get_menu_list", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/menu.py", "source_location": "L260", "weight": 1.0}, {"source": "api_menu_rationale_1", "target": "users_wuzilong_work_00code_zkxw_backend_app_api_menu_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/menu.py", "source_location": "L1", "weight": 1.0}], "raw_calls": [{"caller_nid": "api_menu_get_menu_list", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/menu.py", "source_location": "L262"}]}
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_api_operations_py", "label": "operations.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L1"}, {"id": "api_operations_get_tenant_no", "label": "_get_tenant_no()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L22"}, {"id": "api_operations_cleanroomcreatebody", "label": "CleanRoomCreateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L37"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "api_operations_cleanroomupdatebody", "label": "CleanRoomUpdateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L49"}, {"id": "api_operations_list_clean_rooms", "label": "list_clean_rooms()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L62"}, {"id": "api_operations_create_clean_room", "label": "create_clean_room()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L87"}, {"id": "api_operations_update_clean_room", "label": "update_clean_room()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L112"}, {"id": "api_operations_delete_clean_room", "label": "delete_clean_room()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L140"}, {"id": "api_operations_accesslogcreatebody", "label": "AccessLogCreateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L158"}, {"id": "api_operations_accesslogupdatebody", "label": "AccessLogUpdateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L172"}, {"id": "api_operations_parse_optional_dt", "label": "_parse_optional_dt()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L185"}, {"id": "api_operations_list_access_logs", "label": "list_access_logs()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L192"}, {"id": "api_operations_create_access_log", "label": "create_access_log()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L221"}, {"id": "api_operations_update_access_log", "label": "update_access_log()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L248"}, {"id": "api_operations_delete_access_log", "label": "delete_access_log()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L277"}, {"id": "api_operations_storagefacilitycreatebody", "label": "StorageFacilityCreateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L295"}, {"id": "api_operations_storagefacilityupdatebody", "label": "StorageFacilityUpdateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L306"}, {"id": "api_operations_list_storage_facilities", "label": "list_storage_facilities()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L317"}, {"id": "api_operations_create_storage_facility", "label": "create_storage_facility()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L336"}, {"id": "api_operations_update_storage_facility", "label": "update_storage_facility()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L360"}, {"id": "api_operations_delete_storage_facility", "label": "delete_storage_facility()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L386"}, {"id": "api_operations_storageslotcreatebody", "label": "StorageSlotCreateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L404"}, {"id": "api_operations_storageslotbatchcreatebody", "label": "StorageSlotBatchCreateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L414"}, {"id": "api_operations_storageslotupdatebody", "label":Line 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": "L29"}, {"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": "L46"}, {"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": "L64"}, {"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": "L86"}, {"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": "L100"}, {"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": "L134"}, {"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": "L170"}, {"id": "api_qc_thirdpartyitembody", "label": "ThirdPartyItemBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L190"}, {"id": "api_qc_thirdpartyitemupdatebody", "label": "ThirdPartyItemUpdateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L202"}, {"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": "L215"}, {"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": "L244"}, {"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": "L259"}, {"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": "L288"}, {"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": "L319"}, {"id": "api_qc_labtestitembody", "label": "LabTestItemBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L339"}, {"id": "api_qc_labtestitemupdatebody", "label": "LabTestItemUpdateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L350"}, {"id": "api_qc_itemparambody", "label": "ItemParamBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L364"}, {"id": "api_qc_taskresultbody", "label": "TaskResultBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L369"}, {"id": "api_qc_taskcompletewithresultbody", "label": "TaskCompleteWithResultBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/qc.py", "source_location": "L374"}, {"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": "L384"}, {"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": "L406"}, {"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": "L420"}, {"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": "L448"}, {"id": "api_qLine truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_task_result_py", "label": "qc_task_result.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task_result.py", "source_location": "L1"}, {"id": "crud_qc_task_result_row_to_dict", "label": "_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task_result.py", "source_location": "L15"}, {"id": "crud_qc_task_result_list_saved_results_by_task", "label": "_list_saved_results_by_task()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task_result.py", "source_location": "L27"}, {"id": "crud_qc_task_result_resolve_task_item_ref", "label": "_resolve_task_item_ref()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task_result.py", "source_location": "L42"}, {"id": "crud_qc_task_result_merge_saved_into_template", "label": "_merge_saved_into_template()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task_result.py", "source_location": "L69"}, {"id": "crud_qc_task_result_list_results_by_task", "label": "list_results_by_task()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task_result.py", "source_location": "L93"}, {"id": "crud_qc_task_result_save_results_for_task", "label": "save_results_for_task()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task_result.py", "source_location": "L110"}, {"id": "crud_qc_task_result_rationale_43", "label": "\u8fd4\u56de (item_source, item_id) \u4f9b biz_qc_item_param \u67e5\u8be2\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task_result.py", "source_location": "L43"}, {"id": "crud_qc_task_result_rationale_96", "label": "\u8fd4\u56de\u4efb\u52a1\u7ed3\u679c\u586b\u5199\u8868\u5355\uff1a\u9879\u76ee\u53c2\u6570\u6a21\u677f + \u5df2\u4fdd\u5b58\u503c\uff08\u65e0\u6a21\u677f\u65f6\u4ec5\u8fd4\u56de\u5df2\u4fdd\u5b58\u8bb0\u5f55\uff09\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task_result.py", "source_location": "L96"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_task_result_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task_result.py", "source_location": "L3", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_task_result_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task_result.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_task_result_py", "target": "sqlalchemy_orm", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task_result.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_task_result_py", "target": "app_core_utils", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task_result.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_task_result_py", "target": "app_crud", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task_result.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_task_result_py", "target": "app_crud_qc_task", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task_result.py", "source_location": "L10", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_task_result_py", "target": "app_models_models", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task_result.py", "source_location": "L11", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_task_result_py", "target": "app_models_qc_param", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task_result.py", "source_location": "L12", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_task_result_py", "target": "crud_qc_task_result_row_to_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task_result.py", "source_location": "L15", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_task_result_py", "target":Line truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_tenant_py", "label": "tenant.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/tenant.py", "source_location": "L1"}, {"id": "crud_tenant_row_to_dict", "label": "_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/tenant.py", "source_location": "L16"}, {"id": "crud_tenant_list_tenants", "label": "list_tenants()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/tenant.py", "source_location": "L30"}, {"id": "crud_tenant_get_tenant", "label": "get_tenant()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/tenant.py", "source_location": "L62"}, {"id": "crud_tenant_tenant_no_exists", "label": "tenant_no_exists()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/tenant.py", "source_location": "L70"}, {"id": "crud_tenant_create_tenant", "label": "create_tenant()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/tenant.py", "source_location": "L77"}, {"id": "crud_tenant_update_tenant", "label": "update_tenant()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/tenant.py", "source_location": "L114"}, {"id": "crud_tenant_soft_delete_tenant", "label": "soft_delete_tenant()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/tenant.py", "source_location": "L156"}, {"id": "crud_tenant_total_pages", "label": "total_pages()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/tenant.py", "source_location": "L168"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_tenant_py", "target": "math", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/tenant.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_tenant_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/tenant.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_tenant_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/tenant.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_tenant_py", "target": "sqlalchemy", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/tenant.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_tenant_py", "target": "sqlalchemy_orm", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/tenant.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_tenant_py", "target": "app_core_config", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/tenant.py", "source_location": "L11", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_tenant_py", "target": "app_core_utils", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/tenant.py", "source_location": "L12", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_tenant_py", "target": "app_models_models", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/tenant.py", "source_location": "L13", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_tenant_py", "target": "crud_tenant_row_to_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/tenant.py", "source_location": "L16", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_tenant_py", "target": "crud_tenant_list_tenants", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/tenant.py", "source_location": "L30", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_tenant_py", "target": "crud_tenant_get_tenant", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/tenant.py", "source_location": "L62", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_tenant_py", "target": "crud_tenant_tenant_no_exists", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backeLine truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_consumable_pack_py", "label": "consumable_pack.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/consumable_pack.py", "source_location": "L1"}, {"id": "crud_consumable_pack_item_row_to_dict", "label": "_item_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/consumable_pack.py", "source_location": "L15"}, {"id": "crud_consumable_pack_row_to_dict", "label": "_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/consumable_pack.py", "source_location": "L28"}, {"id": "crud_consumable_pack_list_consumable_packs", "label": "list_consumable_packs()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/consumable_pack.py", "source_location": "L44"}, {"id": "crud_consumable_pack_list_all_packs", "label": "list_all_packs()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/consumable_pack.py", "source_location": "L84"}, {"id": "crud_consumable_pack_get_consumable_pack", "label": "get_consumable_pack()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/consumable_pack.py", "source_location": "L93"}, {"id": "crud_consumable_pack_get_pack_detail", "label": "get_pack_detail()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/consumable_pack.py", "source_location": "L101"}, {"id": "crud_consumable_pack_pack_code_exists", "label": "pack_code_exists()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/consumable_pack.py", "source_location": "L116"}, {"id": "crud_consumable_pack_create_consumable_pack", "label": "create_consumable_pack()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/consumable_pack.py", "source_location": "L125"}, {"id": "crud_consumable_pack_update_consumable_pack", "label": "update_consumable_pack()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/consumable_pack.py", "source_location": "L192"}, {"id": "crud_consumable_pack_soft_delete_consumable_pack", "label": "soft_delete_consumable_pack()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/consumable_pack.py", "source_location": "L270"}, {"id": "crud_consumable_pack_total_pages", "label": "total_pages()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/consumable_pack.py", "source_location": "L292"}, {"id": "crud_consumable_pack_rationale_1", "label": "\u8017\u6750\u5305 CRUD\uff08biz_consumable_pack + biz_consumable_pack_item\uff09", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/consumable_pack.py", "source_location": "L1"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_consumable_pack_py", "target": "math", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/consumable_pack.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_consumable_pack_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/consumable_pack.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_consumable_pack_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/consumable_pack.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_consumable_pack_py", "target": "sqlalchemy", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/consumable_pack.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_consumable_pack_py", "target": "sqlalchemy_orm", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/consumable_pack.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_consumable_pack_py", "target": "app_core_utils", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/consumable_pack.py", "source_location": "L11", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_consumable_pack_py", "target": "app_models_models", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/consumable_pack.py", "source_location": "L12", "weight": 1.0}, {"source": "users_wuzilong_work_00codLine 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_dec", "label": "_dec()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L49"}, {"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": "L55"}, {"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": "L59"}, {"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": "L64"}, {"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": "L69"}, {"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": "L73"}, {"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": "L78"}, {"id": "crud_qc_work_order_sample_type_name_for_reception", "label": "_sample_type_name_for_reception()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L90"}, {"id": "crud_qc_work_order_enrich_work_order_list_items", "label": "_enrich_work_order_list_items()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L107"}, {"id": "crud_qc_work_order_gen_daily_no", "label": "_gen_daily_no()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L179"}, {"id": "crud_qc_work_order_wo_to_dict", "label": "_wo_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L193"}, {"id": "crud_qc_work_order_create_work_order_from_reception", "label": "create_work_order_from_reception()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L223"}, {"id": "crud_qc_work_order_list_work_orders", "label": "list_work_orders()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L338"}, {"id": "crud_qc_work_order_get_work_order", "label": "get_work_order()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L384"}, {"id": "crud_qc_work_order_lab_lines", "label": "_lab_lines()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L393"}, {"id": "crud_qc_work_order_third_lines", "label": "_third_lines()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L414"}, {"id": "crud_qc_work_order_qc_info_item", "label": "_qc_info_item()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L438"}, {"id": "crud_qc_work_order_get_qc_info_map_for_samples", "label": "get_qc_info_map_for_samples()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L459"}, {"id": "crud_qc_work_order_get_work_order_detail", "label": "get_work_order_detail()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L522"}, {"id": "crud_qc_work_order_soft_delete_pending_work_order_tasks", "label": "_soft_delete_pending_work_order_tasks()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L572"}, {"id": "crud_qc_work_order_configure_work_order", "label": "configure_work_order()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.py", "source_location": "L606"}, {"id": "crud_qc_work_order_try_complete_work_order", "label": "try_complete_work_order()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_work_order.pLine 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_fmt_dt", "label": "_fmt_dt()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py", "source_location": "L29"}, {"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": "L33"}, {"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": "L47"}, {"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": "L67"}, {"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": "L87"}, {"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": "L102"}, {"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": "L117"}, {"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": "L128"}, {"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": "L139"}, {"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": "L151"}, {"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": "L166"}, {"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_location": "L179"}, {"id": "crud_production_task_clone_step_consumables", "label": "_clone_step_consumables()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py", "source_location": "L197"}, {"id": "crud_production_task_clone_step_outputs", "label": "_clone_step_outputs()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py", "source_location": "L215"}, {"id": "crud_production_task_clone_step_data_collections", "label": "_clone_step_data_collections()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py", "source_location": "L232"}, {"id": "crud_production_task_clone_route_to_task", "label": "_clone_route_to_task()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py", "source_location": "L248"}, {"id": "crud_production_task_create_production_task", "label": "create_production_task()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py", "source_location": "L281"}, {"id": "crud_production_task_list_production_tasks", "label": "list_production_tasks()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py", "source_location": "L317"}, {"id": "crud_production_task_get_production_task_detail", "label": "get_production_task_detail()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py", "source_location": "L354"}, {"id": "crud_production_task_update_production_task", "label": "update_production_task()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py", "source_location": "L409"}, {"id": "crud_production_task_update_task_status", "label": "update_task_status()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py", "source_location": "L434"}, {"id": "crud_production_task_add_task_step", "label": "add_task_step()", "file_type": "Line truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_api_workflow_py", "label": "workflow.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/workflow.py", "source_location": "L1"}, {"id": "api_workflow_business_type_label", "label": "_business_type_label()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/workflow.py", "source_location": "L26"}, {"id": "api_workflow_leave_form_fields", "label": "_leave_form_fields()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/workflow.py", "source_location": "L41"}, {"id": "api_workflow_get_business_form_fields", "label": "_get_business_form_fields()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/workflow.py", "source_location": "L65"}, {"id": "api_workflow_enrich_task_list", "label": "_enrich_task_list()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/workflow.py", "source_location": "L78"}, {"id": "api_workflow_processdefcreatebody", "label": "ProcessDefCreateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/workflow.py", "source_location": "L95"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "api_workflow_processdefupdatebody", "label": "ProcessDefUpdateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/workflow.py", "source_location": "L105"}, {"id": "api_workflow_publishversionbody", "label": "PublishVersionBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/workflow.py", "source_location": "L115"}, {"id": "api_workflow_startinstancebody", "label": "StartInstanceBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/workflow.py", "source_location": "L124"}, {"id": "api_workflow_taskactionbody", "label": "TaskActionBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/workflow.py", "source_location": "L134"}, {"id": "api_workflow_list_process_defs", "label": "list_process_defs()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/workflow.py", "source_location": "L151"}, {"id": "api_workflow_create_process_def", "label": "create_process_def()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/workflow.py", "source_location": "L168"}, {"id": "api_workflow_update_process_def", "label": "update_process_def()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/workflow.py", "source_location": "L191"}, {"id": "api_workflow_delete_process_def", "label": "delete_process_def()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/workflow.py", "source_location": "L216"}, {"id": "api_workflow_publish_version", "label": "publish_version()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/workflow.py", "source_location": "L234"}, {"id": "api_workflow_list_versions", "label": "list_versions()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/workflow.py", "source_location": "L258"}, {"id": "api_workflow_get_designer_data", "label": "get_designer_data()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/workflow.py", "source_location": "L269"}, {"id": "api_workflow_start_instance", "label": "start_instance()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/workflow.py", "source_location": "L300"}, {"id": "api_workflow_list_my_instances", "label": "list_my_instances()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/workflow.py", "source_location": "L338"}, {"id": "api_workflow_get_instance_detail", "label": "get_instance_detail()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/workflow.py", "source_location": "L358"}, {"id": "api_workflow_list_pending_tasks", "label": "list_pending_tasks()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/workflow.py", "source_location": "L421"}, {"id": "api_workflow_list_completed_tasks", "label": "list_completed_tasks()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/workflow.py", "source_location": "L439"}, {"id": "api_workflow_approve_task", "label": "approve_task()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/workflow.py", "source_location": "L462"}, {"id": "api_workflow_reject_task", "label": "reject_task()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/workflow.py", "source_location": "L478"}, {"id": "api_workflow_get_business_all_tasks", "lLine truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_material_usage_py", "label": "qc_material_usage.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material_usage.py", "source_location": "L1"}, {"id": "crud_qc_material_usage_row_to_dict", "label": "_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material_usage.py", "source_location": "L16"}, {"id": "crud_qc_material_usage_list_usages", "label": "list_usages()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material_usage.py", "source_location": "L35"}, {"id": "crud_qc_material_usage_deduct_for_task", "label": "deduct_for_task()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material_usage.py", "source_location": "L78"}, {"id": "crud_qc_material_usage_rationale_87", "label": "\u6263\u51cf\u7269\u6599\u5e93\u5b58\u5e76\u751f\u6210\u53d8\u52a8\u8bb0\u5f55\u3002\u8c03\u7528\u65b9\u63a7\u5236\u4e8b\u52a1\uff0c\u672c\u51fd\u6570\u4e0d commit\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material_usage.py", "source_location": "L87"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_material_usage_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material_usage.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_material_usage_py", "target": "decimal", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material_usage.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_material_usage_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material_usage.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_material_usage_py", "target": "fastapi", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material_usage.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_material_usage_py", "target": "sqlalchemy", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material_usage.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_material_usage_py", "target": "sqlalchemy_orm", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material_usage.py", "source_location": "L10", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_material_usage_py", "target": "app_core_utils", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material_usage.py", "source_location": "L12", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_material_usage_py", "target": "app_models_qc_material", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material_usage.py", "source_location": "L13", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_material_usage_py", "target": "crud_qc_material_usage_row_to_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material_usage.py", "source_location": "L16", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_material_usage_py", "target": "crud_qc_material_usage_list_usages", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material_usage.py", "source_location": "L35", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_material_usage_py", "target": "crud_qc_material_usage_deduct_for_task", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material_usage.py", "source_location": "L78", "weight": 1.0}, {"source": "crud_qc_material_usage_list_usages", "target": "crud_qc_material_usage_row_to_dict", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material_usage.py", "source_location": "L75", "weight": 1.0}, {"source": "crud_qc_material_usage_rationale_87", "target": "crud_qc_material_usage_deduct_for_task", "relation": "rationale_for", "confidence": "EXLine truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_output_type_py", "label": "output_type.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/output_type.py", "source_location": "L1"}, {"id": "crud_output_type_row_to_dict", "label": "_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/output_type.py", "source_location": "L15"}, {"id": "crud_output_type_list_output_types", "label": "list_output_types()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/output_type.py", "source_location": "L28"}, {"id": "crud_output_type_get_output_type", "label": "get_output_type()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/output_type.py", "source_location": "L68"}, {"id": "crud_output_type_type_code_exists", "label": "type_code_exists()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/output_type.py", "source_location": "L76"}, {"id": "crud_output_type_create_output_type", "label": "create_output_type()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/output_type.py", "source_location": "L85"}, {"id": "crud_output_type_update_output_type", "label": "update_output_type()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/output_type.py", "source_location": "L120"}, {"id": "crud_output_type_soft_delete_output_type", "label": "soft_delete_output_type()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/output_type.py", "source_location": "L154"}, {"id": "crud_output_type_total_pages", "label": "total_pages()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/output_type.py", "source_location": "L164"}, {"id": "crud_output_type_rationale_1", "label": "\u5de5\u827a\u4ea7\u51fa\u7269\u7c7b\u578b CRUD\uff08biz_output_type\uff09", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/output_type.py", "source_location": "L1"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_output_type_py", "target": "math", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/output_type.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_output_type_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/output_type.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_output_type_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/output_type.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_output_type_py", "target": "sqlalchemy", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/output_type.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_output_type_py", "target": "sqlalchemy_orm", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/output_type.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_output_type_py", "target": "app_core_utils", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/output_type.py", "source_location": "L11", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_output_type_py", "target": "app_models_models", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/output_type.py", "source_location": "L12", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_output_type_py", "target": "crud_output_type_row_to_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/output_type.py", "source_location": "L15", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_output_type_py", "target": "crud_output_type_list_output_types", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/output_type.py", "source_location": "L28", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_output_type_py", "target": "crud_output_type_get_output_type", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/output_type.py", "source_Line truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_material_stock_log_py", "label": "material_stock_log.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_stock_log.py", "source_location": "L1"}, {"id": "crud_material_stock_log_dec", "label": "_dec()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_stock_log.py", "source_location": "L13"}, {"id": "crud_material_stock_log_fmt_dt", "label": "_fmt_dt()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_stock_log.py", "source_location": "L19"}, {"id": "crud_material_stock_log_row_to_dict", "label": "_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_stock_log.py", "source_location": "L23"}, {"id": "crud_material_stock_log_list_stock_logs", "label": "list_stock_logs()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_stock_log.py", "source_location": "L42"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_material_stock_log_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_stock_log.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_material_stock_log_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_stock_log.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_material_stock_log_py", "target": "sqlalchemy", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_stock_log.py", "source_location": "L7", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_material_stock_log_py", "target": "sqlalchemy_orm", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_stock_log.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_material_stock_log_py", "target": "app_models_material", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_stock_log.py", "source_location": "L10", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_material_stock_log_py", "target": "crud_material_stock_log_dec", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_stock_log.py", "source_location": "L13", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_material_stock_log_py", "target": "crud_material_stock_log_fmt_dt", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_stock_log.py", "source_location": "L19", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_material_stock_log_py", "target": "crud_material_stock_log_row_to_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_stock_log.py", "source_location": "L23", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_material_stock_log_py", "target": "crud_material_stock_log_list_stock_logs", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_stock_log.py", "source_location": "L42", "weight": 1.0}, {"source": "crud_material_stock_log_row_to_dict", "target": "crud_material_stock_log_dec", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_stock_log.py", "source_location": "L30", "weight": 1.0}, {"source": "crud_material_stock_log_row_to_dict", "target": "crud_material_stock_log_fmt_dt", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_stock_log.py", "source_location": "L37", "weight": 1.0}, {"source": "crud_material_stock_log_list_stock_logs", "target": "crud_material_stock_log_row_to_dict", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_stock_log.py", "source_location": "L92", "weight": 1.0}], "raw_calls": [{"caller_nid": "crud_material_stock_log_dec", "callee": "float", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material_stock_log.py", "source_location": "L16"}, {"caller_nid": "crud_material_stock_log_fmt_dt", "callee": "strftime", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/cLine truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_api_admin_py", "label": "admin.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/admin.py", "source_location": "L1"}, {"id": "api_admin_list_roles_for_select", "label": "list_roles_for_select()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/admin.py", "source_location": "L41"}, {"id": "api_admin_list_users_for_select", "label": "list_users_for_select()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/admin.py", "source_location": "L73"}, {"id": "api_admin_list_roles_for_designer", "label": "list_roles_for_designer()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/admin.py", "source_location": "L88"}, {"id": "api_admin_tenantcreatebody", "label": "TenantCreateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/admin.py", "source_location": "L108"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "api_admin_tenantupdatebody", "label": "TenantUpdateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/admin.py", "source_location": "L119"}, {"id": "api_admin_list_tenants", "label": "list_tenants()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/admin.py", "source_location": "L131"}, {"id": "api_admin_create_tenant", "label": "create_tenant()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/admin.py", "source_location": "L152"}, {"id": "api_admin_update_tenant", "label": "update_tenant()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/admin.py", "source_location": "L174"}, {"id": "api_admin_delete_tenant", "label": "delete_tenant()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/admin.py", "source_location": "L199"}, {"id": "api_admin_get_tenant_no", "label": "_get_tenant_no()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/admin.py", "source_location": "L216"}, {"id": "api_admin_usercreatebody", "label": "UserCreateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/admin.py", "source_location": "L229"}, {"id": "api_admin_userupdatebody", "label": "UserUpdateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/admin.py", "source_location": "L246"}, {"id": "api_admin_list_users", "label": "list_users()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/admin.py", "source_location": "L262"}, {"id": "api_admin_get_user_by_id", "label": "get_user_by_id()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/admin.py", "source_location": "L306"}, {"id": "api_admin_create_user", "label": "create_user()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/admin.py", "source_location": "L322"}, {"id": "api_admin_update_user", "label": "update_user()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/admin.py", "source_location": "L355"}, {"id": "api_admin_delete_user", "label": "delete_user()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/admin.py", "source_location": "L385"}, {"id": "api_admin_reset_user_password", "label": "reset_user_password()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/admin.py", "source_location": "L398"}, {"id": "api_admin_dicttypecreatebody", "label": "DictTypeCreateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/admin.py", "source_location": "L415"}, {"id": "api_admin_dicttypeupdatebody", "label": "DictTypeUpdateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/admin.py", "source_location": "L424"}, {"id": "api_admin_list_dict_types", "label": "list_dict_types()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/admin.py", "source_location": "L434"}, {"id": "api_admin_create_dict_type", "label": "create_dict_type()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/admin.py", "source_location": "L450"}, {"id": "api_admin_update_dict_type", "label": "update_dict_type()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/admin.py", "source_location": "L472"}, {"id": "api_admin_delete_dict_type", "label": "delete_dict_type()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/admin.py", "source_location": "L497"}, {"id": "api_admin_dictdatacreatebody", "label": "DictDataCreateBody", "file_type": "code", "sLine 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_get_tenant_no", "label": "_get_tenant_no()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/production.py", "source_location": "L52"}, {"id": "api_production_consumablecreatebody", "label": "ConsumableCreateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/production.py", "source_location": "L65"}, {"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": "L77"}, {"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": "L90"}, {"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": "L104"}, {"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": "L114"}, {"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": "L140"}, {"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": "L167"}, {"id": "api_production_reagentcreatebody", "label": "ReagentCreateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/production.py", "source_location": "L184"}, {"id": "api_production_reagentupdatebody", "label": "ReagentUpdateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/production.py", "source_location": "L196"}, {"id": "api_production_list_reagents", "label": "list_reagents()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/production.py", "source_location": "L209"}, {"id": "api_production_list_all_reagents", "label": "list_all_reagents()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/production.py", "source_location": "L223"}, {"id": "api_production_create_reagent", "label": "create_reagent()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/production.py", "source_location": "L233"}, {"id": "api_production_update_reagent", "label": "update_reagent()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/production.py", "source_location": "L259"}, {"id": "api_production_delete_reagent", "label": "delete_reagent()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/production.py", "source_location": "L286"}, {"id": "api_production_sopdocumentcreatebody", "label": "SopDocumentCreateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/production.py", "source_location": "L303"}, {"id": "api_production_sopdocumentupdatebody", "label": "SopDocumentUpdateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/production.py", "source_location": "L313"}, {"id": "api_production_list_sop_documents", "label": "list_sop_documents()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/production.py", "source_location": "L324"}, {"id": "api_production_list_all_sop_documents", "label": "list_all_sop_documents()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/production.py", "source_location": "L338"}, {"id": "api_production_create_sop_document", "label": "create_sop_document()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/production.py", "source_location": "L348"}, {"id": "api_production_update_sop_document", "label": "update_sop_document()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/production.py", "source_location": "L375"}, {"id": "api_production_delete_sop_document", "label": "delete_sop_document()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/production.py", "source_location": "L404"}, {"id": "api_production_processcategorycreatebody", "label": "ProcessCategoryCreateBody", "file_type": "code", "source_file": "/Users/wuziloLine truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_material_py", "label": "material.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material.py", "source_location": "L1"}, {"id": "crud_material_dec", "label": "_dec()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material.py", "source_location": "L15"}, {"id": "crud_material_fmt_dt", "label": "_fmt_dt()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material.py", "source_location": "L21"}, {"id": "crud_material_row_to_dict", "label": "_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material.py", "source_location": "L25"}, {"id": "crud_material_code_exists", "label": "_code_exists()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material.py", "source_location": "L43"}, {"id": "crud_material_list_materials", "label": "list_materials()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material.py", "source_location": "L59"}, {"id": "crud_material_get_material", "label": "get_material()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material.py", "source_location": "L108"}, {"id": "crud_material_create_material", "label": "create_material()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material.py", "source_location": "L125"}, {"id": "crud_material_update_material", "label": "update_material()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material.py", "source_location": "L170"}, {"id": "crud_material_soft_delete_material", "label": "soft_delete_material()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material.py", "source_location": "L228"}, {"id": "crud_material_stock_in", "label": "stock_in()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material.py", "source_location": "L254"}, {"id": "crud_material_stock_out", "label": "stock_out()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material.py", "source_location": "L312"}, {"id": "crud_material_options_list", "label": "options_list()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material.py", "source_location": "L379"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_material_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_material_py", "target": "decimal", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_material_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_material_py", "target": "sqlalchemy", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_material_py", "target": "sqlalchemy_orm", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_material_py", "target": "app_core_utils", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material.py", "source_location": "L11", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_material_py", "target": "app_models_material", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material.py", "source_location": "L12", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_material_py", "target": "crud_material_dec", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material.py", "source_location": "L15", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_material_py", "target": "crud_material_fmt_dt", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/material.py", "sLine truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_api_sample_reception_py", "label": "sample_reception.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/sample_reception.py", "source_location": "L1"}, {"id": "api_sample_reception_get_tenant_no", "label": "_get_tenant_no()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/sample_reception.py", "source_location": "L21"}, {"id": "api_sample_reception_get_current_user_id", "label": "_get_current_user_id()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/sample_reception.py", "source_location": "L31"}, {"id": "api_sample_reception_page_payload", "label": "_page_payload()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/sample_reception.py", "source_location": "L38"}, {"id": "api_sample_reception_checkitembody", "label": "CheckItemBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/sample_reception.py", "source_location": "L51"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "api_sample_reception_checkitemupdatebody", "label": "CheckItemUpdateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/sample_reception.py", "source_location": "L61"}, {"id": "api_sample_reception_list_check_items", "label": "list_check_items()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/sample_reception.py", "source_location": "L72"}, {"id": "api_sample_reception_list_active_check_items", "label": "list_active_check_items()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/sample_reception.py", "source_location": "L102"}, {"id": "api_sample_reception_create_check_item", "label": "create_check_item()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/sample_reception.py", "source_location": "L117"}, {"id": "api_sample_reception_update_check_item", "label": "update_check_item()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/sample_reception.py", "source_location": "L148"}, {"id": "api_sample_reception_delete_check_item", "label": "delete_check_item()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/sample_reception.py", "source_location": "L178"}, {"id": "api_sample_reception_list_pending_samples", "label": "list_pending_samples()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/sample_reception.py", "source_location": "L199"}, {"id": "api_sample_reception_list_received_samples", "label": "list_received_samples()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/sample_reception.py", "source_location": "L221"}, {"id": "api_sample_reception_get_sample_reception_detail", "label": "get_sample_reception_detail()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/sample_reception.py", "source_location": "L243"}, {"id": "api_sample_reception_receptionchecksubmit", "label": "ReceptionCheckSubmit", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/sample_reception.py", "source_location": "L260"}, {"id": "api_sample_reception_samplereceptionupdatebody", "label": "SampleReceptionUpdateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/sample_reception.py", "source_location": "L267"}, {"id": "api_sample_reception_samplereceptioncreatebody", "label": "SampleReceptionCreateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/sample_reception.py", "source_location": "L282"}, {"id": "api_sample_reception_post_sample_reception", "label": "post_sample_reception()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/sample_reception.py", "source_location": "L301"}, {"id": "api_sample_reception_put_sample_reception", "label": "put_sample_reception()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/sample_reception.py", "source_location": "L347"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_api_sample_reception_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/sample_reception.py", "source_location": "L2", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_sample_reception_py", "target": "fastapi", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/sample_reception.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_sample_reception_py", "taLine truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_site_py", "label": "site.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/site.py", "source_location": "L1"}, {"id": "crud_site_row_to_dict", "label": "_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/site.py", "source_location": "L15"}, {"id": "crud_site_list_sites", "label": "list_sites()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/site.py", "source_location": "L34"}, {"id": "crud_site_get_site", "label": "get_site()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/site.py", "source_location": "L69"}, {"id": "crud_site_site_code_exists", "label": "site_code_exists()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/site.py", "source_location": "L77"}, {"id": "crud_site_create_site", "label": "create_site()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/site.py", "source_location": "L84"}, {"id": "crud_site_update_site", "label": "update_site()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/site.py", "source_location": "L131"}, {"id": "crud_site_soft_delete_site", "label": "soft_delete_site()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/site.py", "source_location": "L183"}, {"id": "crud_site_total_pages", "label": "total_pages()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/site.py", "source_location": "L193"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_site_py", "target": "math", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/site.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_site_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/site.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_site_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/site.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_site_py", "target": "sqlalchemy", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/site.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_site_py", "target": "sqlalchemy_orm", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/site.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_site_py", "target": "app_core_utils", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/site.py", "source_location": "L11", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_site_py", "target": "app_models_models", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/site.py", "source_location": "L12", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_site_py", "target": "crud_site_row_to_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/site.py", "source_location": "L15", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_site_py", "target": "crud_site_list_sites", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/site.py", "source_location": "L34", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_site_py", "target": "crud_site_get_site", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/site.py", "source_location": "L69", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_site_py", "target": "crud_site_site_code_exists", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/site.py", "source_location": "L77", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_site_py", "target": "crud_site_create_site", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/site.py", "source_location": "L84", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backenLine truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_leave_py", "label": "leave.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/leave.py", "source_location": "L1"}, {"id": "crud_leave_total_pages", "label": "total_pages()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/leave.py", "source_location": "L14"}, {"id": "crud_leave_row_to_dict", "label": "_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/leave.py", "source_location": "L18"}, {"id": "crud_leave_list_leaves", "label": "list_leaves()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/leave.py", "source_location": "L38"}, {"id": "crud_leave_get_leave", "label": "get_leave()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/leave.py", "source_location": "L73"}, {"id": "crud_leave_create_leave", "label": "create_leave()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/leave.py", "source_location": "L78"}, {"id": "crud_leave_update_leave", "label": "update_leave()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/leave.py", "source_location": "L109"}, {"id": "crud_leave_update_leave_status", "label": "update_leave_status()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/leave.py", "source_location": "L129"}, {"id": "crud_leave_soft_delete_leave", "label": "soft_delete_leave()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/leave.py", "source_location": "L141"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_leave_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/leave.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_leave_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/leave.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_leave_py", "target": "sqlalchemy", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/leave.py", "source_location": "L7", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_leave_py", "target": "sqlalchemy_orm", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/leave.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_leave_py", "target": "app_core_utils", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/leave.py", "source_location": "L10", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_leave_py", "target": "app_models_models", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/leave.py", "source_location": "L11", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_leave_py", "target": "crud_leave_total_pages", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/leave.py", "source_location": "L14", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_leave_py", "target": "crud_leave_row_to_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/leave.py", "source_location": "L18", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_leave_py", "target": "crud_leave_list_leaves", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/leave.py", "source_location": "L38", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_leave_py", "target": "crud_leave_get_leave", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/leave.py", "source_location": "L73", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_leave_py", "target": "crud_leave_create_leave", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/leave.py", "source_location": "L78", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_leave_py", "target": "crud_leave_update_leave", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/leave.py", "source_lLine truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_third_party_company_py", "label": "qc_third_party_company.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_third_party_company.py", "source_location": "L1"}, {"id": "crud_qc_third_party_company_row_to_dict", "label": "_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_third_party_company.py", "source_location": "L14"}, {"id": "crud_qc_third_party_company_company_code_exists", "label": "company_code_exists()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_third_party_company.py", "source_location": "L34"}, {"id": "crud_qc_third_party_company_list_companies", "label": "list_companies()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_third_party_company.py", "source_location": "L50"}, {"id": "crud_qc_third_party_company_list_company_options", "label": "list_company_options()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_third_party_company.py", "source_location": "L94"}, {"id": "crud_qc_third_party_company_get_company", "label": "get_company()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_third_party_company.py", "source_location": "L111"}, {"id": "crud_qc_third_party_company_create_company", "label": "create_company()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_third_party_company.py", "source_location": "L122"}, {"id": "crud_qc_third_party_company_update_company", "label": "update_company()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_third_party_company.py", "source_location": "L180"}, {"id": "crud_qc_third_party_company_soft_delete_company", "label": "soft_delete_company()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_third_party_company.py", "source_location": "L245"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_third_party_company_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_third_party_company.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_third_party_company_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_third_party_company.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_third_party_company_py", "target": "sqlalchemy", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_third_party_company.py", "source_location": "L7", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_third_party_company_py", "target": "sqlalchemy_orm", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_third_party_company.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_third_party_company_py", "target": "app_core_utils", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_third_party_company.py", "source_location": "L10", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_third_party_company_py", "target": "app_models_models", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_third_party_company.py", "source_location": "L11", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_third_party_company_py", "target": "crud_qc_third_party_company_row_to_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_third_party_company.py", "source_location": "L14", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_third_party_company_py", "target": "crud_qc_third_party_company_company_code_exists", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_third_party_company.py", "source_location": "L34", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_third_party_company_py", "target": "crud_qc_third_party_company_list_companies", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_third_party_company.py", "source_location": "L50", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_thirdLine truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_api_operations_py", "label": "operations.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L1"}, {"id": "api_operations_get_tenant_no", "label": "_get_tenant_no()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L21"}, {"id": "api_operations_cleanroomcreatebody", "label": "CleanRoomCreateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L36"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "api_operations_cleanroomupdatebody", "label": "CleanRoomUpdateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L48"}, {"id": "api_operations_list_clean_rooms", "label": "list_clean_rooms()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L61"}, {"id": "api_operations_create_clean_room", "label": "create_clean_room()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L84"}, {"id": "api_operations_update_clean_room", "label": "update_clean_room()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L109"}, {"id": "api_operations_delete_clean_room", "label": "delete_clean_room()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L137"}, {"id": "api_operations_accesslogcreatebody", "label": "AccessLogCreateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L155"}, {"id": "api_operations_accesslogupdatebody", "label": "AccessLogUpdateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L169"}, {"id": "api_operations_parse_optional_dt", "label": "_parse_optional_dt()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L182"}, {"id": "api_operations_list_access_logs", "label": "list_access_logs()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L189"}, {"id": "api_operations_create_access_log", "label": "create_access_log()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L218"}, {"id": "api_operations_update_access_log", "label": "update_access_log()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L245"}, {"id": "api_operations_delete_access_log", "label": "delete_access_log()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L274"}, {"id": "api_operations_storagefacilitycreatebody", "label": "StorageFacilityCreateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L292"}, {"id": "api_operations_storagefacilityupdatebody", "label": "StorageFacilityUpdateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L303"}, {"id": "api_operations_list_storage_facilities", "label": "list_storage_facilities()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L314"}, {"id": "api_operations_create_storage_facility", "label": "create_storage_facility()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L333"}, {"id": "api_operations_update_storage_facility", "label": "update_storage_facility()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L357"}, {"id": "api_operations_delete_storage_facility", "label": "delete_storage_facility()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L383"}, {"id": "api_operations_storageslotcreatebody", "label": "StorageSlotCreateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L401"}, {"id": "api_operations_storageslotbatchcreatebody", "label": "StorageSlotBatchCreateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L411"}, {"id": "api_operations_storageslotupdatebody", "label":Line truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_process_py", "label": "process.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process.py", "source_location": "L1"}, {"id": "crud_process_reagent_row_to_dict", "label": "_reagent_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process.py", "source_location": "L21"}, {"id": "crud_process_consumable_row_to_dict", "label": "_consumable_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process.py", "source_location": "L35"}, {"id": "crud_process_output_row_to_dict", "label": "_output_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process.py", "source_location": "L49"}, {"id": "crud_process_data_collection_row_to_dict", "label": "_data_collection_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process.py", "source_location": "L59"}, {"id": "crud_process_row_to_dict", "label": "_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process.py", "source_location": "L70"}, {"id": "crud_process_list_processes", "label": "list_processes()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process.py", "source_location": "L88"}, {"id": "crud_process_list_all_processes", "label": "list_all_processes()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process.py", "source_location": "L128"}, {"id": "crud_process_get_process", "label": "get_process()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process.py", "source_location": "L137"}, {"id": "crud_process_get_process_detail", "label": "get_process_detail()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process.py", "source_location": "L145"}, {"id": "crud_process_process_code_exists", "label": "process_code_exists()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process.py", "source_location": "L185"}, {"id": "crud_process_create_sub_reagent", "label": "_create_sub_reagent()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process.py", "source_location": "L194"}, {"id": "crud_process_create_sub_consumable", "label": "_create_sub_consumable()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process.py", "source_location": "L216"}, {"id": "crud_process_create_sub_output", "label": "_create_sub_output()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process.py", "source_location": "L239"}, {"id": "crud_process_create_sub_data_collection", "label": "_create_sub_data_collection()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process.py", "source_location": "L259"}, {"id": "crud_process_create_process", "label": "create_process()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process.py", "source_location": "L278"}, {"id": "crud_process_soft_delete_sub_records", "label": "_soft_delete_sub_records()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process.py", "source_location": "L343"}, {"id": "crud_process_update_process", "label": "update_process()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process.py", "source_location": "L355"}, {"id": "crud_process_soft_delete_process", "label": "soft_delete_process()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process.py", "source_location": "L430"}, {"id": "crud_process_total_pages", "label": "total_pages()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process.py", "source_location": "L447"}, {"id": "crud_process_rationale_1", "label": "\u5de5\u827a\u5e93 CRUD\uff08biz_process + biz_process_reagent/consumable/output\uff09", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process.py", "source_location": "L1"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_process_py", "target": "math", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_process_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_process_py", "target": "typing", "relationLine truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_reagent_py", "label": "reagent.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/reagent.py", "source_location": "L1"}, {"id": "crud_reagent_row_to_dict", "label": "_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/reagent.py", "source_location": "L15"}, {"id": "crud_reagent_list_reagents", "label": "list_reagents()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/reagent.py", "source_location": "L32"}, {"id": "crud_reagent_get_reagent", "label": "get_reagent()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/reagent.py", "source_location": "L72"}, {"id": "crud_reagent_reagent_code_exists", "label": "reagent_code_exists()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/reagent.py", "source_location": "L80"}, {"id": "crud_reagent_create_reagent", "label": "create_reagent()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/reagent.py", "source_location": "L89"}, {"id": "crud_reagent_update_reagent", "label": "update_reagent()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/reagent.py", "source_location": "L132"}, {"id": "crud_reagent_soft_delete_reagent", "label": "soft_delete_reagent()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/reagent.py", "source_location": "L178"}, {"id": "crud_reagent_total_pages", "label": "total_pages()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/reagent.py", "source_location": "L188"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_reagent_py", "target": "math", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/reagent.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_reagent_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/reagent.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_reagent_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/reagent.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_reagent_py", "target": "sqlalchemy", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/reagent.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_reagent_py", "target": "sqlalchemy_orm", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/reagent.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_reagent_py", "target": "app_core_utils", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/reagent.py", "source_location": "L11", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_reagent_py", "target": "app_models_models", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/reagent.py", "source_location": "L12", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_reagent_py", "target": "crud_reagent_row_to_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/reagent.py", "source_location": "L15", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_reagent_py", "target": "crud_reagent_list_reagents", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/reagent.py", "source_location": "L32", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_reagent_py", "target": "crud_reagent_get_reagent", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/reagent.py", "source_location": "L72", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_reagent_py", "target": "crud_reagent_reagent_code_exists", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/reagent.py", "source_location": "L80", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_reagent_py", "target": "crud_reagent_create_reagent", "relation": "contains", "confiLine truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_api_insurance_company_py", "label": "insurance_company.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/insurance_company.py", "source_location": "L1"}, {"id": "api_insurance_company_get_tenant_no", "label": "_get_tenant_no()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/insurance_company.py", "source_location": "L29"}, {"id": "api_insurance_company_generate_uuid", "label": "_generate_uuid()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/insurance_company.py", "source_location": "L39"}, {"id": "api_insurance_company_fmt_dt", "label": "_fmt_dt()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/insurance_company.py", "source_location": "L43"}, {"id": "api_insurance_company_total_pages", "label": "_total_pages()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/insurance_company.py", "source_location": "L51"}, {"id": "api_insurance_company_row_to_dict_company", "label": "_row_to_dict_company()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/insurance_company.py", "source_location": "L60"}, {"id": "api_insurance_company_row_to_dict_invoice", "label": "_row_to_dict_invoice()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/insurance_company.py", "source_location": "L79"}, {"id": "api_insurance_company_row_to_dict_project_price", "label": "_row_to_dict_project_price()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/insurance_company.py", "source_location": "L100"}, {"id": "api_insurance_company_list_insurance_companies", "label": "_list_insurance_companies()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/insurance_company.py", "source_location": "L123"}, {"id": "api_insurance_company_create_insurance_company", "label": "_create_insurance_company()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/insurance_company.py", "source_location": "L145"}, {"id": "api_insurance_company_update_insurance_company", "label": "_update_insurance_company()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/insurance_company.py", "source_location": "L181"}, {"id": "api_insurance_company_soft_delete_insurance_company", "label": "_soft_delete_insurance_company()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/insurance_company.py", "source_location": "L227"}, {"id": "api_insurance_company_list_insurance_company_invoices", "label": "_list_insurance_company_invoices()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/insurance_company.py", "source_location": "L248"}, {"id": "api_insurance_company_create_insurance_company_invoice", "label": "_create_insurance_company_invoice()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/insurance_company.py", "source_location": "L275"}, {"id": "api_insurance_company_update_insurance_company_invoice", "label": "_update_insurance_company_invoice()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/insurance_company.py", "source_location": "L315"}, {"id": "api_insurance_company_soft_delete_insurance_company_invoice", "label": "_soft_delete_insurance_company_invoice()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/insurance_company.py", "source_location": "L364"}, {"id": "api_insurance_company_list_insurance_project_prices", "label": "_list_insurance_project_prices()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/insurance_company.py", "source_location": "L385"}, {"id": "api_insurance_company_create_insurance_project_price", "label": "_create_insurance_project_price()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/insurance_company.py", "source_location": "L411"}, {"id": "api_insurance_company_update_insurance_project_price", "label": "_update_insurance_project_price()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/insurance_company.py", "source_location": "L445"}, {"id": "api_insurance_company_soft_delete_insurance_project_price", "label": "_soft_delete_insurance_project_price()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/insurance_company.py", "source_location": "L485"}, {"id": "api_insurance_company_insurancecompanycreatebody", "label": "InsuranceCompanyCreateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/insurance_company.py", "source_location": "L506"}, {"id": "basemodel", "label": "BaseModel", "file_typeLine truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_api_operations_py", "label": "operations.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L1"}, {"id": "api_operations_get_tenant_no", "label": "_get_tenant_no()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L22"}, {"id": "api_operations_cleanroomcreatebody", "label": "CleanRoomCreateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L37"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "api_operations_cleanroomupdatebody", "label": "CleanRoomUpdateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L49"}, {"id": "api_operations_list_clean_rooms", "label": "list_clean_rooms()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L62"}, {"id": "api_operations_create_clean_room", "label": "create_clean_room()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L87"}, {"id": "api_operations_update_clean_room", "label": "update_clean_room()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L112"}, {"id": "api_operations_delete_clean_room", "label": "delete_clean_room()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L140"}, {"id": "api_operations_accesslogcreatebody", "label": "AccessLogCreateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L158"}, {"id": "api_operations_accesslogupdatebody", "label": "AccessLogUpdateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L172"}, {"id": "api_operations_parse_optional_dt", "label": "_parse_optional_dt()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L185"}, {"id": "api_operations_list_access_logs", "label": "list_access_logs()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L192"}, {"id": "api_operations_create_access_log", "label": "create_access_log()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L221"}, {"id": "api_operations_update_access_log", "label": "update_access_log()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L248"}, {"id": "api_operations_delete_access_log", "label": "delete_access_log()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L277"}, {"id": "api_operations_storagefacilitycreatebody", "label": "StorageFacilityCreateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L295"}, {"id": "api_operations_storagefacilityupdatebody", "label": "StorageFacilityUpdateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L306"}, {"id": "api_operations_list_storage_facilities", "label": "list_storage_facilities()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L317"}, {"id": "api_operations_create_storage_facility", "label": "create_storage_facility()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L336"}, {"id": "api_operations_update_storage_facility", "label": "update_storage_facility()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L360"}, {"id": "api_operations_delete_storage_facility", "label": "delete_storage_facility()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L386"}, {"id": "api_operations_storageslotcreatebody", "label": "StorageSlotCreateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L404"}, {"id": "api_operations_storageslotbatchcreatebody", "label": "StorageSlotBatchCreateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L414"}, {"id": "api_operations_storageslotupdatebody", "label":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": "L30"}, {"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": "L36"}, {"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": "L40"}, {"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": "L47"}, {"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": "L52"}, {"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": "L84"}, {"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": "L102"}, {"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": "L169"}, {"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": "L180"}, {"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": "L223"}, {"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": "L296"}, {"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": "L313"}, {"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": "L322"}, {"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": "L345"}, {"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": "L362"}, {"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": "L366"}, {"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": "L406"}, {"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": "L441"}, {"id": "crud_qc_task_rationale_415", "label": "\u4fdd\u5b58\u68c0\u6d4b\u7ed3\u679c\u4e0e\u7ed3\u8bba\uff1b\u4efb\u52a1\u672a\u5b8c\u6210\u65f6\u987a\u5e26\u6807\u8bb0\u4e3a\u5df2\u5b8c\u6210\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L415"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_task_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_task_py", "target": "decimal", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_task_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_Line truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_process_route_py", "label": "process_route.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process_route.py", "source_location": "L1"}, {"id": "crud_process_route_route_row_to_dict", "label": "_route_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process_route.py", "source_location": "L31"}, {"id": "crud_process_route_step_row_to_dict", "label": "_step_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process_route.py", "source_location": "L47"}, {"id": "crud_process_route_step_reagent_row_to_dict", "label": "_step_reagent_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process_route.py", "source_location": "L64"}, {"id": "crud_process_route_step_consumable_row_to_dict", "label": "_step_consumable_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process_route.py", "source_location": "L78"}, {"id": "crud_process_route_step_output_row_to_dict", "label": "_step_output_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process_route.py", "source_location": "L92"}, {"id": "crud_process_route_step_data_collection_row_to_dict", "label": "_step_data_collection_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process_route.py", "source_location": "L103"}, {"id": "crud_process_route_list_routes", "label": "list_routes()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process_route.py", "source_location": "L118"}, {"id": "crud_process_route_get_route", "label": "get_route()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process_route.py", "source_location": "L154"}, {"id": "crud_process_route_get_route_detail", "label": "get_route_detail()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process_route.py", "source_location": "L160"}, {"id": "crud_process_route_create_route", "label": "create_route()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process_route.py", "source_location": "L198"}, {"id": "crud_process_route_update_route", "label": "update_route()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process_route.py", "source_location": "L229"}, {"id": "crud_process_route_set_current_route", "label": "set_current_route()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process_route.py", "source_location": "L245"}, {"id": "crud_process_route_soft_delete_sub_records", "label": "_soft_delete_sub_records()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process_route.py", "source_location": "L271"}, {"id": "crud_process_route_create_step_reagent", "label": "_create_step_reagent()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process_route.py", "source_location": "L281"}, {"id": "crud_process_route_create_step_consumable", "label": "_create_step_consumable()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process_route.py", "source_location": "L296"}, {"id": "crud_process_route_create_step_output", "label": "_create_step_output()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process_route.py", "source_location": "L311"}, {"id": "crud_process_route_create_step_data_collection", "label": "_create_step_data_collection()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process_route.py", "source_location": "L323"}, {"id": "crud_process_route_add_step", "label": "add_step()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process_route.py", "source_location": "L339"}, {"id": "crud_process_route_update_step", "label": "update_step()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process_route.py", "source_location": "L414"}, {"id": "crud_process_route_reorder_steps", "label": "reorder_steps()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process_route.py", "source_location": "L433"}, {"id": "crud_process_route_copy_step", "label": "copy_step()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process_route.py", "source_location": "L447"}, {"id": "crud_process_route_soft_delete_step", "label": "soft_delete_step()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process_route.py", "source_location": "L535"}, {"id": "crud_process_route_soft_delete_routLine truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_consumable_py", "label": "consumable.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/consumable.py", "source_location": "L1"}, {"id": "crud_consumable_row_to_dict", "label": "_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/consumable.py", "source_location": "L15"}, {"id": "crud_consumable_list_consumables", "label": "list_consumables()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/consumable.py", "source_location": "L32"}, {"id": "crud_consumable_get_consumable", "label": "get_consumable()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/consumable.py", "source_location": "L72"}, {"id": "crud_consumable_consumable_code_exists", "label": "consumable_code_exists()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/consumable.py", "source_location": "L80"}, {"id": "crud_consumable_create_consumable", "label": "create_consumable()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/consumable.py", "source_location": "L89"}, {"id": "crud_consumable_update_consumable", "label": "update_consumable()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/consumable.py", "source_location": "L132"}, {"id": "crud_consumable_soft_delete_consumable", "label": "soft_delete_consumable()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/consumable.py", "source_location": "L178"}, {"id": "crud_consumable_total_pages", "label": "total_pages()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/consumable.py", "source_location": "L188"}, {"id": "crud_consumable_rationale_1", "label": "\u8017\u6750 CRUD\uff08biz_consumable\uff09", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/consumable.py", "source_location": "L1"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_consumable_py", "target": "math", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/consumable.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_consumable_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/consumable.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_consumable_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/consumable.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_consumable_py", "target": "sqlalchemy", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/consumable.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_consumable_py", "target": "sqlalchemy_orm", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/consumable.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_consumable_py", "target": "app_core_utils", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/consumable.py", "source_location": "L11", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_consumable_py", "target": "app_models_models", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/consumable.py", "source_location": "L12", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_consumable_py", "target": "crud_consumable_row_to_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/consumable.py", "source_location": "L15", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_consumable_py", "target": "crud_consumable_list_consumables", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/consumable.py", "source_location": "L32", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_consumable_py", "target": "crud_consumable_get_consumable", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/consumable.py", "source_location": "L72", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkLine 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": "L34"}, {"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": "L39"}, {"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": "L43"}, {"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": "L49"}, {"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": "L73"}, {"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": "L107"}, {"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": "L141"}, {"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": "L172"}, {"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": "L253"}, {"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": "L287"}, {"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": "L374"}, {"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": "L436"}, {"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": "L564"}, {"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": "L632"}, {"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": "L808"}, {"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": "L891"}, {"id": "crud_sample_reception_reception_sample_code", "label": "_reception_sample_code()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception.py", "source_location": "L908"}, {"id": "crud_sample_reception_get_receptions_map_for_samples", "label": "get_receptions_map_for_samples()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception.py", "source_location": "L923"}, {"id": "crud_sample_reception_get_receptions_map_for_donation_samples", "label": "get_receptions_map_for_donation_samples()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception.py", "source_location": "L968"}, {"id": "crud_sample_reception_rationale_35", "label": "\u6350\u8d60\u6837\u672c ID \u4e0e biz_sample_reception.donation_sample_id \u6bd4\u8f83\u65f6\u7edf\u4e00\u6392\u5e8f\u89c4\u5219\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception.py", "source_location"Line truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_item_unit_py", "label": "item_unit.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/item_unit.py", "source_location": "L1"}, {"id": "crud_item_unit_row_to_dict", "label": "_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/item_unit.py", "source_location": "L15"}, {"id": "crud_item_unit_list_item_units", "label": "list_item_units()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/item_unit.py", "source_location": "L28"}, {"id": "crud_item_unit_get_item_unit", "label": "get_item_unit()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/item_unit.py", "source_location": "L63"}, {"id": "crud_item_unit_unit_code_exists", "label": "unit_code_exists()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/item_unit.py", "source_location": "L71"}, {"id": "crud_item_unit_create_item_unit", "label": "create_item_unit()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/item_unit.py", "source_location": "L78"}, {"id": "crud_item_unit_update_item_unit", "label": "update_item_unit()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/item_unit.py", "source_location": "L113"}, {"id": "crud_item_unit_soft_delete_item_unit", "label": "soft_delete_item_unit()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/item_unit.py", "source_location": "L147"}, {"id": "crud_item_unit_total_pages", "label": "total_pages()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/item_unit.py", "source_location": "L157"}, {"id": "crud_item_unit_rationale_1", "label": "\u7269\u54c1\u5355\u4f4d CRUD\uff08biz_item_unit\uff09", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/item_unit.py", "source_location": "L1"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_item_unit_py", "target": "math", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/item_unit.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_item_unit_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/item_unit.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_item_unit_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/item_unit.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_item_unit_py", "target": "sqlalchemy", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/item_unit.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_item_unit_py", "target": "sqlalchemy_orm", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/item_unit.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_item_unit_py", "target": "app_core_utils", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/item_unit.py", "source_location": "L11", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_item_unit_py", "target": "app_models_models", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/item_unit.py", "source_location": "L12", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_item_unit_py", "target": "crud_item_unit_row_to_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/item_unit.py", "source_location": "L15", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_item_unit_py", "target": "crud_item_unit_list_item_units", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/item_unit.py", "source_location": "L28", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_item_unit_py", "target": "crud_item_unit_get_item_unit", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/item_unit.py", "source_location": "L63", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_item_unit_py", "target": "crud_item_uLine truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_api_admin_py", "label": "admin.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/admin.py", "source_location": "L1"}, {"id": "api_admin_list_roles_for_select", "label": "list_roles_for_select()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/admin.py", "source_location": "L41"}, {"id": "api_admin_list_users_for_select", "label": "list_users_for_select()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/admin.py", "source_location": "L73"}, {"id": "api_admin_list_roles_for_designer", "label": "list_roles_for_designer()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/admin.py", "source_location": "L88"}, {"id": "api_admin_tenantcreatebody", "label": "TenantCreateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/admin.py", "source_location": "L108"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "api_admin_tenantupdatebody", "label": "TenantUpdateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/admin.py", "source_location": "L119"}, {"id": "api_admin_list_tenants", "label": "list_tenants()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/admin.py", "source_location": "L131"}, {"id": "api_admin_create_tenant", "label": "create_tenant()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/admin.py", "source_location": "L152"}, {"id": "api_admin_update_tenant", "label": "update_tenant()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/admin.py", "source_location": "L174"}, {"id": "api_admin_delete_tenant", "label": "delete_tenant()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/admin.py", "source_location": "L199"}, {"id": "api_admin_get_tenant_no", "label": "_get_tenant_no()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/admin.py", "source_location": "L216"}, {"id": "api_admin_usercreatebody", "label": "UserCreateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/admin.py", "source_location": "L229"}, {"id": "api_admin_userupdatebody", "label": "UserUpdateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/admin.py", "source_location": "L246"}, {"id": "api_admin_list_users", "label": "list_users()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/admin.py", "source_location": "L262"}, {"id": "api_admin_get_user_by_id", "label": "get_user_by_id()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/admin.py", "source_location": "L306"}, {"id": "api_admin_create_user", "label": "create_user()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/admin.py", "source_location": "L322"}, {"id": "api_admin_update_user", "label": "update_user()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/admin.py", "source_location": "L355"}, {"id": "api_admin_delete_user", "label": "delete_user()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/admin.py", "source_location": "L385"}, {"id": "api_admin_reset_user_password", "label": "reset_user_password()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/admin.py", "source_location": "L398"}, {"id": "api_admin_dicttypecreatebody", "label": "DictTypeCreateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/admin.py", "source_location": "L415"}, {"id": "api_admin_dicttypeupdatebody", "label": "DictTypeUpdateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/admin.py", "source_location": "L424"}, {"id": "api_admin_list_dict_types", "label": "list_dict_types()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/admin.py", "source_location": "L434"}, {"id": "api_admin_create_dict_type", "label": "create_dict_type()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/admin.py", "source_location": "L450"}, {"id": "api_admin_update_dict_type", "label": "update_dict_type()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/admin.py", "source_location": "L472"}, {"id": "api_admin_delete_dict_type", "label": "delete_dict_type()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/admin.py", "source_location": "L497"}, {"id": "api_admin_dictdatacreatebody", "label": "DictDataCreateBody", "file_type": "code", "sLine 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_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": "L15"}, {"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": "L41"}, {"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": "L86"}, {"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": "L100"}, {"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": "L150"}, {"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": "L192"}, {"id": "crud_cell_product_total_pages", "label": "total_pages()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/cell_product.py", "source_location": "L208"}, {"id": "crud_cell_product_rationale_1", "label": "\u7ec6\u80de\u4ea7\u54c1 CRUD\uff08biz_cell_product\uff09", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/cell_product.py", "source_location": "L1"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_cell_product_py", "target": "math", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/cell_product.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_cell_product_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/cell_product.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_cell_product_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/cell_product.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_cell_product_py", "target": "sqlalchemy", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/cell_product.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_cell_product_py", "target": "sqlalchemy_orm", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/cell_product.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_cell_product_py", "target": "app_core_utils", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/cell_product.py", "source_location": "L11", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_cell_product_py", "target": "app_models_models", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/cell_product.py", "source_location": "L12", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_cell_product_py", "target": "crud_cell_product_row_to_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/cell_product.py", "source_location": "L15", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_cell_product_py", "target": "crud_cell_product_list_cell_products", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/cell_product.py", "source_location": "L41", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_cell_product_py", "target": "crud_cell_product_get_cell_product", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/cell_product.py", "source_location": "L86", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_cell_product_py", "target": "crud_cell_product_create_cell_product", "relation": "cLine truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_material_py", "label": "qc_material.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material.py", "source_location": "L1"}, {"id": "crud_qc_material_dec", "label": "_dec()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material.py", "source_location": "L15"}, {"id": "crud_qc_material_fmt_dt", "label": "_fmt_dt()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material.py", "source_location": "L21"}, {"id": "crud_qc_material_row_to_dict", "label": "_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material.py", "source_location": "L25"}, {"id": "crud_qc_material_code_exists", "label": "code_exists()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material.py", "source_location": "L42"}, {"id": "crud_qc_material_total_pages", "label": "total_pages()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material.py", "source_location": "L58"}, {"id": "crud_qc_material_list_materials", "label": "list_materials()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material.py", "source_location": "L72"}, {"id": "crud_qc_material_get_material", "label": "get_material()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material.py", "source_location": "L116"}, {"id": "crud_qc_material_create_material", "label": "create_material()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material.py", "source_location": "L127"}, {"id": "crud_qc_material_update_material", "label": "update_material()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material.py", "source_location": "L179"}, {"id": "crud_qc_material_soft_delete_material", "label": "soft_delete_material()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material.py", "source_location": "L232"}, {"id": "crud_qc_material_stock_in", "label": "stock_in()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material.py", "source_location": "L244"}, {"id": "crud_qc_material_options_list", "label": "options_list()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material.py", "source_location": "L295"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_material_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_material_py", "target": "decimal", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_material_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_material_py", "target": "sqlalchemy", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_material_py", "target": "sqlalchemy_orm", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_material_py", "target": "app_core_utils", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material.py", "source_location": "L11", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_material_py", "target": "app_models_models", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material.py", "source_location": "L12", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_material_py", "target": "crud_qc_material_dec", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material.py", "source_location": "L15", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_material_py", "target": "crud_qc_material_fmt_Line truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_production_work_order_py", "label": "production_work_order.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_work_order.py", "source_location": "L1"}, {"id": "crud_production_work_order_fmt_dt", "label": "_fmt_dt()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_work_order.py", "source_location": "L33"}, {"id": "crud_production_work_order_generate_work_order_no", "label": "_generate_work_order_no()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_work_order.py", "source_location": "L37"}, {"id": "crud_production_work_order_wo_to_dict", "label": "_wo_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_work_order.py", "source_location": "L56"}, {"id": "crud_production_work_order_create_production_work_order_from_reception", "label": "create_production_work_order_from_reception()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_work_order.py", "source_location": "L78"}, {"id": "crud_production_work_order_list_production_work_orders", "label": "list_production_work_orders()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_work_order.py", "source_location": "L189"}, {"id": "crud_production_work_order_get_production_work_order", "label": "get_production_work_order()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_work_order.py", "source_location": "L236"}, {"id": "crud_production_work_order_complete_production_work_order", "label": "complete_production_work_order()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_work_order.py", "source_location": "L250"}, {"id": "crud_production_work_order_rationale_85", "label": "\u63a5\u6536\u7ed3\u8bba\u4e3a js \u65f6\u521b\u5efa\u5f85\u914d\u7f6e\u5165\u5e93\u751f\u4ea7\u5de5\u5355\uff08flush\uff0c\u4e0d commit\uff09\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_work_order.py", "source_location": "L85"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_production_work_order_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_work_order.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_production_work_order_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_work_order.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_production_work_order_py", "target": "sqlalchemy", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_work_order.py", "source_location": "L7", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_production_work_order_py", "target": "sqlalchemy_orm", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_work_order.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_production_work_order_py", "target": "app_core_utils", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_work_order.py", "source_location": "L10", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_production_work_order_py", "target": "app_models_models", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_work_order.py", "source_location": "L11", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_production_work_order_py", "target": "app_models_research_donation", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_work_order.py", "source_location": "L17", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_production_work_order_py", "target": "app_schemas_production_work_order", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_work_order.py", "source_location": "L18", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_production_work_order_py", "target": "crud_production_work_order_fmt_dt", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/UserLine truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_role_py", "label": "role.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/role.py", "source_location": "L1"}, {"id": "crud_role_row_to_dict", "label": "_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/role.py", "source_location": "L20"}, {"id": "crud_role_total_pages", "label": "total_pages()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/role.py", "source_location": "L34"}, {"id": "crud_role_list_roles", "label": "list_roles()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/role.py", "source_location": "L45"}, {"id": "crud_role_get_role", "label": "get_role()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/role.py", "source_location": "L80"}, {"id": "crud_role_role_name_exists", "label": "role_name_exists()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/role.py", "source_location": "L88"}, {"id": "crud_role_create_role", "label": "create_role()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/role.py", "source_location": "L102"}, {"id": "crud_role_update_role", "label": "update_role()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/role.py", "source_location": "L139"}, {"id": "crud_role_soft_delete_role", "label": "soft_delete_role()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/role.py", "source_location": "L176"}, {"id": "crud_role_get_role_menu_ids", "label": "get_role_menu_ids()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/role.py", "source_location": "L198"}, {"id": "crud_role_update_role_menus", "label": "update_role_menus()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/role.py", "source_location": "L207"}, {"id": "crud_role_get_role_data_scope", "label": "get_role_data_scope()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/role.py", "source_location": "L242"}, {"id": "crud_role_update_role_data_scope", "label": "update_role_data_scope()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/role.py", "source_location": "L251"}, {"id": "crud_role_rationale_1", "label": "\u89d2\u8272 CRUD\uff08sys_role / sys_role_menu / sys_role_data_scope_detail\uff09", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/role.py", "source_location": "L1"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_role_py", "target": "math", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/role.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_role_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/role.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_role_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/role.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_role_py", "target": "sqlalchemy", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/role.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_role_py", "target": "sqlalchemy_orm", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/role.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_role_py", "target": "app_core_utils", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/role.py", "source_location": "L11", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_role_py", "target": "app_models_models", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/role.py", "source_location": "L12", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_role_py", "target": "crud_role_row_to_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/role.py", "source_location": "L20", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_role_py", "target": "crud_role_total_pageLine truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_api_leave_py", "label": "leave.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/leave.py", "source_location": "L1"}, {"id": "api_leave_leave_local_callback", "label": "_leave_local_callback()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/leave.py", "source_location": "L24"}, {"id": "api_leave_list_leaves", "label": "list_leaves()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/leave.py", "source_location": "L39"}, {"id": "api_leave_create_leave", "label": "create_leave()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/leave.py", "source_location": "L62"}, {"id": "api_leave_submit_leave", "label": "submit_leave()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/leave.py", "source_location": "L87"}, {"id": "api_leave_leave_workflow_callback", "label": "leave_workflow_callback()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/leave.py", "source_location": "L142"}, {"id": "api_leave_get_leave", "label": "get_leave()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/leave.py", "source_location": "L161"}, {"id": "api_leave_delete_leave", "label": "delete_leave()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/leave.py", "source_location": "L174"}, {"id": "api_leave_update_leave", "label": "update_leave()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/leave.py", "source_location": "L191"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_api_leave_py", "target": "logging", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/leave.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_leave_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/leave.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_leave_py", "target": "fastapi", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/leave.py", "source_location": "L7", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_leave_py", "target": "sqlalchemy_orm", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/leave.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_leave_py", "target": "app_core_menu_guard", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/leave.py", "source_location": "L10", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_leave_py", "target": "app_core_database", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/leave.py", "source_location": "L11", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_leave_py", "target": "app_core_response", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/leave.py", "source_location": "L12", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_leave_py", "target": "app_crud", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/leave.py", "source_location": "L13", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_leave_py", "target": "app_crud_leave", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/leave.py", "source_location": "L14", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_leave_py", "target": "app_schemas_leave", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/leave.py", "source_location": "L15", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_leave_py", "target": "api_leave_leave_local_callback", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/leave.py", "source_location": "L24", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_leave_py", "target": "app_services_workflow_callback", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/leave.py", "source_location": "L34", "weighLine truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_storage_facility_py", "label": "storage_facility.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L1"}, {"id": "crud_storage_facility_row_to_dict", "label": "_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L19"}, {"id": "crud_storage_facility_list_all_facilities", "label": "list_all_facilities()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L34"}, {"id": "crud_storage_facility_get_facility", "label": "get_facility()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L52"}, {"id": "crud_storage_facility_get_children", "label": "get_children()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L61"}, {"id": "crud_storage_facility_collect_descendant_ids", "label": "collect_descendant_ids()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L77"}, {"id": "crud_storage_facility_create_facility", "label": "create_facility()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L90"}, {"id": "crud_storage_facility_update_facility", "label": "update_facility()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L127"}, {"id": "crud_storage_facility_soft_delete_facility", "label": "soft_delete_facility()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L163"}, {"id": "crud_storage_facility_slot_to_dict", "label": "_slot_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L189"}, {"id": "crud_storage_facility_list_slots", "label": "list_slots()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L203"}, {"id": "crud_storage_facility_get_slot", "label": "get_slot()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L221"}, {"id": "crud_storage_facility_create_slot", "label": "create_slot()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L230"}, {"id": "crud_storage_facility_update_slot", "label": "update_slot()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L265"}, {"id": "crud_storage_facility_soft_delete_slot", "label": "soft_delete_slot()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L295"}, {"id": "crud_storage_facility_clear_slots_by_facility_node", "label": "clear_slots_by_facility_node()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L305"}, {"id": "crud_storage_facility_batch_create_slots", "label": "batch_create_slots()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L337"}, {"id": "crud_storage_facility_rationale_1", "label": "\u5b58\u50a8\u8bbe\u65bd\uff08\u6811\u7ed3\u6784\uff09+ \u5c0f\u683c CRUD\uff08biz_storage_facility / biz_storage_facility_slot\uff09", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L1"}, {"id": "crud_storage_facility_rationale_40", "label": "Return FLAT list of all non-deleted facility nodes (no pagination, no tree build", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L40"}, {"id": "crud_storage_facility_rationale_62", "label": "Direct children of a node.", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L62"}, {"id": "crud_storage_facility_rationale_78", "label": "Iteratively collect ALL descendant node IDs (stack-based, no recursion).", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L78"}, {"id": "crud_storage_facility_rationale_164", "label": "Cascade soft-delete: node + all descendants + their slots.", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/aLine truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_item_param_py", "label": "qc_item_param.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_item_param.py", "source_location": "L1"}, {"id": "crud_qc_item_param_row_to_dict", "label": "_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_item_param.py", "source_location": "L12"}, {"id": "crud_qc_item_param_list_params_by_item", "label": "list_params_by_item()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_item_param.py", "source_location": "L24"}, {"id": "crud_qc_item_param_save_params_for_item", "label": "save_params_for_item()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_item_param.py", "source_location": "L40"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_item_param_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_item_param.py", "source_location": "L3", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_item_param_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_item_param.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_item_param_py", "target": "sqlalchemy_orm", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_item_param.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_item_param_py", "target": "app_core_utils", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_item_param.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_item_param_py", "target": "app_models_qc_param", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_item_param.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_item_param_py", "target": "crud_qc_item_param_row_to_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_item_param.py", "source_location": "L12", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_item_param_py", "target": "crud_qc_item_param_list_params_by_item", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_item_param.py", "source_location": "L24", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_item_param_py", "target": "crud_qc_item_param_save_params_for_item", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_item_param.py", "source_location": "L40", "weight": 1.0}, {"source": "crud_qc_item_param_list_params_by_item", "target": "crud_qc_item_param_row_to_dict", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_item_param.py", "source_location": "L37", "weight": 1.0}, {"source": "crud_qc_item_param_save_params_for_item", "target": "crud_qc_item_param_list_params_by_item", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_item_param.py", "source_location": "L82", "weight": 1.0}], "raw_calls": [{"caller_nid": "crud_qc_item_param_list_params_by_item", "callee": "filter", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_item_param.py", "source_location": "L27"}, {"caller_nid": "crud_qc_item_param_list_params_by_item", "callee": "query", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_item_param.py", "source_location": "L27"}, {"caller_nid": "crud_qc_item_param_list_params_by_item", "callee": "apply_data_scope", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_item_param.py", "source_location": "L35"}, {"caller_nid": "crud_qc_item_param_list_params_by_item", "callee": "all", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_item_param.py", "source_location": "L36"}, {"caller_nid": "crud_qc_item_param_list_params_by_item", "callee": "order_by", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_item_param.py", "source_location": "L36"}, {"caller_nid": "crud_qc_item_param_list_params_by_item", "callee": "asc", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_item_param.py", "source_location": "L36"}, {"caller_nid": "crud_qc_item_param_saveLine truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_dict_type_py", "label": "dict_type.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_type.py", "source_location": "L1"}, {"id": "crud_dict_type_row_to_dict", "label": "_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_type.py", "source_location": "L15"}, {"id": "crud_dict_type_list_dict_types", "label": "list_dict_types()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_type.py", "source_location": "L28"}, {"id": "crud_dict_type_get_dict_type", "label": "get_dict_type()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_type.py", "source_location": "L63"}, {"id": "crud_dict_type_dict_type_code_exists", "label": "dict_type_code_exists()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_type.py", "source_location": "L71"}, {"id": "crud_dict_type_create_dict_type", "label": "create_dict_type()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_type.py", "source_location": "L82"}, {"id": "crud_dict_type_update_dict_type", "label": "update_dict_type()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_type.py", "source_location": "L117"}, {"id": "crud_dict_type_soft_delete_dict_type", "label": "soft_delete_dict_type()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_type.py", "source_location": "L153"}, {"id": "crud_dict_type_total_pages", "label": "total_pages()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_type.py", "source_location": "L166"}, {"id": "crud_dict_type_rationale_1", "label": "\u5b57\u5178\u7c7b\u578b CRUD\uff08sys_dict_type\uff09", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_type.py", "source_location": "L1"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_dict_type_py", "target": "math", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_type.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_dict_type_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_type.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_dict_type_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_type.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_dict_type_py", "target": "sqlalchemy", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_type.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_dict_type_py", "target": "sqlalchemy_orm", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_type.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_dict_type_py", "target": "app_core_utils", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_type.py", "source_location": "L11", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_dict_type_py", "target": "app_models_models", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_type.py", "source_location": "L12", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_dict_type_py", "target": "crud_dict_type_row_to_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_type.py", "source_location": "L15", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_dict_type_py", "target": "crud_dict_type_list_dict_types", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_type.py", "source_location": "L28", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_dict_type_py", "target": "crud_dict_type_get_dict_type", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_type.py", "source_location": "L63", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_dict_type_py", "target": "cLine truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_third_party_item_py", "label": "qc_third_party_item.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_third_party_item.py", "source_location": "L1"}, {"id": "crud_qc_third_party_item_dec", "label": "_dec()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_third_party_item.py", "source_location": "L16"}, {"id": "crud_qc_third_party_item_row_to_dict", "label": "_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_third_party_item.py", "source_location": "L22"}, {"id": "crud_qc_third_party_item_item_code_exists", "label": "item_code_exists()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_third_party_item.py", "source_location": "L38"}, {"id": "crud_qc_third_party_item_company_name_map", "label": "_company_name_map()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_third_party_item.py", "source_location": "L59"}, {"id": "crud_qc_third_party_item_list_items", "label": "list_items()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_third_party_item.py", "source_location": "L70"}, {"id": "crud_qc_third_party_item_list_active_items", "label": "list_active_items()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_third_party_item.py", "source_location": "L119"}, {"id": "crud_qc_third_party_item_get_item", "label": "get_item()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_third_party_item.py", "source_location": "L139"}, {"id": "crud_qc_third_party_item_create_item", "label": "create_item()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_third_party_item.py", "source_location": "L150"}, {"id": "crud_qc_third_party_item_update_item", "label": "update_item()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_third_party_item.py", "source_location": "L202"}, {"id": "crud_qc_third_party_item_soft_delete_item", "label": "soft_delete_item()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_third_party_item.py", "source_location": "L256"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_third_party_item_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_third_party_item.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_third_party_item_py", "target": "decimal", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_third_party_item.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_third_party_item_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_third_party_item.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_third_party_item_py", "target": "sqlalchemy", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_third_party_item.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_third_party_item_py", "target": "sqlalchemy_orm", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_third_party_item.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_third_party_item_py", "target": "app_core_utils", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_third_party_item.py", "source_location": "L11", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_third_party_item_py", "target": "app_crud_qc_third_party_company", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_third_party_item.py", "source_location": "L12", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_third_party_item_py", "target": "app_models_models", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_third_party_item.py", "source_location": "L13", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_third_party_item_py", "target": "crud_qc_third_party_item_dec", "relation": "contains", "confidence": "EXTLine truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_storage_facility_py", "label": "storage_facility.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L1"}, {"id": "crud_storage_facility_row_to_dict", "label": "_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L20"}, {"id": "crud_storage_facility_list_all_facilities", "label": "list_all_facilities()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L35"}, {"id": "crud_storage_facility_get_facility", "label": "get_facility()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L53"}, {"id": "crud_storage_facility_get_children", "label": "get_children()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L62"}, {"id": "crud_storage_facility_collect_descendant_ids", "label": "collect_descendant_ids()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L78"}, {"id": "crud_storage_facility_create_facility", "label": "create_facility()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L91"}, {"id": "crud_storage_facility_update_facility", "label": "update_facility()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L128"}, {"id": "crud_storage_facility_soft_delete_facility", "label": "soft_delete_facility()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L164"}, {"id": "crud_storage_facility_slot_to_dict", "label": "_slot_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L190"}, {"id": "crud_storage_facility_list_slots", "label": "list_slots()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L204"}, {"id": "crud_storage_facility_get_slot", "label": "get_slot()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L222"}, {"id": "crud_storage_facility_create_slot", "label": "create_slot()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L231"}, {"id": "crud_storage_facility_update_slot", "label": "update_slot()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L266"}, {"id": "crud_storage_facility_soft_delete_slot", "label": "soft_delete_slot()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L296"}, {"id": "crud_storage_facility_clear_slots_by_facility_node", "label": "clear_slots_by_facility_node()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L306"}, {"id": "crud_storage_facility_batch_create_slots", "label": "batch_create_slots()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L338"}, {"id": "crud_storage_facility_insert_row_and_shift_slots", "label": "insert_row_and_shift_slots()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L392"}, {"id": "crud_storage_facility_rationale_1", "label": "\u5b58\u50a8\u8bbe\u65bd\uff08\u6811\u7ed3\u6784\uff09+ \u5c0f\u683c CRUD\uff08biz_storage_facility / biz_storage_facility_slot\uff09", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L1"}, {"id": "crud_storage_facility_rationale_41", "label": "Return FLAT list of all non-deleted facility nodes (no pagination, no tree build", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L41"}, {"id": "crud_storage_facility_rationale_63", "label": "Direct children of a node.", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facility.py", "source_location": "L63"}, {"id": "crud_storage_facility_rationale_79", "label": "Iteratively collect ALL descendant node IDs (stack-based, no recursion).", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/storage_facilLine 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": "L51"}, {"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": "L57"}, {"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": "L61"}, {"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": "L69"}, {"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": "L81"}, {"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": "L92"}, {"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": "L108"}, {"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": "L126"}, {"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": "L139"}, {"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": "L173"}, {"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": "L195"}, {"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": "L227"}, {"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": "L245"}, {"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": "L268"}, {"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": "L293"}, {"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": "L309"}, {"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": "L325"}, {"id": "crud_research_donation_list_sample_transports", "label": "list_sample_transports()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L345"}, {"id": "crud_research_donation_list_donations", "label": "list_donations()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L370"}, {"id": "crud_research_donation_get_donation_detail", "label": "get_donation_detail()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L536"}, {"id": "crud_research_donation_create_donation", "label": "create_donation()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L630"}, {"id": "crud_research_donation_update_donation", "label": "update_donation()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/researcLine truncated
|
||||
Loaded 100 of 241 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user