diff --git a/backend/app.pid b/backend/app.pid index 70b29fe95..11a7a796e 100644 --- a/backend/app.pid +++ b/backend/app.pid @@ -1 +1 @@ -85220 +35826 diff --git a/backend/app/api/__init__.py b/backend/app/api/__init__.py index b731f8161..8e3337b19 100644 --- a/backend/app/api/__init__.py +++ b/backend/app/api/__init__.py @@ -6,6 +6,7 @@ from app.api.workflow import router as workflow_router from app.api.leave import router as leave_router from app.api.crm import router as crm_router from app.api.monitor import router as monitor_router +from app.api.bx import bx_router __all__ = [ "public_router", @@ -15,4 +16,5 @@ __all__ = [ "leave_router", "crm_router", "monitor_router", + "bx_router", ] diff --git a/backend/app/api/bx/__init__.py b/backend/app/api/bx/__init__.py new file mode 100644 index 000000000..4139197f8 --- /dev/null +++ b/backend/app/api/bx/__init__.py @@ -0,0 +1,19 @@ +"""报销(bx)API 路由聚合 — REST 风格,协议对齐 bx 原系统。""" +from fastapi import APIRouter + +from app.api.bx import advance, attachment, expense_item, payment, reimburse, workflow +from app.schemas.bx.common import ApiResponse + +bx_router = APIRouter(tags=["报销管理"]) +bx_router.include_router(expense_item.router) +bx_router.include_router(workflow.router) +bx_router.include_router(advance.router) +bx_router.include_router(attachment.router) +bx_router.include_router(reimburse.router) +bx_router.include_router(payment.router) + + +@bx_router.get("/bx/health", response_model=ApiResponse[dict]) +def bx_health(): + """P0 健康检查:验证 bx 路由已挂载且响应协议为 code=0。""" + return ApiResponse(data={"status": "ok", "module": "bx"}) diff --git a/backend/app/api/bx/advance.py b/backend/app/api/bx/advance.py new file mode 100644 index 000000000..9692b0449 --- /dev/null +++ b/backend/app/api/bx/advance.py @@ -0,0 +1,345 @@ +from typing import List, Optional + +from fastapi import APIRouter, Depends, HTTPException, status +from sqlalchemy import or_ +from sqlalchemy.orm import Session + +from app.core.bx_auth import BxUserContext, get_bx_current_user +from app.core.database import get_db +from app.core.tenant_context import get_tenant_no +from app.models.bx_models import BxAdvanceApply, BxWorkflowDef +from app.schemas.bx.advance import ( + AdvanceApplyCreate, + AdvanceApplyOut, + AdvanceApplyUpdate, + AdvanceApprovalCreate, + AdvanceApprovalOut, + AdvanceApproverPendingStatsOut, + AdvanceMyStatsOut, +) +from app.schemas.bx.common import ApiResponse, PagedData +from app.services.bx.advance import AdvanceService +from app.services.bx.expense_item import ExpenseItemService +from app.utils.bx_codegen import generate_apply_code +from app.utils.bx_date_range import parse_create_time_day_bounds + +router = APIRouter(prefix="/advances", tags=["备用金管理"]) + + +def _tenant(db: Session, user: BxUserContext) -> str: + return get_tenant_no(db, user.to_tenant_user_dict()) + + +def _fill_offset_amounts(db: Session, tenant_no: str, rows, out_rows: List[AdvanceApplyOut]) -> None: + if not out_rows: + return + offset_map = AdvanceService.offset_amount_map(db, tenant_no, [r.id for r in rows]) + for out_row in out_rows: + out_row.offset_amount = offset_map.get(out_row.id, 0.0) + + +@router.get("/", response_model=ApiResponse[PagedData[AdvanceApplyOut]]) +def list_advances( + page: int = 1, + pageSize: int = 10, + status: Optional[str] = None, + keyword: str = "", + applicantId: Optional[str] = None, + applyDate: Optional[str] = None, + db: Session = Depends(get_db), + user: BxUserContext = Depends(get_bx_current_user), +): + tenant_no = _tenant(db, user) + filters = [] + if status: + filters.append(BxAdvanceApply.status == status) + if keyword: + filters.append( + or_( + BxAdvanceApply.apply_code.contains(keyword), + BxAdvanceApply.applicant_name.contains(keyword), + ) + ) + if applicantId: + filters.append(BxAdvanceApply.applicant_id == str(applicantId).strip()) + bounds = parse_create_time_day_bounds(applyDate) + if bounds: + d0, d1 = bounds + filters.append(BxAdvanceApply.create_time >= d0) + filters.append(BxAdvanceApply.create_time < d1) + rows, total = AdvanceService.get_paged(db, tenant_no, page=page, page_size=pageSize, filters=filters) + out_rows = [AdvanceApplyOut.model_validate(r) for r in rows] + _fill_offset_amounts(db, tenant_no, rows, out_rows) + return ApiResponse(data=PagedData(rows=out_rows, total=total, page=page, page_size=pageSize)) + + +@router.get("/my", response_model=ApiResponse[PagedData[AdvanceApplyOut]]) +def my_advances( + page: int = 1, + pageSize: int = 10, + status: Optional[str] = None, + keyword: str = "", + applyDate: Optional[str] = None, + db: Session = Depends(get_db), + user: BxUserContext = Depends(get_bx_current_user), +): + tenant_no = _tenant(db, user) + filters = [ + or_( + BxAdvanceApply.applicant_id == user.id, + BxAdvanceApply.create_by == user.id, + ) + ] + if status: + filters.append(BxAdvanceApply.status == status) + if keyword: + filters.append( + or_( + BxAdvanceApply.apply_code.contains(keyword), + BxAdvanceApply.applicant_name.contains(keyword), + ) + ) + bounds = parse_create_time_day_bounds(applyDate) + if bounds: + d0, d1 = bounds + filters.append(BxAdvanceApply.create_time >= d0) + filters.append(BxAdvanceApply.create_time < d1) + rows, total = AdvanceService.get_paged(db, tenant_no, page=page, page_size=pageSize, filters=filters) + out_rows = [AdvanceApplyOut.model_validate(r) for r in rows] + _fill_offset_amounts(db, tenant_no, rows, out_rows) + return ApiResponse(data=PagedData(rows=out_rows, total=total, page=page, page_size=pageSize)) + + +@router.get("/my/stats", response_model=ApiResponse[AdvanceMyStatsOut]) +def my_advance_stats( + db: Session = Depends(get_db), + user: BxUserContext = Depends(get_bx_current_user), +): + tenant_no = _tenant(db, user) + data = AdvanceService.my_apply_stats(db, user.id, tenant_no) + return ApiResponse(data=AdvanceMyStatsOut.model_validate(data)) + + +@router.get("/stats/status-counts", response_model=ApiResponse[dict]) +def advance_status_counts( + db: Session = Depends(get_db), + user: BxUserContext = Depends(get_bx_current_user), +): + tenant_no = _tenant(db, user) + return ApiResponse(data=AdvanceService.global_status_counts(db, tenant_no)) + + +@router.get("/pending-approval", response_model=ApiResponse[PagedData[AdvanceApplyOut]]) +def pending_approval( + page: int = 1, + pageSize: int = 10, + keyword: str = "", + applicantId: Optional[str] = None, + applyDate: Optional[str] = None, + db: Session = Depends(get_db), + user: BxUserContext = Depends(get_bx_current_user), +): + tenant_no = _tenant(db, user) + applicant_id = str(applicantId).strip() if applicantId else None + rows, total = AdvanceService.pending_approval( + db, + user, + tenant_no, + page=page, + page_size=pageSize, + keyword=keyword, + applicant_id=applicant_id, + apply_date=applyDate, + ) + out_rows = [AdvanceApplyOut.model_validate(r) for r in rows] + return ApiResponse(data=PagedData(rows=out_rows, total=total, page=page, page_size=pageSize)) + + +@router.get("/pending-approval/stats", response_model=ApiResponse[AdvanceApproverPendingStatsOut]) +def advance_pending_approval_stats( + db: Session = Depends(get_db), + user: BxUserContext = Depends(get_bx_current_user), +): + tenant_no = _tenant(db, user) + data = AdvanceService.pending_approval_stats(db, user, tenant_no) + return ApiResponse(data=AdvanceApproverPendingStatsOut.model_validate(data)) + + +@router.get("/approved-by-me", response_model=ApiResponse[PagedData[AdvanceApplyOut]]) +def approved_by_me( + page: int = 1, + pageSize: int = 10, + keyword: str = "", + applicantId: Optional[str] = None, + applyDate: Optional[str] = None, + db: Session = Depends(get_db), + user: BxUserContext = Depends(get_bx_current_user), +): + tenant_no = _tenant(db, user) + applicant_id = str(applicantId).strip() if applicantId else None + rows, total = AdvanceService.approved_by_me( + db, + user, + tenant_no, + page=page, + page_size=pageSize, + keyword=keyword, + applicant_id=applicant_id, + apply_date=applyDate, + ) + out_rows = [AdvanceApplyOut.model_validate(r) for r in rows] + return ApiResponse(data=PagedData(rows=out_rows, total=total, page=page, page_size=pageSize)) + + +@router.get("/{advance_id}", response_model=ApiResponse[AdvanceApplyOut]) +def get_advance( + advance_id: str, + db: Session = Depends(get_db), + user: BxUserContext = Depends(get_bx_current_user), +): + tenant_no = _tenant(db, user) + advance = AdvanceService.get_by_id(db, advance_id, tenant_no) + if not advance: + raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="备用金申请不存在") + out = AdvanceApplyOut.model_validate(advance) + offset_map = AdvanceService.offset_amount_map(db, tenant_no, [advance_id]) + out.offset_amount = offset_map.get(advance_id, 0.0) + return ApiResponse(data=out) + + +@router.get("/{advance_id}/approvals", response_model=ApiResponse[List[AdvanceApprovalOut]]) +def get_approvals( + advance_id: str, + db: Session = Depends(get_db), + user: BxUserContext = Depends(get_bx_current_user), +): + tenant_no = _tenant(db, user) + if not AdvanceService.get_by_id(db, advance_id, tenant_no): + raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="备用金申请不存在") + approvals = AdvanceService.get_approvals(db, advance_id, tenant_no) + return ApiResponse(data=[AdvanceApprovalOut.model_validate(a) for a in approvals]) + + +@router.get("/{advance_id}/approval-history", response_model=ApiResponse[List[AdvanceApprovalOut]]) +def get_approval_history( + advance_id: str, + db: Session = Depends(get_db), + user: BxUserContext = Depends(get_bx_current_user), +): + tenant_no = _tenant(db, user) + if not AdvanceService.get_by_id(db, advance_id, tenant_no): + raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="备用金申请不存在") + history = AdvanceService.get_approval_history(db, advance_id, tenant_no) + return ApiResponse(data=[AdvanceApprovalOut.model_validate(a) for a in history]) + + +@router.post("/", response_model=ApiResponse[AdvanceApplyOut]) +def create_advance( + body: AdvanceApplyCreate, + db: Session = Depends(get_db), + user: BxUserContext = Depends(get_bx_current_user), +): + tenant_no = _tenant(db, user) + data = body.model_dump(exclude_unset=True) + eid = data.get("expense_item_id") + if eid: + if not ExpenseItemService.get_by_id(db, eid, tenant_no): + raise HTTPException(status_code=status.HTTP_400_BAD_REQUEST, detail=f"费用项目 {eid} 不存在") + data["applicant_id"] = user.id + data["applicant_name"] = user.name + data["apply_code"] = generate_apply_code(db, "BYJ", tenant_no) + data["status"] = "draft" + wf = ( + db.query(BxWorkflowDef) + .filter( + BxWorkflowDef.biz_type == "advance", + BxWorkflowDef.tenant_no == tenant_no, + BxWorkflowDef.del_flag == 0, + ) + .first() + ) + if wf: + data["wf_id"] = wf.id + advance = AdvanceService.create(db, data, user=user) + db.commit() + db.refresh(advance) + return ApiResponse(data=AdvanceApplyOut.model_validate(advance)) + + +@router.put("/{advance_id}", response_model=ApiResponse[AdvanceApplyOut]) +def update_advance( + advance_id: str, + body: AdvanceApplyUpdate, + db: Session = Depends(get_db), + user: BxUserContext = Depends(get_bx_current_user), +): + tenant_no = _tenant(db, user) + data = body.model_dump(exclude_unset=True) + if data.get("expense_item_id"): + eid = data["expense_item_id"] + if not ExpenseItemService.get_by_id(db, eid, tenant_no): + raise HTTPException(status_code=status.HTTP_400_BAD_REQUEST, detail=f"费用项目 {eid} 不存在") + advance = AdvanceService.update(db, advance_id, data, user=user) + if not advance: + raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="备用金申请不存在") + db.commit() + db.refresh(advance) + return ApiResponse(data=AdvanceApplyOut.model_validate(advance)) + + +@router.post("/{advance_id}/submit", response_model=ApiResponse[AdvanceApplyOut]) +def submit_advance( + advance_id: str, + db: Session = Depends(get_db), + user: BxUserContext = Depends(get_bx_current_user), +): + advance = AdvanceService.submit(db, advance_id, user) + if not advance: + raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="备用金申请不存在") + db.commit() + db.refresh(advance) + return ApiResponse(data=AdvanceApplyOut.model_validate(advance)) + + +@router.post("/{advance_id}/approve", response_model=ApiResponse[AdvanceApplyOut]) +def approve_advance( + advance_id: str, + body: AdvanceApprovalCreate, + db: Session = Depends(get_db), + user: BxUserContext = Depends(get_bx_current_user), +): + advance = AdvanceService.approve(db, advance_id, user, body.approval_opinion or "") + if not advance: + raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="备用金申请不存在或无权审批") + db.commit() + db.refresh(advance) + return ApiResponse(data=AdvanceApplyOut.model_validate(advance)) + + +@router.post("/{advance_id}/reject", response_model=ApiResponse[AdvanceApplyOut]) +def reject_advance( + advance_id: str, + body: AdvanceApprovalCreate, + db: Session = Depends(get_db), + user: BxUserContext = Depends(get_bx_current_user), +): + advance = AdvanceService.reject(db, advance_id, user, body.approval_opinion or "") + if not advance: + raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="备用金申请不存在或无权审批") + db.commit() + db.refresh(advance) + return ApiResponse(data=AdvanceApplyOut.model_validate(advance)) + + +@router.delete("/{advance_id}", response_model=ApiResponse[None]) +def delete_advance( + advance_id: str, + db: Session = Depends(get_db), + user: BxUserContext = Depends(get_bx_current_user), +): + tenant_no = _tenant(db, user) + if not AdvanceService.get_by_id(db, advance_id, tenant_no): + raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="备用金申请不存在") + AdvanceService.soft_delete(db, advance_id, user=user) + db.commit() + return ApiResponse(data=None) diff --git a/backend/app/api/bx/attachment.py b/backend/app/api/bx/attachment.py new file mode 100644 index 000000000..16e7b6cbb --- /dev/null +++ b/backend/app/api/bx/attachment.py @@ -0,0 +1,151 @@ +import mimetypes +from typing import List +from urllib.parse import quote + +from fastapi import APIRouter, Depends, File, HTTPException, Query, UploadFile, status +from fastapi.responses import StreamingResponse +from sqlalchemy.orm import Session + +from app.core.bx_auth import BxUserContext, get_bx_current_user +from app.core.database import get_db +from app.core.tenant_context import get_tenant_no +from app.schemas.bx.attachment import AttachmentOut +from app.schemas.bx.common import ApiResponse +from app.services.bx.attachment import AttachmentService +from app.services.bx.storage import ( + download_file_bytes, + get_preview_url, + upload_bx_file, +) + +router = APIRouter(prefix="/attachments", tags=["附件管理"]) + + +def _tenant(db: Session, user: BxUserContext) -> str: + return get_tenant_no(db, user.to_tenant_user_dict()) + + +def _parse_id_list(ids: str) -> List[str]: + return [x.strip() for x in (ids or "").split(",") if x.strip()] + + +@router.post("/upload", response_model=ApiResponse[AttachmentOut]) +async def upload_file( + file: UploadFile = File(...), + biz_type: str = "", + biz_id: str = "0", + db: Session = Depends(get_db), + user: BxUserContext = Depends(get_bx_current_user), +): + if not file or not file.filename: + raise HTTPException(status_code=status.HTTP_400_BAD_REQUEST, detail="请选择文件") + file_data = await file.read() + content_type = ( + file.content_type + or mimetypes.guess_type(file.filename or "")[0] + or "application/octet-stream" + ) + relative_path, _full_url = upload_bx_file( + file_data, file.filename or "unknown", biz_type=biz_type or "attachment" + ) + biz_id_value = str(biz_id).strip() if biz_id else "0" + data = { + "biz_type": biz_type or "", + "biz_id": biz_id_value or "0", + "file_name": file.filename or "unknown", + "file_path": relative_path, + "file_type": content_type, + "file_size": len(file_data), + } + attachment = AttachmentService.create(db, data, user=user) + db.commit() + db.refresh(attachment) + return ApiResponse(data=AttachmentOut.model_validate(attachment)) + + +@router.get("/download/{attachment_id}") +def download_file( + attachment_id: str, + db: Session = Depends(get_db), + user: BxUserContext = Depends(get_bx_current_user), +): + tenant_no = _tenant(db, user) + attachment = AttachmentService.get_by_id(db, attachment_id, tenant_no) + if not attachment: + raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="附件不存在") + try: + file_data = download_file_bytes(attachment.file_path) + except FileNotFoundError as exc: + raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="文件不存在") from exc + except Exception as exc: + raise HTTPException(status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, detail="文件读取失败") from exc + encoded_name = quote(attachment.file_name or "download") + headers = {"Content-Disposition": f"attachment; filename*=UTF-8''{encoded_name}"} + media_type = attachment.file_type or "application/octet-stream" + return StreamingResponse(iter([file_data]), media_type=media_type, headers=headers) + + +@router.delete("/{attachment_id}", response_model=ApiResponse[bool]) +def delete_attachment( + attachment_id: str, + db: Session = Depends(get_db), + user: BxUserContext = Depends(get_bx_current_user), +): + tenant_no = _tenant(db, user) + if not AttachmentService.get_by_id(db, attachment_id, tenant_no): + raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="附件不存在") + success = AttachmentService.soft_delete(db, attachment_id, user=user) + db.commit() + return ApiResponse(data=success) + + +@router.get("/preview/{attachment_id}", response_model=ApiResponse[dict]) +def preview_attachment( + attachment_id: str, + db: Session = Depends(get_db), + user: BxUserContext = Depends(get_bx_current_user), +): + """返回图片/附件预览 URL(MinIO 预签名或本地公开地址,对齐门户 storage 能力)。""" + tenant_no = _tenant(db, user) + attachment = AttachmentService.get_by_id(db, attachment_id, tenant_no) + if not attachment: + raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="附件不存在") + try: + url = get_preview_url(attachment.file_path, expires_seconds=3600) + except Exception as exc: + raise HTTPException(status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, detail="获取预览地址失败") from exc + return ApiResponse( + data={ + "url": url, + "file_name": attachment.file_name, + "file_type": attachment.file_type, + } + ) + + +@router.get("/list", response_model=ApiResponse[List[AttachmentOut]]) +def list_by_biz( + biz_type: str = "", + biz_id: str = "0", + db: Session = Depends(get_db), + user: BxUserContext = Depends(get_bx_current_user), +): + tenant_no = _tenant(db, user) + biz_id_value = str(biz_id).strip() if biz_id else "0" + attachments = AttachmentService.get_by_biz(db, biz_type=biz_type, biz_id=biz_id_value, tenant_no=tenant_no) + return ApiResponse(data=[AttachmentOut.model_validate(a) for a in attachments]) + + +@router.put("/bind-biz", response_model=ApiResponse[int]) +def bind_biz( + ids: str = Query(...), + biz_type: str = Query(...), + biz_id: str = Query(...), + db: Session = Depends(get_db), + user: BxUserContext = Depends(get_bx_current_user), +): + id_list = _parse_id_list(ids) + biz_id_value = str(biz_id).strip() or "0" + count = AttachmentService.bind_biz(db, id_list, biz_type, biz_id_value, user=user) + db.commit() + return ApiResponse(data=count) diff --git a/backend/app/api/bx/expense_item.py b/backend/app/api/bx/expense_item.py new file mode 100644 index 000000000..7bf7a8d17 --- /dev/null +++ b/backend/app/api/bx/expense_item.py @@ -0,0 +1,88 @@ +from typing import List + +from fastapi import APIRouter, Depends, HTTPException, status +from sqlalchemy.orm import Session + +from app.core.bx_auth import BxUserContext, get_bx_current_user +from app.core.database import get_db +from app.core.tenant_context import get_tenant_no +from app.schemas.bx.common import ApiResponse +from app.schemas.bx.expense_item import ExpenseItemCreate, ExpenseItemOut, ExpenseItemUpdate +from app.services.bx.expense_item import ExpenseItemService + +router = APIRouter(prefix="/expense-items", tags=["费用项目管理"]) + + +@router.get("/tree", response_model=ApiResponse[List[ExpenseItemOut]]) +def get_expense_item_tree( + db: Session = Depends(get_db), + user: BxUserContext = Depends(get_bx_current_user), +): + tenant_no = get_tenant_no(db, user.to_tenant_user_dict()) + tree = ExpenseItemService.get_item_tree(db, tenant_no) + return ApiResponse(data=[ExpenseItemOut.model_validate(i) for i in tree]) + + +@router.get("/{item_id}", response_model=ApiResponse[ExpenseItemOut]) +def get_expense_item( + item_id: str, + db: Session = Depends(get_db), + user: BxUserContext = Depends(get_bx_current_user), +): + tenant_no = get_tenant_no(db, user.to_tenant_user_dict()) + item = ExpenseItemService.get_by_id(db, item_id, tenant_no) + if not item: + raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="费用项目不存在") + return ApiResponse(data=ExpenseItemOut.model_validate(item)) + + +@router.post("/", response_model=ApiResponse[ExpenseItemOut]) +def create_expense_item( + body: ExpenseItemCreate, + db: Session = Depends(get_db), + user: BxUserContext = Depends(get_bx_current_user), +): + try: + item = ExpenseItemService.create(db, body.model_dump(exclude_unset=True), user=user) + db.commit() + db.refresh(item) + except ValueError as exc: + db.rollback() + raise HTTPException(status_code=status.HTTP_400_BAD_REQUEST, detail=str(exc)) from exc + return ApiResponse(data=ExpenseItemOut.model_validate(item)) + + +@router.put("/{item_id}", response_model=ApiResponse[ExpenseItemOut]) +def update_expense_item( + item_id: str, + body: ExpenseItemUpdate, + db: Session = Depends(get_db), + user: BxUserContext = Depends(get_bx_current_user), +): + try: + item = ExpenseItemService.update( + db, item_id, body.model_dump(exclude_unset=True), user=user + ) + if not item: + raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="费用项目不存在") + db.commit() + db.refresh(item) + except ValueError as exc: + db.rollback() + raise HTTPException(status_code=status.HTTP_400_BAD_REQUEST, detail=str(exc)) from exc + return ApiResponse(data=ExpenseItemOut.model_validate(item)) + + +@router.delete("/{item_id}", response_model=ApiResponse[None]) +def delete_expense_item( + item_id: str, + db: Session = Depends(get_db), + user: BxUserContext = Depends(get_bx_current_user), +): + tenant_no = get_tenant_no(db, user.to_tenant_user_dict()) + item = ExpenseItemService.get_by_id(db, item_id, tenant_no) + if not item: + raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="费用项目不存在") + ExpenseItemService.soft_delete(db, item_id, user=user) + db.commit() + return ApiResponse(data=None) diff --git a/backend/app/api/bx/payment.py b/backend/app/api/bx/payment.py new file mode 100644 index 000000000..f3a570922 --- /dev/null +++ b/backend/app/api/bx/payment.py @@ -0,0 +1,414 @@ +import csv +import io +from datetime import datetime +from typing import Any, List, Optional +from urllib.parse import quote + +from fastapi import APIRouter, Depends, HTTPException, status +from fastapi.responses import StreamingResponse +from sqlalchemy import or_ +from sqlalchemy.orm import Session + +from app.core.bx_auth import BxUserContext, get_bx_current_user +from app.core.database import get_db +from app.core.tenant_context import get_tenant_no +from app.models.bx_models import BxAdvanceApply, BxReimburseApply, BxReimburseOffset +from app.schemas.bx.advance import ( + AdvanceFinanceIssueStatsOut, + AdvanceIssueOut, + AdvanceIssueRequest, + AdvanceOffsetRecordOut, +) +from app.schemas.bx.common import ApiResponse, PagedData +from app.schemas.bx.reimburse import ( + BatchOffsetRequest, + OffsetRequest, + PayRequest, + PaymentFinanceStatsOut, + ReimburseApplyOut, + ReimburseOffsetRecordOut, +) +from app.services.bx.advance import AdvanceService +from app.services.bx.attachment import AttachmentService +from app.services.bx.reimburse import ReimburseService +from app.utils.bx_date_range import parse_create_time_day_bounds + +router = APIRouter(prefix="/payments", tags=["支付处理"]) + + +def _tenant(db: Session, user: BxUserContext) -> str: + return get_tenant_no(db, user.to_tenant_user_dict()) + + +def _wrap_reimburse_rows(outs: List[ReimburseApplyOut]) -> List[dict]: + return [{"type": "reimburse", "data": o.model_dump(by_alias=True)} for o in outs] + + +@router.get("/pending", response_model=ApiResponse[PagedData[Any]]) +def list_pending_payments( + page: int = 1, + pageSize: int = 10, + keyword: str = "", + applicantId: Optional[str] = None, + applyDate: Optional[str] = None, + db: Session = Depends(get_db), + user: BxUserContext = Depends(get_bx_current_user), +): + tenant_no = _tenant(db, user) + filters = [BxReimburseApply.status == "approved"] + if keyword: + filters.append( + or_( + BxReimburseApply.apply_code.contains(keyword), + BxReimburseApply.applicant_name.contains(keyword), + ) + ) + if applicantId: + filters.append(BxReimburseApply.applicant_id == str(applicantId).strip()) + bounds = parse_create_time_day_bounds(applyDate) + if bounds: + d0, d1 = bounds + filters.append(BxReimburseApply.create_time >= d0) + filters.append(BxReimburseApply.create_time < d1) + rows, total = ReimburseService.get_paged(db, tenant_no, page=page, page_size=pageSize, filters=filters) + outs = ReimburseService.out_rows_with_attachment_counts(db, tenant_no, list(rows)) + return ApiResponse( + data=PagedData(rows=_wrap_reimburse_rows(outs), total=total, page=page, page_size=pageSize) + ) + + +@router.get("/stats", response_model=ApiResponse[PaymentFinanceStatsOut]) +def payment_finance_stats( + db: Session = Depends(get_db), + user: BxUserContext = Depends(get_bx_current_user), +): + tenant_no = _tenant(db, user) + data = ReimburseService.finance_payment_stats(db, tenant_no) + return ApiResponse(data=PaymentFinanceStatsOut.model_validate(data)) + + +@router.get("/processed", response_model=ApiResponse[PagedData[Any]]) +def list_processed_payments( + page: int = 1, + pageSize: int = 10, + keyword: str = "", + applicantId: Optional[str] = None, + applyDate: Optional[str] = None, + db: Session = Depends(get_db), + user: BxUserContext = Depends(get_bx_current_user), +): + tenant_no = _tenant(db, user) + filters = [BxReimburseApply.status.in_(["processed", "paid", "offset"])] + if keyword: + filters.append( + or_( + BxReimburseApply.apply_code.contains(keyword), + BxReimburseApply.applicant_name.contains(keyword), + ) + ) + if applicantId: + filters.append(BxReimburseApply.applicant_id == str(applicantId).strip()) + bounds = parse_create_time_day_bounds(applyDate) + if bounds: + d0, d1 = bounds + filters.append(BxReimburseApply.create_time >= d0) + filters.append(BxReimburseApply.create_time < d1) + rows, total = ReimburseService.get_paged(db, tenant_no, page=page, page_size=pageSize, filters=filters) + outs = ReimburseService.out_rows_with_attachment_counts(db, tenant_no, list(rows)) + return ApiResponse( + data=PagedData(rows=_wrap_reimburse_rows(outs), total=total, page=page, page_size=pageSize) + ) + + +@router.post("/{payment_id}/pay", response_model=ApiResponse[ReimburseApplyOut]) +def pay( + payment_id: str, + body: Optional[PayRequest] = None, + db: Session = Depends(get_db), + user: BxUserContext = Depends(get_bx_current_user), +): + tenant_no = _tenant(db, user) + pay_remark = body.pay_remark if body else "" + actual_amount = body.actual_amount if body else None + reimburse = ReimburseService.pay( + db, payment_id, user, pay_remark=pay_remark or "", actual_amount=actual_amount + ) + if not reimburse: + raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="支付记录不存在") + db.commit() + db.refresh(reimburse) + return ApiResponse(data=ReimburseService.out_one_with_attachment_counts(db, tenant_no, reimburse)) + + +@router.post("/{payment_id}/offset", response_model=ApiResponse[ReimburseApplyOut]) +def offset( + payment_id: str, + body: OffsetRequest, + db: Session = Depends(get_db), + user: BxUserContext = Depends(get_bx_current_user), +): + tenant_no = _tenant(db, user) + reimburse = ReimburseService.offset( + db, + payment_id, + body.advance_id, + body.offset_amount, + user, + remark=body.remark or "", + ) + if not reimburse: + raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="支付记录不存在") + db.commit() + db.refresh(reimburse) + return ApiResponse(data=ReimburseService.out_one_with_attachment_counts(db, tenant_no, reimburse)) + + +@router.post("/{payment_id}/batch-offset", response_model=ApiResponse[ReimburseApplyOut]) +def batch_offset( + payment_id: str, + body: BatchOffsetRequest, + db: Session = Depends(get_db), + user: BxUserContext = Depends(get_bx_current_user), +): + tenant_no = _tenant(db, user) + reimburse = ReimburseService.batch_offset( + db, + payment_id, + [item.model_dump() for item in body.items], + body.pay_amount, + user, + remark=body.remark or "", + ) + if not reimburse: + raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="支付记录不存在") + db.commit() + db.refresh(reimburse) + return ApiResponse(data=ReimburseService.out_one_with_attachment_counts(db, tenant_no, reimburse)) + + +@router.get("/advance-issues", response_model=ApiResponse[PagedData[AdvanceIssueOut]]) +def list_advance_issues( + page: int = 1, + pageSize: int = 10, + issue_status: Optional[str] = None, + keyword: str = "", + applicantId: Optional[str] = None, + applyDate: Optional[str] = None, + db: Session = Depends(get_db), + user: BxUserContext = Depends(get_bx_current_user), +): + tenant_no = _tenant(db, user) + filters = [] + if issue_status == "pending": + filters.append(BxAdvanceApply.status == "approved") + filters.append(or_(BxAdvanceApply.issue_status.is_(None), BxAdvanceApply.issue_status != "issued")) + elif issue_status == "issued": + filters.append(BxAdvanceApply.status == "issued") + else: + filters.append(or_(BxAdvanceApply.status == "approved", BxAdvanceApply.status == "issued")) + if keyword: + filters.append( + or_( + BxAdvanceApply.apply_code.contains(keyword), + BxAdvanceApply.applicant_name.contains(keyword), + ) + ) + if applicantId: + filters.append(BxAdvanceApply.applicant_id == str(applicantId).strip()) + bounds = parse_create_time_day_bounds(applyDate) + if bounds: + d0, d1 = bounds + filters.append(BxAdvanceApply.create_time >= d0) + filters.append(BxAdvanceApply.create_time < d1) + rows, total = AdvanceService.get_paged(db, tenant_no, page=page, page_size=pageSize, filters=filters) + out_rows = [AdvanceIssueOut.model_validate(r) for r in rows] + if out_rows: + offset_map = AdvanceService.offset_amount_map(db, tenant_no, [r.id for r in rows]) + for out_row in out_rows: + out_row.offset_amount = offset_map.get(out_row.id, 0.0) + return ApiResponse(data=PagedData(rows=out_rows, total=total, page=page, page_size=pageSize)) + + +@router.get("/advance-issues/stats", response_model=ApiResponse[AdvanceFinanceIssueStatsOut]) +def advance_issue_stats( + db: Session = Depends(get_db), + user: BxUserContext = Depends(get_bx_current_user), +): + tenant_no = _tenant(db, user) + data = AdvanceService.finance_issue_stats(db, tenant_no) + return ApiResponse(data=AdvanceFinanceIssueStatsOut.model_validate(data)) + + +@router.get("/advance-issues/export") +def export_advance_issues( + issue_status: Optional[str] = None, + keyword: str = "", + applicantId: Optional[str] = None, + applyDate: Optional[str] = None, + db: Session = Depends(get_db), + user: BxUserContext = Depends(get_bx_current_user), +): + tenant_no = _tenant(db, user) + filters = [] + if issue_status == "pending": + filters.append(BxAdvanceApply.status == "approved") + filters.append(or_(BxAdvanceApply.issue_status.is_(None), BxAdvanceApply.issue_status != "issued")) + elif issue_status == "issued": + filters.append(BxAdvanceApply.status == "issued") + else: + filters.append(or_(BxAdvanceApply.status == "approved", BxAdvanceApply.status == "issued")) + if keyword: + filters.append( + or_( + BxAdvanceApply.apply_code.contains(keyword), + BxAdvanceApply.applicant_name.contains(keyword), + ) + ) + if applicantId: + filters.append(BxAdvanceApply.applicant_id == str(applicantId).strip()) + bounds = parse_create_time_day_bounds(applyDate) + if bounds: + d0, d1 = bounds + filters.append(BxAdvanceApply.create_time >= d0) + filters.append(BxAdvanceApply.create_time < d1) + rows, _ = AdvanceService.get_paged(db, tenant_no, page=1, page_size=99999, filters=filters) + out_rows = [AdvanceIssueOut.model_validate(r) for r in rows] + + buf = io.StringIO() + writer = csv.writer(buf) + writer.writerow( + [ + "申请单号", + "申请人", + "申请原因", + "申请金额", + "审批通过时间", + "发放状态", + "发放时间", + "发放操作人", + "实际发放金额", + "发放备注", + ] + ) + for row in out_rows: + writer.writerow( + [ + row.apply_code, + row.applicant_name, + row.reason, + row.amount, + row.approve_time or "", + "已发放" if row.issue_status == "issued" else "待发放", + row.issue_time or "", + row.issue_user_name or "", + row.actual_amount or "", + row.issue_remark or "", + ] + ) + buf.seek(0) + filename = f"备用金发放列表_{datetime.now().strftime('%Y%m%d_%H%M%S')}.csv" + encoded_name = quote(filename) + return StreamingResponse( + iter([buf.getvalue()]), + media_type="text/csv; charset=utf-8", + headers={"Content-Disposition": f"attachment; filename*=UTF-8''{encoded_name}"}, + ) + + +@router.post("/advance/{advance_id}/issue", response_model=ApiResponse[AdvanceIssueOut]) +def issue_advance( + advance_id: str, + body: AdvanceIssueRequest, + db: Session = Depends(get_db), + user: BxUserContext = Depends(get_bx_current_user), +): + tenant_no = _tenant(db, user) + issue_atts = AttachmentService.get_by_biz(db, "advance_issue", advance_id, tenant_no) + if not issue_atts: + raise HTTPException(status_code=status.HTTP_400_BAD_REQUEST, detail="请至少上传 1 个发放附件") + advance = AdvanceService.issue( + db, advance_id, user, body.issue_remark or "", body.actual_amount + ) + if not advance: + raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="备用金申请不存在") + db.commit() + db.refresh(advance) + out = AdvanceIssueOut.model_validate(advance) + offset_map = AdvanceService.offset_amount_map(db, tenant_no, [advance_id]) + out.offset_amount = offset_map.get(advance_id, 0.0) + return ApiResponse(data=out) + + +@router.get("/advance/{advance_id}/offset-records", response_model=ApiResponse[List[AdvanceOffsetRecordOut]]) +def list_advance_offset_records( + advance_id: str, + db: Session = Depends(get_db), + user: BxUserContext = Depends(get_bx_current_user), +): + tenant_no = _tenant(db, user) + rows = ( + db.query(BxReimburseOffset, BxReimburseApply) + .join( + BxReimburseApply, + BxReimburseApply.id == BxReimburseOffset.reimburse_id, + ) + .filter( + BxReimburseOffset.advance_id == advance_id, + BxReimburseOffset.tenant_no == tenant_no, + BxReimburseOffset.del_flag == 0, + BxReimburseApply.del_flag == 0, + BxReimburseApply.tenant_no == tenant_no, + ) + .order_by(BxReimburseOffset.create_time.desc(), BxReimburseOffset.id.desc()) + .all() + ) + records = [ + AdvanceOffsetRecordOut( + reimburse_id=reimburse.id, + reimburse_apply_code=reimburse.apply_code, + reimburse_title=reimburse.title, + reimburse_applicant_name=reimburse.applicant_name, + offset_amount=float(offset.offset_amount or 0), + remark=offset.remark, + operator=offset.create_by, + create_time=offset.create_time, + ) + for offset, reimburse in rows + ] + return ApiResponse(data=records) + + +@router.get("/{payment_id}/offset-records", response_model=ApiResponse[List[ReimburseOffsetRecordOut]]) +def list_reimburse_offset_records( + payment_id: str, + db: Session = Depends(get_db), + user: BxUserContext = Depends(get_bx_current_user), +): + tenant_no = _tenant(db, user) + rows = ( + db.query(BxReimburseOffset, BxAdvanceApply) + .join(BxAdvanceApply, BxAdvanceApply.id == BxReimburseOffset.advance_id) + .filter( + BxReimburseOffset.reimburse_id == payment_id, + BxReimburseOffset.tenant_no == tenant_no, + BxReimburseOffset.del_flag == 0, + BxAdvanceApply.del_flag == 0, + BxAdvanceApply.tenant_no == tenant_no, + ) + .order_by(BxReimburseOffset.create_time.desc(), BxReimburseOffset.id.desc()) + .all() + ) + records = [ + ReimburseOffsetRecordOut( + advance_id=advance.id, + advance_apply_code=advance.apply_code, + advance_applicant_name=advance.applicant_name, + advance_reason=advance.reason, + offset_amount=float(offset.offset_amount or 0), + remark=offset.remark, + operator=offset.create_by, + create_time=offset.create_time, + ) + for offset, advance in rows + ] + return ApiResponse(data=records) diff --git a/backend/app/api/bx/reimburse.py b/backend/app/api/bx/reimburse.py new file mode 100644 index 000000000..d22de25e2 --- /dev/null +++ b/backend/app/api/bx/reimburse.py @@ -0,0 +1,373 @@ +from typing import List, Optional + +from fastapi import APIRouter, Depends, HTTPException, status +from sqlalchemy import or_ +from sqlalchemy.orm import Session + +from app.core.bx_auth import BxUserContext, get_bx_current_user +from app.core.database import get_db +from app.core.tenant_context import get_tenant_no +from app.models.bx_models import BxReimburseApply, BxWorkflowDef +from app.schemas.bx.common import ApiResponse, PagedData +from app.schemas.bx.reimburse import ( + ReimburseApplyCreate, + ReimburseApplyOut, + ReimburseApplyUpdate, + ReimburseApprovalCreate, + ReimburseApprovalOut, + ReimburseApproverPendingStatsOut, + ReimburseMyStatsOut, +) +from app.services.bx.expense_item import ExpenseItemService +from app.services.bx.reimburse import ReimburseService +from app.utils.bx_codegen import generate_apply_code, generate_title +from app.utils.bx_date_range import parse_create_time_day_bounds + +router = APIRouter(prefix="/reimburses", tags=["报销管理"]) + + +def _tenant(db: Session, user: BxUserContext) -> str: + return get_tenant_no(db, user.to_tenant_user_dict()) + + +def _build_details_data(db: Session, tenant_no: str, body_details) -> List[dict]: + details_data: List[dict] = [] + for d in body_details: + item = ExpenseItemService.get_by_id(db, d.expense_item_id, tenant_no) + if not item: + raise HTTPException( + status_code=status.HTTP_400_BAD_REQUEST, + detail=f"费用项目 {d.expense_item_id} 不存在", + ) + details_data.append( + { + "expense_id": d.expense_item_id, + "expense_name": item.item_name, + "amount": d.amount, + "remark": d.remark, + } + ) + return details_data + + +@router.get("/generate-title", response_model=ApiResponse[str]) +def get_generated_title( + db: Session = Depends(get_db), + user: BxUserContext = Depends(get_bx_current_user), +): + tenant_no = _tenant(db, user) + title = generate_title(db, user.name, tenant_no) + return ApiResponse(data=title) + + +@router.get("/", response_model=ApiResponse[PagedData[ReimburseApplyOut]]) +def list_reimburses( + page: int = 1, + pageSize: int = 10, + status: Optional[str] = None, + keyword: str = "", + expense_id: Optional[str] = None, + applicantId: Optional[str] = None, + applyDate: Optional[str] = None, + db: Session = Depends(get_db), + user: BxUserContext = Depends(get_bx_current_user), +): + tenant_no = _tenant(db, user) + filters = [] + if status: + filters.append(BxReimburseApply.status == status) + if keyword: + filters.append( + or_( + BxReimburseApply.apply_code.contains(keyword), + BxReimburseApply.applicant_name.contains(keyword), + ) + ) + if expense_id: + filters.append(BxReimburseApply.expense_id == str(expense_id).strip()) + if applicantId: + filters.append(BxReimburseApply.applicant_id == str(applicantId).strip()) + bounds = parse_create_time_day_bounds(applyDate) + if bounds: + d0, d1 = bounds + filters.append(BxReimburseApply.create_time >= d0) + filters.append(BxReimburseApply.create_time < d1) + rows, total = ReimburseService.get_paged(db, tenant_no, page=page, page_size=pageSize, filters=filters) + out_rows = ReimburseService.out_rows_with_attachment_counts(db, tenant_no, list(rows)) + return ApiResponse(data=PagedData(rows=out_rows, total=total, page=page, page_size=pageSize)) + + +@router.get("/my", response_model=ApiResponse[PagedData[ReimburseApplyOut]]) +def my_reimburses( + page: int = 1, + pageSize: int = 10, + status: Optional[str] = None, + keyword: str = "", + applyDate: Optional[str] = None, + db: Session = Depends(get_db), + user: BxUserContext = Depends(get_bx_current_user), +): + tenant_no = _tenant(db, user) + filters = [ + or_( + BxReimburseApply.applicant_id == user.id, + BxReimburseApply.create_by == user.id, + ) + ] + if status: + filters.append(BxReimburseApply.status == status) + if keyword: + filters.append( + or_( + BxReimburseApply.apply_code.contains(keyword), + BxReimburseApply.applicant_name.contains(keyword), + ) + ) + bounds = parse_create_time_day_bounds(applyDate) + if bounds: + d0, d1 = bounds + filters.append(BxReimburseApply.create_time >= d0) + filters.append(BxReimburseApply.create_time < d1) + rows, total = ReimburseService.get_paged(db, tenant_no, page=page, page_size=pageSize, filters=filters) + out_rows = ReimburseService.out_rows_with_attachment_counts(db, tenant_no, list(rows)) + return ApiResponse(data=PagedData(rows=out_rows, total=total, page=page, page_size=pageSize)) + + +@router.get("/my/stats", response_model=ApiResponse[ReimburseMyStatsOut]) +def my_reimburse_stats( + db: Session = Depends(get_db), + user: BxUserContext = Depends(get_bx_current_user), +): + tenant_no = _tenant(db, user) + data = ReimburseService.my_apply_stats(db, user.id, tenant_no) + return ApiResponse(data=ReimburseMyStatsOut.model_validate(data)) + + +@router.get("/stats/status-counts", response_model=ApiResponse[dict]) +def reimburse_status_counts( + db: Session = Depends(get_db), + user: BxUserContext = Depends(get_bx_current_user), +): + tenant_no = _tenant(db, user) + return ApiResponse(data=ReimburseService.global_status_counts(db, tenant_no)) + + +@router.get("/pending-approval", response_model=ApiResponse[PagedData[ReimburseApplyOut]]) +def pending_approval( + page: int = 1, + pageSize: int = 10, + keyword: str = "", + applicantId: Optional[str] = None, + applyDate: Optional[str] = None, + db: Session = Depends(get_db), + user: BxUserContext = Depends(get_bx_current_user), +): + tenant_no = _tenant(db, user) + applicant_id = str(applicantId).strip() if applicantId else None + rows, total = ReimburseService.pending_approval( + db, + user, + tenant_no, + page=page, + page_size=pageSize, + keyword=keyword, + applicant_id=applicant_id, + apply_date=applyDate, + ) + out_rows = ReimburseService.out_rows_with_attachment_counts(db, tenant_no, list(rows)) + return ApiResponse(data=PagedData(rows=out_rows, total=total, page=page, page_size=pageSize)) + + +@router.get("/pending-approval/stats", response_model=ApiResponse[ReimburseApproverPendingStatsOut]) +def pending_approval_stats( + db: Session = Depends(get_db), + user: BxUserContext = Depends(get_bx_current_user), +): + tenant_no = _tenant(db, user) + data = ReimburseService.pending_approval_stats(db, user, tenant_no) + return ApiResponse(data=ReimburseApproverPendingStatsOut.model_validate(data)) + + +@router.get("/approved-by-me", response_model=ApiResponse[PagedData[ReimburseApplyOut]]) +def approved_by_me( + page: int = 1, + pageSize: int = 10, + keyword: str = "", + applicantId: Optional[str] = None, + applyDate: Optional[str] = None, + db: Session = Depends(get_db), + user: BxUserContext = Depends(get_bx_current_user), +): + tenant_no = _tenant(db, user) + applicant_id = str(applicantId).strip() if applicantId else None + rows, total = ReimburseService.approved_by_me( + db, + user, + tenant_no, + page=page, + page_size=pageSize, + keyword=keyword, + applicant_id=applicant_id, + apply_date=applyDate, + ) + out_rows = ReimburseService.out_rows_with_attachment_counts(db, tenant_no, list(rows)) + return ApiResponse(data=PagedData(rows=out_rows, total=total, page=page, page_size=pageSize)) + + +@router.get("/{reimburse_id}", response_model=ApiResponse[ReimburseApplyOut]) +def get_reimburse( + reimburse_id: str, + db: Session = Depends(get_db), + user: BxUserContext = Depends(get_bx_current_user), +): + tenant_no = _tenant(db, user) + reimburse = ReimburseService.get_by_id(db, reimburse_id, tenant_no) + if not reimburse: + raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="报销单不存在") + out = ReimburseService.build_apply_out_with_details(db, tenant_no, reimburse) + return ApiResponse(data=out) + + +@router.get("/{reimburse_id}/approvals", response_model=ApiResponse[List[ReimburseApprovalOut]]) +def get_approvals( + reimburse_id: str, + db: Session = Depends(get_db), + user: BxUserContext = Depends(get_bx_current_user), +): + tenant_no = _tenant(db, user) + if not ReimburseService.get_by_id(db, reimburse_id, tenant_no): + raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="报销单不存在") + approvals = ReimburseService.get_approvals(db, reimburse_id, tenant_no) + return ApiResponse(data=[ReimburseApprovalOut.model_validate(a) for a in approvals]) + + +@router.get("/{reimburse_id}/approval-history", response_model=ApiResponse[List[ReimburseApprovalOut]]) +def get_approval_history( + reimburse_id: str, + db: Session = Depends(get_db), + user: BxUserContext = Depends(get_bx_current_user), +): + tenant_no = _tenant(db, user) + if not ReimburseService.get_by_id(db, reimburse_id, tenant_no): + raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="报销单不存在") + history = ReimburseService.get_approval_history(db, reimburse_id, tenant_no) + return ApiResponse(data=[ReimburseApprovalOut.model_validate(a) for a in history]) + + +@router.post("/", response_model=ApiResponse[ReimburseApplyOut]) +def create_reimburse( + body: ReimburseApplyCreate, + db: Session = Depends(get_db), + user: BxUserContext = Depends(get_bx_current_user), +): + tenant_no = _tenant(db, user) + details_data = _build_details_data(db, tenant_no, body.details) + data = { + "apply_code": generate_apply_code(db, "BX", tenant_no), + "status": "draft", + "remark": body.remark, + } + if body.title: + data["title"] = body.title + wf = ( + db.query(BxWorkflowDef) + .filter( + BxWorkflowDef.biz_type == "reimburse", + BxWorkflowDef.tenant_no == tenant_no, + BxWorkflowDef.del_flag == 0, + ) + .first() + ) + if wf: + data["wf_id"] = wf.id + reimburse = ReimburseService.create_with_details(db, data, details_data, user=user) + db.commit() + db.refresh(reimburse) + out = ReimburseService.build_apply_out_with_details(db, tenant_no, reimburse) + return ApiResponse(data=out) + + +@router.put("/{reimburse_id}", response_model=ApiResponse[ReimburseApplyOut]) +def update_reimburse( + reimburse_id: str, + body: ReimburseApplyUpdate, + db: Session = Depends(get_db), + user: BxUserContext = Depends(get_bx_current_user), +): + tenant_no = _tenant(db, user) + details_data = None + if body.details is not None: + details_data = _build_details_data(db, tenant_no, body.details) + main_data = {} + if body.remark is not None: + main_data["remark"] = body.remark + reimburse = ReimburseService.update_with_details( + db, reimburse_id, main_data, details_data, user=user + ) + if not reimburse: + raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="报销单不存在") + db.commit() + db.refresh(reimburse) + out = ReimburseService.build_apply_out_with_details(db, tenant_no, reimburse) + return ApiResponse(data=out) + + +@router.post("/{reimburse_id}/submit", response_model=ApiResponse[ReimburseApplyOut]) +def submit_reimburse( + reimburse_id: str, + db: Session = Depends(get_db), + user: BxUserContext = Depends(get_bx_current_user), +): + tenant_no = _tenant(db, user) + reimburse = ReimburseService.submit(db, reimburse_id, user) + if not reimburse: + raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="报销单不存在") + db.commit() + db.refresh(reimburse) + return ApiResponse(data=ReimburseService.out_one_with_attachment_counts(db, tenant_no, reimburse)) + + +@router.post("/{reimburse_id}/approve", response_model=ApiResponse[ReimburseApplyOut]) +def approve_reimburse( + reimburse_id: str, + body: ReimburseApprovalCreate, + db: Session = Depends(get_db), + user: BxUserContext = Depends(get_bx_current_user), +): + tenant_no = _tenant(db, user) + reimburse = ReimburseService.approve(db, reimburse_id, user, body.approval_opinion or "") + if not reimburse: + raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="报销单不存在或无权审批") + db.commit() + db.refresh(reimburse) + return ApiResponse(data=ReimburseService.out_one_with_attachment_counts(db, tenant_no, reimburse)) + + +@router.post("/{reimburse_id}/reject", response_model=ApiResponse[ReimburseApplyOut]) +def reject_reimburse( + reimburse_id: str, + body: ReimburseApprovalCreate, + db: Session = Depends(get_db), + user: BxUserContext = Depends(get_bx_current_user), +): + tenant_no = _tenant(db, user) + reimburse = ReimburseService.reject(db, reimburse_id, user, body.approval_opinion or "") + if not reimburse: + raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="报销单不存在或无权审批") + db.commit() + db.refresh(reimburse) + return ApiResponse(data=ReimburseService.out_one_with_attachment_counts(db, tenant_no, reimburse)) + + +@router.delete("/{reimburse_id}", response_model=ApiResponse[None]) +def delete_reimburse( + reimburse_id: str, + db: Session = Depends(get_db), + user: BxUserContext = Depends(get_bx_current_user), +): + tenant_no = _tenant(db, user) + if not ReimburseService.get_by_id(db, reimburse_id, tenant_no): + raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="报销单不存在") + ReimburseService.soft_delete(db, reimburse_id, user=user) + db.commit() + return ApiResponse(data=None) diff --git a/backend/app/api/bx/workflow.py b/backend/app/api/bx/workflow.py new file mode 100644 index 000000000..d7f1cdf93 --- /dev/null +++ b/backend/app/api/bx/workflow.py @@ -0,0 +1,130 @@ +from typing import List + +from fastapi import APIRouter, Depends, HTTPException, status +from sqlalchemy.orm import Session + +from app.core.bx_auth import BxUserContext, get_bx_current_user +from app.core.database import get_db +from app.core.tenant_context import get_tenant_no +from app.schemas.bx.common import ApiResponse, PagedData +from app.schemas.bx.workflow import ( + WorkflowDefCreate, + WorkflowDefOut, + WorkflowDefUpdate, + WorkflowNodeCreate, +) +from app.services.bx.workflow import WorkflowService + +router = APIRouter(prefix="/workflows", tags=["工作流配置"]) + + +@router.get("/", response_model=ApiResponse[PagedData[WorkflowDefOut]]) +def list_workflows( + page: int = 1, + pageSize: int = 10, + db: Session = Depends(get_db), + user: BxUserContext = Depends(get_bx_current_user), +): + tenant_no = get_tenant_no(db, user.to_tenant_user_dict()) + rows, total = WorkflowService.get_paged(db, tenant_no, page=page, page_size=pageSize) + out_rows = [WorkflowDefOut.model_validate(r) for r in rows] + paged_data = PagedData(rows=out_rows, total=total, page=page, page_size=pageSize) + return ApiResponse(data=paged_data) + + +@router.get("/biz/{biz_type}", response_model=ApiResponse[WorkflowDefOut]) +def get_workflow_by_biz_type( + biz_type: str, + db: Session = Depends(get_db), + user: BxUserContext = Depends(get_bx_current_user), +): + workflow = WorkflowService.ensure_by_biz_type(db, biz_type, user=user) + if not workflow: + return ApiResponse(data=None) + return ApiResponse(data=WorkflowDefOut.model_validate(workflow)) + + +@router.get("/{workflow_id}", response_model=ApiResponse[WorkflowDefOut]) +def get_workflow( + workflow_id: str, + db: Session = Depends(get_db), + user: BxUserContext = Depends(get_bx_current_user), +): + tenant_no = get_tenant_no(db, user.to_tenant_user_dict()) + workflow = WorkflowService.get_by_id(db, workflow_id, tenant_no) + if not workflow: + raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="工作流不存在") + return ApiResponse(data=WorkflowDefOut.model_validate(workflow)) + + +@router.post("/", response_model=ApiResponse[WorkflowDefOut]) +def create_workflow( + body: WorkflowDefCreate, + db: Session = Depends(get_db), + user: BxUserContext = Depends(get_bx_current_user), +): + data = body.model_dump(exclude_unset=True) + nodes_data = data.pop("nodes", []) or [] + workflow = WorkflowService.create(db, data, user=user) + if nodes_data: + WorkflowService.save_nodes(db, workflow.id, nodes_data, user=user) + db.commit() + db.refresh(workflow) + return ApiResponse(data=WorkflowDefOut.model_validate(workflow)) + + +@router.put("/{workflow_id}", response_model=ApiResponse[WorkflowDefOut]) +def update_workflow( + workflow_id: str, + body: WorkflowDefUpdate, + db: Session = Depends(get_db), + user: BxUserContext = Depends(get_bx_current_user), +): + tenant_no = get_tenant_no(db, user.to_tenant_user_dict()) + data = body.model_dump(exclude_unset=True) + nodes_data = data.pop("nodes", None) + workflow = WorkflowService.update(db, workflow_id, data, user=user) + if not workflow: + raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="工作流不存在") + if nodes_data is not None: + WorkflowService.save_nodes(db, workflow_id, nodes_data, user=user) + db.commit() + db.refresh(workflow) + return ApiResponse(data=WorkflowDefOut.model_validate(workflow)) + + +@router.put("/{workflow_id}/nodes", response_model=ApiResponse[WorkflowDefOut]) +def save_workflow_nodes( + workflow_id: str, + body: List[WorkflowNodeCreate], + db: Session = Depends(get_db), + user: BxUserContext = Depends(get_bx_current_user), +): + tenant_no = get_tenant_no(db, user.to_tenant_user_dict()) + nodes_data = [n.model_dump(exclude_unset=True) for n in body] + try: + WorkflowService.save_nodes(db, workflow_id, nodes_data, user=user) + except ValueError as exc: + db.rollback() + raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail=str(exc)) from exc + workflow = WorkflowService.get_by_id(db, workflow_id, tenant_no) + if not workflow: + raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="工作流不存在") + db.commit() + db.refresh(workflow) + return ApiResponse(data=WorkflowDefOut.model_validate(workflow)) + + +@router.delete("/{workflow_id}", response_model=ApiResponse[None]) +def delete_workflow( + workflow_id: str, + db: Session = Depends(get_db), + user: BxUserContext = Depends(get_bx_current_user), +): + tenant_no = get_tenant_no(db, user.to_tenant_user_dict()) + workflow = WorkflowService.get_by_id(db, workflow_id, tenant_no) + if not workflow: + raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="工作流不存在") + WorkflowService.soft_delete(db, workflow_id, user=user) + db.commit() + return ApiResponse(data=None) diff --git a/backend/app/core/attachment_biz.py b/backend/app/core/attachment_biz.py index de23ae5eb..66b2a3776 100644 --- a/backend/app/core/attachment_biz.py +++ b/backend/app/core/attachment_biz.py @@ -10,6 +10,9 @@ BIZ_TYPE_DEFAULT_FOLDER: dict[str, str] = { "crm_customer_follow_attachment": "crm/customer/follow", "crm_opportunity_follow_attachment": "crm/opportunity/follow", "crm_clue_follow_attachment": "crm/clue/follow", + "advance": "bx/advance", + "reimburse_apply": "bx/reimburse", + "advance_issue": "bx/advance-issue", } diff --git a/backend/app/core/bx_auth.py b/backend/app/core/bx_auth.py new file mode 100644 index 000000000..0f633df5e --- /dev/null +++ b/backend/app/core/bx_auth.py @@ -0,0 +1,40 @@ +"""报销模块认证适配:门户 JWT 用户 → bx 业务上下文。""" +from __future__ import annotations + +from dataclasses import dataclass +from typing import Any, Dict + +from fastapi import Depends + +from app.core.menu_guard import require_admin_or_super_admin + + +@dataclass +class BxUserContext: + """bx Service/Router 使用的当前用户上下文(sys_user.id 为 UUID 字符串)。""" + + id: str + name: str + dept_id: str + role: str + tenant_no: str + + def to_tenant_user_dict(self) -> Dict[str, Any]: + """供 get_tenant_no 等门户工具使用。""" + return { + "user_id": self.id, + "role": self.role, + "tenant_no": self.tenant_no, + } + + +def get_bx_current_user( + user: dict = Depends(require_admin_or_super_admin), +) -> BxUserContext: + return BxUserContext( + id=(user.get("user_id") or "").strip(), + name=(user.get("real_name") or user.get("username") or "").strip(), + dept_id=(user.get("region_id") or "").strip(), + role=(user.get("role") or "").strip(), + tenant_no=(user.get("tenant_no") or "").strip(), + ) diff --git a/backend/app/core/config.py b/backend/app/core/config.py index 7faec9de1..05310683b 100644 --- a/backend/app/core/config.py +++ b/backend/app/core/config.py @@ -138,7 +138,14 @@ class Settings(BaseSettings): "/api/web/admin/products/upload-image," "/api/web/admin/categories/upload-image," "/api/web/admin/users/upload-avatar," - "/api/invoice/download" + "/api/invoice/download," + "/api/bx/health," + "/api/expense-items," + "/api/workflows," + "/api/advances," + "/api/reimburses," + "/api/payments," + "/api/attachments" ) class Config: diff --git a/backend/app/main.py b/backend/app/main.py index 87b8c996b..e1c952d8c 100644 --- a/backend/app/main.py +++ b/backend/app/main.py @@ -13,6 +13,7 @@ from app.core.database import SessionLocal from app.core.api_request_log_middleware import ApiRequestLogMiddleware from app.core.api_crypto_middleware import ApiCryptoMiddleware from app.models import models # noqa: F401 +import app.models.bx_models # noqa: F401 from app.api import ( public_router, menu_router, @@ -21,6 +22,7 @@ from app.api import ( leave_router, crm_router, monitor_router, + bx_router, ) @@ -112,6 +114,7 @@ app.include_router(admin_router, prefix=settings.API_V1_PREFIX) app.include_router(workflow_router, prefix=settings.API_V1_PREFIX) app.include_router(leave_router, prefix=settings.API_V1_PREFIX) app.include_router(crm_router, prefix=settings.API_V1_PREFIX) +app.include_router(bx_router, prefix=settings.API_V1_PREFIX) app.include_router(monitor_router, prefix=settings.API_V1_PREFIX) diff --git a/backend/app/models/bx_models.py b/backend/app/models/bx_models.py new file mode 100644 index 000000000..a6b167966 --- /dev/null +++ b/backend/app/models/bx_models.py @@ -0,0 +1,269 @@ +"""报销(bx)模块数据模型 — 对齐 docs/sql/20260606_bx_tables.sql""" +from datetime import datetime + +from sqlalchemy import BigInteger, Column, DateTime, DECIMAL, ForeignKey, Integer, SmallInteger, String +from sqlalchemy.orm import relationship + +from app.core.database import Base + + +class BxExpenseItem(Base): + __tablename__ = "bx_expense_item" + + id = Column(String(64), primary_key=True, comment="主键ID(UUID)") + parent_id = Column(String(64), nullable=False, default="0", comment="父级项目ID") + item_name = Column(String(128), nullable=False, comment="项目名称") + item_code = Column(String(64), nullable=True, comment="项目编码") + level = Column(SmallInteger, nullable=False, default=1, comment="层级") + sort_order = Column(Integer, nullable=False, default=0, comment="排序号") + status = Column(SmallInteger, nullable=False, default=1, comment="状态") + tenant_no = Column(String(64), nullable=False, default="shanxia2.0", comment="租户编号") + order_num = Column(Integer, nullable=True, comment="排序号(公共)") + remark = Column(String(512), nullable=True, comment="备注") + create_by = Column(String(64), nullable=True, comment="创建人") + create_dept_id = Column(String(64), nullable=False, default="", comment="创建部门") + create_time = Column(DateTime, nullable=False, default=datetime.now, comment="创建时间") + update_by = Column(String(64), nullable=True, comment="更新人") + update_time = Column( + DateTime, nullable=False, default=datetime.now, onupdate=datetime.now, comment="更新时间" + ) + del_flag = Column(SmallInteger, nullable=False, default=0, comment="删除标记") + + +class BxWorkflowDef(Base): + __tablename__ = "bx_workflow_def" + + id = Column(String(64), primary_key=True, comment="主键ID(UUID)") + biz_type = Column(String(32), nullable=False, comment="业务类型") + wf_name = Column(String(128), nullable=False, comment="工作流名称") + status = Column(SmallInteger, nullable=False, default=1, comment="状态") + tenant_no = Column(String(64), nullable=False, default="shanxia2.0", comment="租户编号") + order_num = Column(Integer, nullable=True, comment="排序号(公共)") + remark = Column(String(512), nullable=True, comment="备注") + create_by = Column(String(64), nullable=True, comment="创建人") + create_dept_id = Column(String(64), nullable=False, default="", comment="创建部门") + create_time = Column(DateTime, nullable=False, default=datetime.now, comment="创建时间") + update_by = Column(String(64), nullable=True, comment="更新人") + update_time = Column( + DateTime, nullable=False, default=datetime.now, onupdate=datetime.now, comment="更新时间" + ) + del_flag = Column(SmallInteger, nullable=False, default=0, comment="删除标记") + + nodes = relationship( + "BxWorkflowNode", + back_populates="workflow_def", + primaryjoin="and_(BxWorkflowDef.id == BxWorkflowNode.wf_id, BxWorkflowNode.del_flag == 0)", + foreign_keys="BxWorkflowNode.wf_id", + order_by="BxWorkflowNode.node_order", + lazy="selectin", + ) + + +class BxWorkflowNode(Base): + __tablename__ = "bx_workflow_node" + + id = Column(String(64), primary_key=True, comment="主键ID(UUID)") + wf_id = Column( + String(64), + ForeignKey("bx_workflow_def.id"), + nullable=False, + comment="工作流定义ID", + ) + node_name = Column(String(128), nullable=False, comment="节点名称") + node_order = Column(Integer, nullable=False, default=0, comment="节点顺序") + approver_id = Column(String(64), nullable=True, comment="审批人用户ID") + approver_name = Column(String(64), nullable=True, comment="审批人姓名") + tenant_no = Column(String(64), nullable=False, default="shanxia2.0", comment="租户编号") + order_num = Column(Integer, nullable=True, comment="排序号(公共)") + remark = Column(String(512), nullable=True, comment="备注") + create_by = Column(String(64), nullable=True, comment="创建人") + create_dept_id = Column(String(64), nullable=False, default="", comment="创建部门") + create_time = Column(DateTime, nullable=False, default=datetime.now, comment="创建时间") + update_by = Column(String(64), nullable=True, comment="更新人") + update_time = Column( + DateTime, nullable=False, default=datetime.now, onupdate=datetime.now, comment="更新时间" + ) + del_flag = Column(SmallInteger, nullable=False, default=0, comment="删除标记") + + workflow_def = relationship( + "BxWorkflowDef", + back_populates="nodes", + foreign_keys=[wf_id], + ) + + +class BxAdvanceApply(Base): + __tablename__ = "bx_advance_apply" + + id = Column(String(64), primary_key=True, comment="主键ID(UUID)") + apply_code = Column(String(32), nullable=False, comment="申请单号") + applicant_id = Column(String(64), nullable=False, comment="申请人用户ID") + applicant_name = Column(String(64), nullable=False, comment="申请人姓名") + reason = Column(String(1024), nullable=False, comment="申请原因") + purpose = Column(String(1024), nullable=True, comment="申请目的") + expense_item_id = Column(String(64), nullable=True, comment="费用项目ID") + amount = Column(DECIMAL(14, 2), nullable=False, comment="申请金额") + status = Column(String(32), nullable=False, default="draft", comment="状态") + current_node = Column(String(128), nullable=True, comment="当前审批节点") + wf_id = Column(String(64), nullable=True, comment="工作流定义ID") + issue_status = Column(String(32), nullable=True, comment="发放状态") + issue_time = Column(DateTime, nullable=True, comment="发放时间") + issue_user_id = Column(String(64), nullable=True, comment="发放操作人ID") + issue_user_name = Column(String(64), nullable=True, comment="发放操作人姓名") + issue_remark = Column(String(512), nullable=True, comment="发放备注") + actual_amount = Column(DECIMAL(14, 2), nullable=True, comment="实际发放金额") + tenant_no = Column(String(64), nullable=False, default="shanxia2.0", comment="租户编号") + order_num = Column(Integer, nullable=True, comment="排序号(公共)") + remark = Column(String(512), nullable=True, comment="备注") + create_by = Column(String(64), nullable=True, comment="创建人") + create_dept_id = Column(String(64), nullable=False, default="", comment="创建部门") + create_time = Column(DateTime, nullable=False, default=datetime.now, comment="创建时间") + update_by = Column(String(64), nullable=True, comment="更新人") + update_time = Column( + DateTime, nullable=False, default=datetime.now, onupdate=datetime.now, comment="更新时间" + ) + del_flag = Column(SmallInteger, nullable=False, default=0, comment="删除标记") + + +class BxAdvanceApproval(Base): + __tablename__ = "bx_advance_approval" + + id = Column(String(64), primary_key=True, comment="主键ID(UUID)") + apply_id = Column(String(64), nullable=False, comment="备用金申请单ID") + node_order = Column(Integer, nullable=False, comment="节点顺序") + node_name = Column(String(128), nullable=False, comment="节点名称") + approver_id = Column(String(64), nullable=False, comment="审批人用户ID") + approver_name = Column(String(64), nullable=False, comment="审批人姓名") + approval_status = Column(String(32), nullable=False, comment="审批结果") + approval_opinion = Column(String(1024), nullable=True, comment="审批意见") + approval_time = Column(DateTime, nullable=False, comment="审批时间") + tenant_no = Column(String(64), nullable=False, default="shanxia2.0", comment="租户编号") + order_num = Column(Integer, nullable=True, comment="排序号(公共)") + remark = Column(String(512), nullable=True, comment="备注") + create_by = Column(String(64), nullable=True, comment="创建人") + create_dept_id = Column(String(64), nullable=False, default="", comment="创建部门") + create_time = Column(DateTime, nullable=False, default=datetime.now, comment="创建时间") + update_by = Column(String(64), nullable=True, comment="更新人") + update_time = Column(DateTime, nullable=True, onupdate=datetime.now, comment="更新时间") + del_flag = Column(SmallInteger, nullable=False, default=0, comment="删除标记") + + +class BxReimburseApply(Base): + __tablename__ = "bx_reimburse_apply" + + id = Column(String(64), primary_key=True, comment="主键ID(UUID)") + apply_code = Column(String(32), nullable=False, comment="报销单号") + title = Column(String(256), nullable=False, comment="报销标题") + applicant_id = Column(String(64), nullable=False, comment="申请人用户ID") + applicant_name = Column(String(64), nullable=False, comment="申请人姓名") + expense_id = Column(String(64), nullable=False, comment="费用项目ID") + expense_name = Column(String(128), nullable=False, comment="费用项目名称") + amount = Column(DECIMAL(14, 2), nullable=False, comment="报销金额") + invoice_count = Column(Integer, nullable=False, default=0, comment="发票数量") + attach_count = Column(Integer, nullable=False, default=0, comment="附件数量") + status = Column(String(32), nullable=False, default="draft", comment="状态") + current_node = Column(String(128), nullable=True, comment="当前审批节点") + wf_id = Column(String(64), nullable=True, comment="工作流定义ID") + pay_status = Column(String(32), nullable=True, comment="支付状态") + pay_time = Column(DateTime, nullable=True, comment="支付时间") + pay_user_id = Column(String(64), nullable=True, comment="支付操作人ID") + pay_user_name = Column(String(64), nullable=True, comment="支付操作人姓名") + actual_amount = Column(DECIMAL(14, 2), nullable=True, comment="实际发放金额") + offset_advance_id = Column(String(64), nullable=True, comment="冲抵备用金单ID") + offset_amount = Column(DECIMAL(14, 2), nullable=True, comment="冲抵金额") + tenant_no = Column(String(64), nullable=False, default="shanxia2.0", comment="租户编号") + order_num = Column(Integer, nullable=True, comment="排序号(公共)") + remark = Column(String(512), nullable=True, comment="备注说明") + create_by = Column(String(64), nullable=True, comment="创建人") + create_dept_id = Column(String(64), nullable=False, default="", comment="创建部门") + create_time = Column(DateTime, nullable=False, default=datetime.now, comment="创建时间") + update_by = Column(String(64), nullable=True, comment="更新人") + update_time = Column( + DateTime, nullable=False, default=datetime.now, onupdate=datetime.now, comment="更新时间" + ) + del_flag = Column(SmallInteger, nullable=False, default=0, comment="删除标记") + + +class BxReimburseDetail(Base): + __tablename__ = "bx_reimburse_detail" + + id = Column(String(64), primary_key=True, comment="主键ID(UUID)") + reimburse_id = Column(String(64), nullable=False, comment="报销单ID") + expense_id = Column(String(64), nullable=False, comment="费用项目ID") + expense_name = Column(String(128), nullable=False, comment="费用项目名称") + amount = Column(DECIMAL(14, 2), nullable=False, comment="报销金额") + tenant_no = Column(String(64), nullable=False, default="shanxia2.0", comment="租户编号") + order_num = Column(Integer, nullable=True, comment="排序号(公共)") + remark = Column(String(512), nullable=True, comment="备注") + create_by = Column(String(64), nullable=True, comment="创建人") + create_dept_id = Column(String(64), nullable=False, default="", comment="创建部门") + create_time = Column(DateTime, nullable=False, default=datetime.now, comment="创建时间") + update_by = Column(String(64), nullable=True, comment="更新人") + update_time = Column( + DateTime, nullable=False, default=datetime.now, onupdate=datetime.now, comment="更新时间" + ) + del_flag = Column(SmallInteger, nullable=False, default=0, comment="删除标记") + + +class BxReimburseApproval(Base): + __tablename__ = "bx_reimburse_approval" + + id = Column(String(64), primary_key=True, comment="主键ID(UUID)") + apply_id = Column(String(64), nullable=False, comment="报销申请单ID") + node_order = Column(Integer, nullable=False, comment="节点顺序") + node_name = Column(String(128), nullable=False, comment="节点名称") + approver_id = Column(String(64), nullable=False, comment="审批人用户ID") + approver_name = Column(String(64), nullable=False, comment="审批人姓名") + approval_status = Column(String(32), nullable=False, comment="审批结果") + approval_opinion = Column(String(1024), nullable=True, comment="审批意见") + approval_time = Column(DateTime, nullable=False, comment="审批时间") + tenant_no = Column(String(64), nullable=False, default="shanxia2.0", comment="租户编号") + order_num = Column(Integer, nullable=True, comment="排序号(公共)") + remark = Column(String(512), nullable=True, comment="备注") + create_by = Column(String(64), nullable=True, comment="创建人") + create_dept_id = Column(String(64), nullable=False, default="", comment="创建部门") + create_time = Column(DateTime, nullable=False, default=datetime.now, comment="创建时间") + update_by = Column(String(64), nullable=True, comment="更新人") + update_time = Column(DateTime, nullable=True, onupdate=datetime.now, comment="更新时间") + del_flag = Column(SmallInteger, nullable=False, default=0, comment="删除标记") + + +class BxReimburseOffset(Base): + __tablename__ = "bx_reimburse_offset" + + id = Column(String(64), primary_key=True, comment="主键ID(UUID)") + reimburse_id = Column(String(64), nullable=False, comment="报销申请单ID") + advance_id = Column(String(64), nullable=False, comment="备用金申请单ID") + offset_amount = Column(DECIMAL(14, 2), nullable=False, comment="冲抵金额") + tenant_no = Column(String(64), nullable=False, default="shanxia2.0", comment="租户编号") + order_num = Column(Integer, nullable=True, comment="排序号(公共)") + remark = Column(String(512), nullable=True, comment="备注") + create_by = Column(String(64), nullable=True, comment="创建人") + create_dept_id = Column(String(64), nullable=False, default="", comment="创建部门") + create_time = Column(DateTime, nullable=False, default=datetime.now, comment="创建时间") + update_by = Column(String(64), nullable=True, comment="更新人") + update_time = Column(DateTime, nullable=True, onupdate=datetime.now, comment="更新时间") + del_flag = Column(SmallInteger, nullable=False, default=0, comment="删除标记") + + +class BxAttachment(Base): + __tablename__ = "bx_attachment" + + id = Column(String(64), primary_key=True, comment="主键ID(UUID)") + biz_type = Column(String(32), nullable=False, comment="业务类型") + biz_id = Column(String(64), nullable=False, comment="业务单据ID") + file_name = Column(String(256), nullable=False, comment="文件名") + file_path = Column(String(512), nullable=False, comment="文件存储路径") + file_type = Column(String(128), nullable=True, comment="文件MIME类型") + file_size = Column(BigInteger, nullable=True, comment="文件大小") + attach_type = Column(String(32), nullable=True, default="attachment", comment="附件类型") + sort_order = Column(Integer, nullable=False, default=0, comment="排序号") + tenant_no = Column(String(64), nullable=False, default="shanxia2.0", comment="租户编号") + order_num = Column(Integer, nullable=True, comment="排序号(公共)") + remark = Column(String(512), nullable=True, comment="备注") + create_by = Column(String(64), nullable=True, comment="创建人") + create_dept_id = Column(String(64), nullable=False, default="", comment="创建部门") + create_time = Column(DateTime, nullable=False, default=datetime.now, comment="创建时间") + update_by = Column(String(64), nullable=True, comment="更新人") + update_time = Column(DateTime, nullable=True, onupdate=datetime.now, comment="更新时间") + del_flag = Column(SmallInteger, nullable=False, default=0, comment="删除标记") diff --git a/backend/app/schemas/bx/__init__.py b/backend/app/schemas/bx/__init__.py new file mode 100644 index 000000000..8794e78dd --- /dev/null +++ b/backend/app/schemas/bx/__init__.py @@ -0,0 +1 @@ +"""报销(bx)Pydantic 模型 — 响应协议与 bx 原系统保持一致""" diff --git a/backend/app/schemas/bx/advance.py b/backend/app/schemas/bx/advance.py new file mode 100644 index 000000000..1b036e17a --- /dev/null +++ b/backend/app/schemas/bx/advance.py @@ -0,0 +1,156 @@ +from typing import Optional + +from pydantic import BaseModel, ConfigDict, Field, field_validator +from pydantic.alias_generators import to_camel + +from app.schemas.bx.common import DatetimeToStr, OptDatetimeToStr + + +def _coerce_optional_id(value): + if value is None: + return None + s = str(value).strip() + return s or None + + +class AdvanceApplyCreate(BaseModel): + model_config = ConfigDict(populate_by_name=True, alias_generator=to_camel) + + reason: str + purpose: Optional[str] = None + amount: float + remark: Optional[str] = None + expense_item_id: Optional[str] = None + + @field_validator("expense_item_id", mode="before") + @classmethod + def validate_expense_item_id(cls, value): + return _coerce_optional_id(value) + + +class AdvanceApplyUpdate(BaseModel): + model_config = ConfigDict(populate_by_name=True, alias_generator=to_camel) + + reason: Optional[str] = None + purpose: Optional[str] = None + amount: Optional[float] = None + remark: Optional[str] = None + expense_item_id: Optional[str] = None + + @field_validator("expense_item_id", mode="before") + @classmethod + def validate_expense_item_id(cls, value): + return _coerce_optional_id(value) + + +class AdvanceApplyOut(BaseModel): + model_config = ConfigDict(from_attributes=True, populate_by_name=True, alias_generator=to_camel) + + id: str + apply_code: str + applicant_id: str + applicant_name: str + reason: str + purpose: Optional[str] = None + expense_item_id: Optional[str] = None + amount: float + status: str + current_node: Optional[str] = None + apply_time: DatetimeToStr = Field(validation_alias="create_time") + remark: Optional[str] = None + actual_amount: Optional[float] = None + offset_amount: Optional[float] = None + issue_status: Optional[str] = None + issue_time: OptDatetimeToStr = None + issue_user_name: Optional[str] = None + issue_remark: Optional[str] = None + + +class AdvanceApprovalCreate(BaseModel): + model_config = ConfigDict(populate_by_name=True, alias_generator=to_camel) + + approval_status: Optional[str] = None + approval_opinion: Optional[str] = None + + +class AdvanceApprovalOut(BaseModel): + model_config = ConfigDict(from_attributes=True, populate_by_name=True, alias_generator=to_camel) + + id: str + advance_id: str + node_name: str + node_order: int + approval_status: str + approval_opinion: Optional[str] = None + approver_name: str + approval_time: OptDatetimeToStr = None + + +class AdvanceMyStatsOut(BaseModel): + model_config = ConfigDict(populate_by_name=True, alias_generator=to_camel) + + total_count: int + pending_count: int + approved_pass_count: int + rejected_count: int + pending_issue_count: int + issued_count: int + issued_amount: float + month_apply_amount: float + month_apply_count: int + offset_total: float + + +class AdvanceApproverPendingStatsOut(BaseModel): + model_config = ConfigDict(populate_by_name=True, alias_generator=to_camel) + + pending_total: int + month_pending_amount: float + + +class AdvanceIssueOut(BaseModel): + model_config = ConfigDict(from_attributes=True, populate_by_name=True, alias_generator=to_camel) + + id: str + apply_code: str + applicant_id: str + applicant_name: str + reason: str + amount: float + apply_time: DatetimeToStr = Field(validation_alias="create_time") + approve_time: DatetimeToStr = Field(validation_alias="update_time") + issue_status: Optional[str] = None + issue_time: OptDatetimeToStr = None + issue_user_name: Optional[str] = None + issue_remark: Optional[str] = None + actual_amount: Optional[float] = None + offset_amount: Optional[float] = None + + +class AdvanceIssueRequest(BaseModel): + model_config = ConfigDict(populate_by_name=True, alias_generator=to_camel) + + issue_remark: Optional[str] = None + actual_amount: Optional[float] = None + + +class AdvanceOffsetRecordOut(BaseModel): + model_config = ConfigDict(populate_by_name=True, alias_generator=to_camel) + + reimburse_id: str + reimburse_apply_code: str + reimburse_title: Optional[str] = None + reimburse_applicant_name: Optional[str] = None + offset_amount: float + remark: Optional[str] = None + operator: Optional[str] = None + create_time: OptDatetimeToStr = None + + +class AdvanceFinanceIssueStatsOut(BaseModel): + model_config = ConfigDict(populate_by_name=True, alias_generator=to_camel) + + pending_count: int + issued_count: int + pending_amount: float + issued_month_amount: float diff --git a/backend/app/schemas/bx/attachment.py b/backend/app/schemas/bx/attachment.py new file mode 100644 index 000000000..3095b801a --- /dev/null +++ b/backend/app/schemas/bx/attachment.py @@ -0,0 +1,19 @@ +from typing import Optional + +from pydantic import BaseModel, ConfigDict +from pydantic.alias_generators import to_camel + +from app.schemas.bx.common import DatetimeToStr + + +class AttachmentOut(BaseModel): + model_config = ConfigDict(from_attributes=True, populate_by_name=True, alias_generator=to_camel) + + id: str + file_name: str + file_path: str + file_size: Optional[int] = None + file_type: Optional[str] = None + biz_type: Optional[str] = None + biz_id: Optional[str] = None + create_time: DatetimeToStr diff --git a/backend/app/schemas/bx/common.py b/backend/app/schemas/bx/common.py new file mode 100644 index 000000000..2c234ceba --- /dev/null +++ b/backend/app/schemas/bx/common.py @@ -0,0 +1,46 @@ +"""bx 原系统 API 响应包装(code=0 / msg / data.rows),与门户 success_response 分离。""" +from datetime import datetime +from typing import Annotated, Generic, List, Optional, TypeVar + +from pydantic import BaseModel, ConfigDict, PlainSerializer +from pydantic.alias_generators import to_camel + +T = TypeVar("T") + + +def _dt_to_str(v: Optional[datetime]) -> Optional[str]: + if v is None: + return None + return v.strftime("%Y-%m-%d %H:%M:%S") + + +DatetimeToStr = Annotated[datetime, PlainSerializer(_dt_to_str, return_type=str)] +OptDatetimeToStr = Annotated[Optional[datetime], PlainSerializer(_dt_to_str, return_type=Optional[str])] + + +class PagedQuery(BaseModel): + model_config = ConfigDict(populate_by_name=True, alias_generator=to_camel) + + page: int = 1 + page_size: int = 10 + + +class ApiResponse(BaseModel, Generic[T]): + code: int = 0 + msg: str = "success" + data: Optional[T] = None + + +class PagedData(BaseModel, Generic[T]): + model_config = ConfigDict(populate_by_name=True, alias_generator=to_camel) + + rows: List[T] + total: int + page: int + page_size: int + + +class PagedResponse(BaseModel, Generic[T]): + code: int = 0 + msg: str = "success" + data: Optional[PagedData[T]] = None diff --git a/backend/app/schemas/bx/expense_item.py b/backend/app/schemas/bx/expense_item.py new file mode 100644 index 000000000..f05f341c2 --- /dev/null +++ b/backend/app/schemas/bx/expense_item.py @@ -0,0 +1,64 @@ +from typing import List, Optional + +from pydantic import BaseModel, ConfigDict, field_validator +from pydantic.alias_generators import to_camel + + +def _coerce_id(value) -> str: + if value is None: + return "0" + return str(value).strip() + + +class ExpenseItemCreate(BaseModel): + model_config = ConfigDict(populate_by_name=True, alias_generator=to_camel) + + parent_id: str = "0" + item_name: str + item_code: str + level: int = 1 + sort_order: int = 0 + status: int = 1 + remark: Optional[str] = None + + @field_validator("parent_id", mode="before") + @classmethod + def validate_parent_id(cls, value): + return _coerce_id(value) + + +class ExpenseItemUpdate(BaseModel): + model_config = ConfigDict(populate_by_name=True, alias_generator=to_camel) + + parent_id: Optional[str] = None + item_name: Optional[str] = None + item_code: Optional[str] = None + level: Optional[int] = None + sort_order: Optional[int] = None + status: Optional[int] = None + remark: Optional[str] = None + + @field_validator("parent_id", mode="before") + @classmethod + def validate_parent_id(cls, value): + if value is None: + return None + return _coerce_id(value) + + +class ExpenseItemOut(BaseModel): + model_config = ConfigDict(from_attributes=True, populate_by_name=True, alias_generator=to_camel) + + id: str + parent_id: str + item_name: str + item_code: Optional[str] = None + level: int + sort_order: int + status: int + remark: Optional[str] = None + child_count: int = 0 + children: Optional[List["ExpenseItemOut"]] = None + + +ExpenseItemOut.model_rebuild() diff --git a/backend/app/schemas/bx/reimburse.py b/backend/app/schemas/bx/reimburse.py new file mode 100644 index 000000000..e4884b594 --- /dev/null +++ b/backend/app/schemas/bx/reimburse.py @@ -0,0 +1,193 @@ +from typing import List, Optional + +from pydantic import BaseModel, ConfigDict, Field, field_validator +from pydantic.alias_generators import to_camel + +from app.schemas.bx.common import DatetimeToStr, OptDatetimeToStr + + +def _coerce_id(value): + if value is None: + return None + return str(value).strip() + + +class ReimburseDetailCreate(BaseModel): + model_config = ConfigDict(populate_by_name=True, alias_generator=to_camel) + + expense_item_id: str + amount: float + remark: Optional[str] = None + + @field_validator("expense_item_id", mode="before") + @classmethod + def validate_expense_item_id(cls, value): + s = _coerce_id(value) + if not s: + raise ValueError("费用项目不能为空") + return s + + +class ReimburseDetailOut(BaseModel): + model_config = ConfigDict(from_attributes=True, populate_by_name=True, alias_generator=to_camel) + + id: str + expense_id: str + expense_name: str + amount: float + remark: Optional[str] = None + + +class ReimburseApplyCreate(BaseModel): + model_config = ConfigDict(populate_by_name=True, alias_generator=to_camel) + + title: Optional[str] = None + details: List[ReimburseDetailCreate] = Field(..., min_length=1) + remark: Optional[str] = None + + @field_validator("details") + @classmethod + def details_must_not_be_empty(cls, value): + if not value or len(value) < 1: + raise ValueError("至少需要一条报销明细") + return value + + +class ReimburseApplyUpdate(BaseModel): + model_config = ConfigDict(populate_by_name=True, alias_generator=to_camel) + + details: Optional[List[ReimburseDetailCreate]] = None + remark: Optional[str] = None + + +class ReimburseApplyOut(BaseModel): + model_config = ConfigDict(from_attributes=True, populate_by_name=True, alias_generator=to_camel) + + id: str + apply_code: str + applicant_id: str + applicant_name: str + title: str + expense_id: Optional[str] = None + expense_name: str + amount: float + current_node: Optional[str] = None + apply_time: DatetimeToStr = Field(validation_alias="create_time") + status: Optional[str] = None + remark: Optional[str] = None + invoice_count: int = 0 + attach_count: int = 0 + pay_status: Optional[str] = None + pay_time: OptDatetimeToStr = None + pay_user_name: Optional[str] = None + actual_amount: Optional[float] = None + offset_advance_id: Optional[str] = None + offset_amount: Optional[float] = None + details: Optional[List[ReimburseDetailOut]] = None + + +class ReimburseApprovalCreate(BaseModel): + model_config = ConfigDict(populate_by_name=True, alias_generator=to_camel) + + approval_status: Optional[str] = None + approval_opinion: Optional[str] = None + + +class ReimburseApprovalOut(BaseModel): + model_config = ConfigDict(from_attributes=True, populate_by_name=True, alias_generator=to_camel) + + id: str + reimburse_id: str + node_name: str + node_order: int + approval_status: str + approval_opinion: Optional[str] = None + approver_name: str + approval_time: OptDatetimeToStr = None + + +class ReimburseMyStatsOut(BaseModel): + model_config = ConfigDict(populate_by_name=True, alias_generator=to_camel) + + total_count: int + pending_count: int + approved_count: int + rejected_count: int + approved_amount: float + month_apply_amount: float + month_apply_count: int + + +class ReimburseApproverPendingStatsOut(BaseModel): + model_config = ConfigDict(populate_by_name=True, alias_generator=to_camel) + + pending_total: int + month_pending_amount: float + + +class PayRequest(BaseModel): + model_config = ConfigDict(populate_by_name=True, alias_generator=to_camel) + + pay_remark: Optional[str] = None + actual_amount: Optional[float] = None + + +class OffsetRequest(BaseModel): + model_config = ConfigDict(populate_by_name=True, alias_generator=to_camel) + + advance_id: str + offset_amount: float + remark: Optional[str] = None + + @field_validator("advance_id", mode="before") + @classmethod + def validate_advance_id(cls, value): + s = _coerce_id(value) + if not s: + raise ValueError("备用金单不能为空") + return s + + +class OffsetItem(BaseModel): + model_config = ConfigDict(populate_by_name=True, alias_generator=to_camel) + + advance_id: str + offset_amount: float + + @field_validator("advance_id", mode="before") + @classmethod + def validate_advance_id(cls, value): + s = _coerce_id(value) + if not s: + raise ValueError("备用金单不能为空") + return s + + +class BatchOffsetRequest(BaseModel): + model_config = ConfigDict(populate_by_name=True, alias_generator=to_camel) + + items: List[OffsetItem] + pay_amount: float = 0 + remark: Optional[str] = None + + +class ReimburseOffsetRecordOut(BaseModel): + model_config = ConfigDict(populate_by_name=True, alias_generator=to_camel) + + advance_id: str + advance_apply_code: str + advance_applicant_name: Optional[str] = None + advance_reason: Optional[str] = None + offset_amount: float + remark: Optional[str] = None + operator: Optional[str] = None + create_time: OptDatetimeToStr = None + + +class PaymentFinanceStatsOut(BaseModel): + model_config = ConfigDict(populate_by_name=True, alias_generator=to_camel) + + pending_count: int + paid_count: int + offset_count: int + month_processed_amount: float diff --git a/backend/app/schemas/bx/workflow.py b/backend/app/schemas/bx/workflow.py new file mode 100644 index 000000000..be50f01e7 --- /dev/null +++ b/backend/app/schemas/bx/workflow.py @@ -0,0 +1,62 @@ +from typing import List, Optional + +from pydantic import BaseModel, ConfigDict, field_validator +from pydantic.alias_generators import to_camel + + +def _coerce_optional_id(value): + if value is None: + return None + return str(value).strip() + + +class WorkflowNodeCreate(BaseModel): + model_config = ConfigDict(populate_by_name=True, alias_generator=to_camel) + + node_name: str + node_order: int + approver_id: Optional[str] = None + approver_name: Optional[str] = None + + @field_validator("approver_id", mode="before") + @classmethod + def validate_approver_id(cls, value): + return _coerce_optional_id(value) + + +class WorkflowNodeOut(BaseModel): + model_config = ConfigDict(from_attributes=True, populate_by_name=True, alias_generator=to_camel) + + id: str + node_name: str + node_order: int + approver_id: Optional[str] = None + approver_name: Optional[str] = None + + +class WorkflowDefCreate(BaseModel): + model_config = ConfigDict(populate_by_name=True, alias_generator=to_camel) + + biz_type: str + wf_name: str + status: int = 1 + nodes: Optional[List[WorkflowNodeCreate]] = None + + +class WorkflowDefUpdate(BaseModel): + model_config = ConfigDict(populate_by_name=True, alias_generator=to_camel) + + biz_type: Optional[str] = None + wf_name: Optional[str] = None + status: Optional[int] = None + nodes: Optional[List[WorkflowNodeCreate]] = None + + +class WorkflowDefOut(BaseModel): + model_config = ConfigDict(from_attributes=True, populate_by_name=True, alias_generator=to_camel) + + id: str + biz_type: str + wf_name: str + status: int + nodes: List[WorkflowNodeOut] = [] diff --git a/backend/app/services/bx/__init__.py b/backend/app/services/bx/__init__.py new file mode 100644 index 000000000..c9809c039 --- /dev/null +++ b/backend/app/services/bx/__init__.py @@ -0,0 +1 @@ +"""报销模块 Service 包。""" diff --git a/backend/app/services/bx/advance.py b/backend/app/services/bx/advance.py new file mode 100644 index 000000000..9b6d65678 --- /dev/null +++ b/backend/app/services/bx/advance.py @@ -0,0 +1,606 @@ +from __future__ import annotations + +from datetime import datetime +from typing import Any, Dict, List, Optional, Sequence, Tuple + +from sqlalchemy import and_, func, or_ +from sqlalchemy.orm import Session + +from app.core.bx_auth import BxUserContext +from app.core.tenant_context import get_tenant_no +from app.core.utils import generate_uuid +from app.models.bx_models import ( + BxAdvanceApply, + BxAdvanceApproval, + BxReimburseOffset, + BxWorkflowDef, + BxWorkflowNode, +) +from app.services.bx.approval_cycle import filter_current_cycle_approvals +from app.services.bx.base import BxCrudService +from app.utils.bx_codegen import generate_apply_code +from app.utils.bx_date_range import current_month_bounds, parse_create_time_day_bounds + + +class AdvanceService: + @staticmethod + def _tenant_no(db: Session, user: BxUserContext) -> str: + return get_tenant_no(db, user.to_tenant_user_dict()) + + @staticmethod + def get_by_id(db: Session, advance_id: str, tenant_no: str) -> Optional[BxAdvanceApply]: + return BxCrudService.get_by_id(BxAdvanceApply, db, advance_id, tenant_no) + + @staticmethod + def get_paged( + db: Session, + tenant_no: str, + page: int, + page_size: int, + filters: Optional[List[Any]] = None, + ) -> Tuple[Sequence[BxAdvanceApply], int]: + return BxCrudService.get_paged(BxAdvanceApply, db, tenant_no, page, page_size, filters) + + @staticmethod + def create( + db: Session, + obj_in: dict, + *, + user: BxUserContext, + ) -> BxAdvanceApply: + tenant_no = AdvanceService._tenant_no(db, user) + return BxCrudService.create( + BxAdvanceApply, + db, + obj_in, + tenant_no=tenant_no, + user_id=user.id, + dept_id=user.dept_id, + ) + + @staticmethod + def update( + db: Session, + advance_id: str, + obj_in: dict, + *, + user: BxUserContext, + ) -> Optional[BxAdvanceApply]: + tenant_no = AdvanceService._tenant_no(db, user) + return BxCrudService.update( + BxAdvanceApply, + db, + advance_id, + tenant_no, + obj_in, + user_id=user.id, + ) + + @staticmethod + def soft_delete(db: Session, advance_id: str, *, user: BxUserContext) -> bool: + tenant_no = AdvanceService._tenant_no(db, user) + return BxCrudService.soft_delete( + BxAdvanceApply, db, advance_id, tenant_no, user_id=user.id + ) + + @staticmethod + def pending_approval( + db: Session, + user: BxUserContext, + tenant_no: str, + page: int, + page_size: int, + keyword: str = "", + applicant_id: Optional[str] = None, + apply_date: Optional[str] = None, + ): + subquery = ( + db.query(BxAdvanceApply.id) + .join( + BxWorkflowNode, + and_( + BxWorkflowNode.wf_id == BxAdvanceApply.wf_id, + BxWorkflowNode.node_name == BxAdvanceApply.current_node, + BxWorkflowNode.tenant_no == tenant_no, + BxWorkflowNode.del_flag == 0, + ), + ) + .filter( + BxAdvanceApply.del_flag == 0, + BxAdvanceApply.tenant_no == tenant_no, + BxAdvanceApply.status == "pending", + BxWorkflowNode.approver_id == user.id, + ) + ) + if keyword: + subquery = subquery.filter( + or_( + BxAdvanceApply.apply_code.contains(keyword), + BxAdvanceApply.applicant_name.contains(keyword), + ) + ) + if applicant_id: + subquery = subquery.filter(BxAdvanceApply.applicant_id == applicant_id) + bounds = parse_create_time_day_bounds(apply_date) + if bounds: + d0, d1 = bounds + subquery = subquery.filter( + BxAdvanceApply.create_time >= d0, BxAdvanceApply.create_time < d1 + ) + subquery = subquery.subquery() + total = db.query(func.count()).select_from(subquery).scalar() or 0 + rows = ( + db.query(BxAdvanceApply) + .join(subquery, BxAdvanceApply.id == subquery.c.id) + .order_by(BxAdvanceApply.create_time.desc()) + .offset((page - 1) * page_size) + .limit(page_size) + .all() + ) + return rows, total + + @staticmethod + def approved_by_me( + db: Session, + user: BxUserContext, + tenant_no: str, + page: int, + page_size: int, + keyword: str = "", + applicant_id: Optional[str] = None, + apply_date: Optional[str] = None, + ): + subquery = ( + db.query(BxAdvanceApproval.apply_id) + .filter( + BxAdvanceApproval.approver_id == user.id, + BxAdvanceApproval.tenant_no == tenant_no, + BxAdvanceApproval.del_flag == 0, + ) + .distinct() + .subquery() + ) + query = ( + db.query(BxAdvanceApply) + .join(subquery, BxAdvanceApply.id == subquery.c.apply_id) + .filter(BxAdvanceApply.del_flag == 0, BxAdvanceApply.tenant_no == tenant_no) + ) + if keyword: + query = query.filter( + or_( + BxAdvanceApply.apply_code.contains(keyword), + BxAdvanceApply.applicant_name.contains(keyword), + ) + ) + if applicant_id: + query = query.filter(BxAdvanceApply.applicant_id == applicant_id) + bounds = parse_create_time_day_bounds(apply_date) + if bounds: + d0, d1 = bounds + query = query.filter(BxAdvanceApply.create_time >= d0, BxAdvanceApply.create_time < d1) + total = query.count() + rows = ( + query.order_by(BxAdvanceApply.create_time.desc()) + .offset((page - 1) * page_size) + .limit(page_size) + .all() + ) + return rows, total + + @staticmethod + def _workflow_nodes(db: Session, wf_id: str, tenant_no: str) -> List[BxWorkflowNode]: + return ( + db.query(BxWorkflowNode) + .filter( + BxWorkflowNode.wf_id == wf_id, + BxWorkflowNode.tenant_no == tenant_no, + BxWorkflowNode.del_flag == 0, + ) + .order_by(BxWorkflowNode.node_order) + .all() + ) + + @staticmethod + def submit(db: Session, apply_id: str, user: BxUserContext) -> Optional[BxAdvanceApply]: + tenant_no = AdvanceService._tenant_no(db, user) + apply_obj = AdvanceService.get_by_id(db, apply_id, tenant_no) + if not apply_obj: + return None + apply_obj.status = "pending" + if not apply_obj.apply_code: + apply_obj.apply_code = generate_apply_code(db, "BYJ", tenant_no) + apply_obj.update_by = user.id + if apply_obj.wf_id: + nodes = AdvanceService._workflow_nodes(db, apply_obj.wf_id, tenant_no) + if nodes: + apply_obj.current_node = nodes[0].node_name + db.flush() + return apply_obj + + @staticmethod + def approve( + db: Session, apply_id: str, approver: BxUserContext, opinion: str + ) -> Optional[BxAdvanceApply]: + tenant_no = AdvanceService._tenant_no(db, approver) + apply_obj = AdvanceService.get_by_id(db, apply_id, tenant_no) + if not apply_obj or not apply_obj.wf_id: + return None + nodes = AdvanceService._workflow_nodes(db, apply_obj.wf_id, tenant_no) + if not nodes: + return None + current_idx = None + for i, node in enumerate(nodes): + if node.node_name == apply_obj.current_node: + current_idx = i + break + if current_idx is None: + return None + current_node = nodes[current_idx] + if current_node.approver_id != approver.id: + return None + approval = BxAdvanceApproval( + id=generate_uuid(), + apply_id=apply_id, + approver_id=approver.id, + approver_name=approver.name, + approval_opinion=opinion, + node_name=current_node.node_name, + node_order=current_node.node_order, + approval_status="approved", + approval_time=datetime.now(), + tenant_no=tenant_no, + create_by=approver.id, + create_dept_id=approver.dept_id or "", + ) + db.add(approval) + if current_idx == len(nodes) - 1: + apply_obj.status = "approved" + apply_obj.current_node = None + else: + apply_obj.current_node = nodes[current_idx + 1].node_name + apply_obj.update_by = approver.id + db.flush() + return apply_obj + + @staticmethod + def reject( + db: Session, apply_id: str, approver: BxUserContext, opinion: str + ) -> Optional[BxAdvanceApply]: + tenant_no = AdvanceService._tenant_no(db, approver) + apply_obj = AdvanceService.get_by_id(db, apply_id, tenant_no) + if not apply_obj or not apply_obj.wf_id: + return None + nodes = AdvanceService._workflow_nodes(db, apply_obj.wf_id, tenant_no) + current_node = None + for node in nodes: + if node.node_name == apply_obj.current_node: + current_node = node + break + if current_node is None or current_node.approver_id != approver.id: + return None + approval = BxAdvanceApproval( + id=generate_uuid(), + apply_id=apply_id, + approver_id=approver.id, + approver_name=approver.name, + approval_opinion=opinion, + node_name=current_node.node_name, + node_order=current_node.node_order, + approval_status="rejected", + approval_time=datetime.now(), + tenant_no=tenant_no, + create_by=approver.id, + create_dept_id=approver.dept_id or "", + ) + db.add(approval) + apply_obj.status = "rejected" + apply_obj.current_node = None + apply_obj.update_by = approver.id + db.flush() + return apply_obj + + @staticmethod + def _approval_record_dict(approval: BxAdvanceApproval, apply_id: str) -> Dict[str, Any]: + return { + "id": approval.id, + "advance_id": apply_id, + "node_name": approval.node_name, + "node_order": approval.node_order, + "approval_status": approval.approval_status, + "approval_opinion": approval.approval_opinion, + "approver_name": approval.approver_name, + "approval_time": approval.approval_time, + } + + @staticmethod + def _latest_approval_per_node( + approvals: Sequence[BxAdvanceApproval], + ) -> Dict[int, BxAdvanceApproval]: + """同一节点多次审批时,取 approval_time 最新的一条作为当前节点状态。""" + approval_map: Dict[int, BxAdvanceApproval] = {} + for approval in approvals: + existing = approval_map.get(approval.node_order) + if existing is None: + approval_map[approval.node_order] = approval + continue + approval_time = approval.approval_time or datetime.min + existing_time = existing.approval_time or datetime.min + if approval_time >= existing_time: + approval_map[approval.node_order] = approval + return approval_map + + @staticmethod + def _query_approvals(db: Session, apply_id: str, tenant_no: str) -> List[BxAdvanceApproval]: + return ( + db.query(BxAdvanceApproval) + .filter( + BxAdvanceApproval.apply_id == apply_id, + BxAdvanceApproval.tenant_no == tenant_no, + BxAdvanceApproval.del_flag == 0, + ) + .all() + ) + + @staticmethod + def get_approvals(db: Session, apply_id: str, tenant_no: str) -> List[Dict[str, Any]]: + apply_obj = AdvanceService.get_by_id(db, apply_id, tenant_no) + if not apply_obj or not apply_obj.wf_id: + return [] + wf = BxCrudService.get_by_id(BxWorkflowDef, db, apply_obj.wf_id, tenant_no) + if not wf: + return [] + nodes = AdvanceService._workflow_nodes(db, wf.id, tenant_no) + if not nodes: + return [] + approvals = AdvanceService._query_approvals(db, apply_id, tenant_no) + cycle_approvals = filter_current_cycle_approvals(approvals, apply_obj.status) + approval_map = AdvanceService._latest_approval_per_node(cycle_approvals) + result: List[Dict[str, Any]] = [] + for node in nodes: + approval = approval_map.get(node.node_order) + if approval: + result.append(AdvanceService._approval_record_dict(approval, apply_id)) + else: + result.append( + { + "id": "0", + "advance_id": apply_id, + "node_name": node.node_name, + "node_order": node.node_order, + "approval_status": "pending", + "approval_opinion": None, + "approver_name": node.approver_name or "", + "approval_time": None, + } + ) + return result + + @staticmethod + def get_approval_history(db: Session, apply_id: str, tenant_no: str) -> List[Dict[str, Any]]: + """返回全部审批动作,按时间正序排列,用于展示完整审批历史。""" + if not AdvanceService.get_by_id(db, apply_id, tenant_no): + return [] + approvals = ( + db.query(BxAdvanceApproval) + .filter( + BxAdvanceApproval.apply_id == apply_id, + BxAdvanceApproval.tenant_no == tenant_no, + BxAdvanceApproval.del_flag == 0, + ) + .order_by(BxAdvanceApproval.approval_time.asc(), BxAdvanceApproval.create_time.asc()) + .all() + ) + return [AdvanceService._approval_record_dict(a, apply_id) for a in approvals] + + @staticmethod + def global_status_counts(db: Session, tenant_no: str) -> Dict[str, int]: + rows = ( + db.query(BxAdvanceApply.status, func.count()) + .filter(BxAdvanceApply.del_flag == 0, BxAdvanceApply.tenant_no == tenant_no) + .group_by(BxAdvanceApply.status) + .all() + ) + return {str(s or ""): int(c) for s, c in rows} + + @staticmethod + def my_apply_stats(db: Session, user_id: str, tenant_no: str) -> dict: + base = and_( + BxAdvanceApply.del_flag == 0, + BxAdvanceApply.tenant_no == tenant_no, + or_( + BxAdvanceApply.applicant_id == user_id, + BxAdvanceApply.create_by == user_id, + ), + ) + total_count = db.query(func.count()).select_from(BxAdvanceApply).filter(base).scalar() or 0 + pending = ( + db.query(func.count()) + .select_from(BxAdvanceApply) + .filter(base, BxAdvanceApply.status == "pending") + .scalar() + or 0 + ) + approved_pass = ( + db.query(func.count()) + .select_from(BxAdvanceApply) + .filter(base, BxAdvanceApply.status == "approved") + .scalar() + or 0 + ) + rejected_count = ( + db.query(func.count()) + .select_from(BxAdvanceApply) + .filter(base, BxAdvanceApply.status == "rejected") + .scalar() + or 0 + ) + pending_issue = approved_pass + issued = ( + db.query(func.count()) + .select_from(BxAdvanceApply) + .filter(base, BxAdvanceApply.status == "issued") + .scalar() + or 0 + ) + issued_amount = ( + db.query(func.coalesce(func.sum(BxAdvanceApply.amount), 0)) + .filter(base, BxAdvanceApply.status == "issued") + .scalar() + or 0 + ) + m0, m1 = current_month_bounds() + month_apply_amount = ( + db.query(func.coalesce(func.sum(BxAdvanceApply.amount), 0)) + .filter(base, BxAdvanceApply.create_time >= m0, BxAdvanceApply.create_time < m1) + .scalar() + or 0 + ) + month_apply_count = ( + db.query(func.count()) + .select_from(BxAdvanceApply) + .filter(base, BxAdvanceApply.create_time >= m0, BxAdvanceApply.create_time < m1) + .scalar() + or 0 + ) + offset_total = ( + db.query(func.coalesce(func.sum(BxReimburseOffset.offset_amount), 0)) + .join(BxAdvanceApply, BxReimburseOffset.advance_id == BxAdvanceApply.id) + .filter( + BxAdvanceApply.applicant_id == user_id, + BxAdvanceApply.del_flag == 0, + BxAdvanceApply.tenant_no == tenant_no, + BxReimburseOffset.tenant_no == tenant_no, + BxReimburseOffset.del_flag == 0, + ) + .scalar() + or 0 + ) + return { + "total_count": int(total_count), + "pending_count": int(pending), + "approved_pass_count": int(approved_pass), + "rejected_count": int(rejected_count), + "pending_issue_count": int(pending_issue), + "issued_count": int(issued), + "issued_amount": float(issued_amount), + "month_apply_amount": float(month_apply_amount), + "month_apply_count": int(month_apply_count), + "offset_total": float(offset_total), + } + + @staticmethod + def pending_approval_stats(db: Session, user: BxUserContext, tenant_no: str) -> dict: + subquery = ( + db.query(BxAdvanceApply.id) + .join( + BxWorkflowNode, + and_( + BxWorkflowNode.wf_id == BxAdvanceApply.wf_id, + BxWorkflowNode.node_name == BxAdvanceApply.current_node, + BxWorkflowNode.tenant_no == tenant_no, + BxWorkflowNode.del_flag == 0, + ), + ) + .filter( + BxAdvanceApply.del_flag == 0, + BxAdvanceApply.tenant_no == tenant_no, + BxAdvanceApply.status == "pending", + BxWorkflowNode.approver_id == user.id, + ) + ).subquery() + total = db.query(func.count()).select_from(subquery).scalar() or 0 + m0, m1 = current_month_bounds() + month_sum = ( + db.query(func.coalesce(func.sum(BxAdvanceApply.amount), 0)) + .join(subquery, BxAdvanceApply.id == subquery.c.id) + .filter(BxAdvanceApply.create_time >= m0, BxAdvanceApply.create_time < m1) + .scalar() + or 0 + ) + return {"pending_total": int(total), "month_pending_amount": float(month_sum)} + + @staticmethod + def offset_amount_map(db: Session, tenant_no: str, advance_ids: List[str]) -> Dict[str, float]: + if not advance_ids: + return {} + rows = ( + db.query( + BxReimburseOffset.advance_id, + func.coalesce(func.sum(BxReimburseOffset.offset_amount), 0), + ) + .filter( + BxReimburseOffset.advance_id.in_(advance_ids), + BxReimburseOffset.tenant_no == tenant_no, + BxReimburseOffset.del_flag == 0, + ) + .group_by(BxReimburseOffset.advance_id) + .all() + ) + return {str(advance_id): float(amount) for advance_id, amount in rows} + + @staticmethod + def issue( + db: Session, + advance_id: str, + user: BxUserContext, + remark: str = "", + actual_amount: Optional[float] = None, + ) -> Optional[BxAdvanceApply]: + tenant_no = AdvanceService._tenant_no(db, user) + apply_obj = AdvanceService.get_by_id(db, advance_id, tenant_no) + if not apply_obj: + return None + apply_obj.status = "issued" + apply_obj.update_by = user.id + apply_obj.issue_status = "issued" + apply_obj.issue_time = datetime.now() + apply_obj.issue_user_id = user.id + apply_obj.issue_user_name = user.name + if remark: + apply_obj.issue_remark = remark + if actual_amount is not None: + apply_obj.actual_amount = actual_amount + db.flush() + return apply_obj + + @staticmethod + def finance_issue_stats(db: Session, tenant_no: str) -> dict: + base = and_(BxAdvanceApply.del_flag == 0, BxAdvanceApply.tenant_no == tenant_no) + pending_f = and_( + BxAdvanceApply.status == "approved", + or_(BxAdvanceApply.issue_status.is_(None), BxAdvanceApply.issue_status != "issued"), + ) + pending_n = db.query(func.count()).select_from(BxAdvanceApply).filter(base, pending_f).scalar() or 0 + issued_n = ( + db.query(func.count()) + .select_from(BxAdvanceApply) + .filter(base, BxAdvanceApply.status == "issued") + .scalar() + or 0 + ) + pending_amount = ( + db.query(func.coalesce(func.sum(BxAdvanceApply.amount), 0)) + .filter(base, pending_f) + .scalar() + or 0 + ) + m0, m1 = current_month_bounds() + amt_expr = func.coalesce(BxAdvanceApply.actual_amount, BxAdvanceApply.amount) + issued_month = ( + db.query(func.coalesce(func.sum(amt_expr), 0)) + .filter( + base, + BxAdvanceApply.status == "issued", + BxAdvanceApply.issue_time.isnot(None), + BxAdvanceApply.issue_time >= m0, + BxAdvanceApply.issue_time < m1, + ) + .scalar() + or 0 + ) + return { + "pending_count": int(pending_n), + "issued_count": int(issued_n), + "pending_amount": float(pending_amount), + "issued_month_amount": float(issued_month), + } diff --git a/backend/app/services/bx/approval_cycle.py b/backend/app/services/bx/approval_cycle.py new file mode 100644 index 000000000..4682f0f50 --- /dev/null +++ b/backend/app/services/bx/approval_cycle.py @@ -0,0 +1,42 @@ +"""审批轮次过滤 — 驳回后重新提交时,进度接口仅展示当前轮次。""" +from __future__ import annotations + +from datetime import datetime +from typing import List, Sequence, TypeVar + +T = TypeVar("T") + + +def filter_current_cycle_approvals( + approvals: Sequence[T], + apply_status: str, + *, + status_attr: str = "approval_status", + time_attr: str = "approval_time", +) -> List[T]: + """审批进度仅展示当前轮次;完整历史由 get_approval_history 返回。""" + rejections = [a for a in approvals if getattr(a, status_attr) == "rejected"] + if not rejections: + return list(approvals) + + sorted_rejections = sorted( + rejections, + key=lambda a: getattr(a, time_attr) or datetime.min, + ) + last_rejection_time = getattr(sorted_rejections[-1], time_attr) or datetime.min + + if apply_status != "rejected": + return [ + a + for a in approvals + if (getattr(a, time_attr) or datetime.min) > last_rejection_time + ] + + cycle_start = datetime.min + if len(sorted_rejections) >= 2: + cycle_start = getattr(sorted_rejections[-2], time_attr) or datetime.min + return [ + a + for a in approvals + if (getattr(a, time_attr) or datetime.min) > cycle_start + ] diff --git a/backend/app/services/bx/attachment.py b/backend/app/services/bx/attachment.py new file mode 100644 index 000000000..727a13c72 --- /dev/null +++ b/backend/app/services/bx/attachment.py @@ -0,0 +1,119 @@ +from __future__ import annotations + +from typing import List, Optional + +from sqlalchemy import case as sql_case, func, or_ +from sqlalchemy.orm import Session + +from app.core.bx_auth import BxUserContext +from app.core.tenant_context import get_tenant_no +from app.models.bx_models import BxAttachment +from app.services.bx.base import BxCrudService + + +class AttachmentService: + @staticmethod + def _tenant_no(db: Session, user: BxUserContext) -> str: + return get_tenant_no(db, user.to_tenant_user_dict()) + + @staticmethod + def get_by_id(db: Session, attachment_id: str, tenant_no: str) -> Optional[BxAttachment]: + return BxCrudService.get_by_id(BxAttachment, db, attachment_id, tenant_no) + + @staticmethod + def create( + db: Session, + obj_in: dict, + *, + user: BxUserContext, + ) -> BxAttachment: + tenant_no = AttachmentService._tenant_no(db, user) + return BxCrudService.create( + BxAttachment, + db, + obj_in, + tenant_no=tenant_no, + user_id=user.id, + dept_id=user.dept_id, + ) + + @staticmethod + def soft_delete(db: Session, attachment_id: str, *, user: BxUserContext) -> bool: + tenant_no = AttachmentService._tenant_no(db, user) + return BxCrudService.soft_delete( + BxAttachment, db, attachment_id, tenant_no, user_id=user.id + ) + + @staticmethod + def get_by_biz(db: Session, biz_type: str, biz_id: str, tenant_no: str) -> List[BxAttachment]: + query = db.query(BxAttachment).filter( + BxAttachment.biz_type == biz_type, + BxAttachment.biz_id == biz_id, + BxAttachment.tenant_no == tenant_no, + BxAttachment.del_flag == 0, + ) + return query.order_by(BxAttachment.sort_order, BxAttachment.create_time).all() + + @staticmethod + def bind_biz( + db: Session, + ids: List[str], + biz_type: str, + biz_id: str, + *, + user: BxUserContext, + ) -> int: + tenant_no = AttachmentService._tenant_no(db, user) + if not ids: + return 0 + count = ( + db.query(BxAttachment) + .filter( + BxAttachment.id.in_(ids), + BxAttachment.tenant_no == tenant_no, + BxAttachment.del_flag == 0, + ) + .update( + { + BxAttachment.biz_type: biz_type, + BxAttachment.biz_id: biz_id, + BxAttachment.update_by: user.id, + }, + synchronize_session="fetch", + ) + ) + db.flush() + return int(count or 0) + + @staticmethod + def count_invoice_attach_by_biz_ids( + db: Session, biz_type: str, biz_ids: List[str], tenant_no: str + ) -> dict[str, tuple[int, int]]: + if not biz_ids: + return {} + if biz_type == "reimburse_apply": + inv_cond = or_( + BxAttachment.attach_type == "invoice", + BxAttachment.file_type.isnot(None) & BxAttachment.file_type.like("image/%"), + BxAttachment.file_type == "application/pdf", + ) + else: + inv_cond = BxAttachment.attach_type == "invoice" + inv_case = sql_case((inv_cond, 1), else_=0) + att_case = sql_case((inv_cond, 0), else_=1) + rows = ( + db.query( + BxAttachment.biz_id, + func.coalesce(func.sum(inv_case), 0).label("inv"), + func.coalesce(func.sum(att_case), 0).label("att"), + ) + .filter( + BxAttachment.biz_type == biz_type, + BxAttachment.biz_id.in_(biz_ids), + BxAttachment.tenant_no == tenant_no, + BxAttachment.del_flag == 0, + ) + .group_by(BxAttachment.biz_id) + .all() + ) + return {str(r.biz_id): (int(r.inv), int(r.att)) for r in rows} diff --git a/backend/app/services/bx/base.py b/backend/app/services/bx/base.py new file mode 100644 index 000000000..5f3fd880c --- /dev/null +++ b/backend/app/services/bx/base.py @@ -0,0 +1,92 @@ +"""报销模块 Service 基类 — 租户隔离 + UUID + 软删除。""" +from __future__ import annotations + +from typing import Any, List, Optional, Sequence, Tuple, Type, TypeVar + +from sqlalchemy.orm import Session + +from app.core.utils import generate_uuid + +M = TypeVar("M") + + +class BxCrudService: + @staticmethod + def get_by_id(model: Type[M], db: Session, id: str, tenant_no: str) -> Optional[M]: + query = db.query(model).filter(model.id == id, model.tenant_no == tenant_no) + if hasattr(model, "del_flag"): + query = query.filter(model.del_flag == 0) + return query.first() + + @staticmethod + def get_paged( + model: Type[M], + db: Session, + tenant_no: str, + page: int, + page_size: int, + filters: Optional[List[Any]] = None, + ) -> Tuple[Sequence[M], int]: + query = db.query(model).filter(model.tenant_no == tenant_no) + if hasattr(model, "del_flag"): + query = query.filter(model.del_flag == 0) + if filters: + query = query.filter(*filters) + total = query.count() + if hasattr(model, "sort_order"): + query = query.order_by(model.sort_order.asc(), model.create_time.desc()) + else: + query = query.order_by(model.create_time.desc()) + rows = query.offset((page - 1) * page_size).limit(page_size).all() + return rows, total + + @staticmethod + def create( + model: Type[M], + db: Session, + obj_in: dict, + *, + tenant_no: str, + user_id: str, + dept_id: str, + ) -> M: + data = dict(obj_in) + data.setdefault("id", generate_uuid()) + data["tenant_no"] = tenant_no + data["create_by"] = user_id + data["create_dept_id"] = dept_id or "" + obj = model(**data) + db.add(obj) + db.flush() + return obj + + @staticmethod + def update( + model: Type[M], + db: Session, + id: str, + tenant_no: str, + obj_in: dict, + *, + user_id: str, + ) -> Optional[M]: + obj = BxCrudService.get_by_id(model, db, id, tenant_no) + if not obj: + return None + for key, value in obj_in.items(): + setattr(obj, key, value) + if hasattr(obj, "update_by"): + obj.update_by = user_id + db.flush() + return obj + + @staticmethod + def soft_delete(model: Type[M], db: Session, id: str, tenant_no: str, *, user_id: str = "") -> bool: + obj = BxCrudService.get_by_id(model, db, id, tenant_no) + if not obj: + return False + obj.del_flag = 1 + if hasattr(obj, "update_by") and user_id: + obj.update_by = user_id + db.flush() + return True diff --git a/backend/app/services/bx/expense_item.py b/backend/app/services/bx/expense_item.py new file mode 100644 index 000000000..e96d4a1a4 --- /dev/null +++ b/backend/app/services/bx/expense_item.py @@ -0,0 +1,114 @@ +from __future__ import annotations + +from typing import List, Optional + +from sqlalchemy.orm import Session + +from app.core.bx_auth import BxUserContext +from app.core.tenant_context import get_tenant_no +from app.models.bx_models import BxExpenseItem +from app.services.bx.base import BxCrudService + + +class ExpenseItemService: + @staticmethod + def _tenant_no(db: Session, user: BxUserContext) -> str: + return get_tenant_no(db, user.to_tenant_user_dict()) + + @staticmethod + def get_by_id(db: Session, item_id: str, tenant_no: str) -> Optional[BxExpenseItem]: + return BxCrudService.get_by_id(BxExpenseItem, db, item_id, tenant_no) + + @staticmethod + def create( + db: Session, + obj_in: dict, + *, + user: BxUserContext, + ) -> BxExpenseItem: + tenant_no = ExpenseItemService._tenant_no(db, user) + data = dict(obj_in) + parent_id = data.get("parent_id") or "0" + data["parent_id"] = parent_id + if parent_id and parent_id != "0": + parent = ExpenseItemService.get_by_id(db, parent_id, tenant_no) + if not parent: + raise ValueError("父级费用项目不存在") + data.setdefault("level", (parent.level or 1) + 1) + else: + data["parent_id"] = "0" + data.setdefault("level", 1) + return BxCrudService.create( + BxExpenseItem, + db, + data, + tenant_no=tenant_no, + user_id=user.id, + dept_id=user.dept_id, + ) + + @staticmethod + def update( + db: Session, + item_id: str, + obj_in: dict, + *, + user: BxUserContext, + ) -> Optional[BxExpenseItem]: + tenant_no = ExpenseItemService._tenant_no(db, user) + data = dict(obj_in) + if "parent_id" in data and data["parent_id"] is not None: + parent_id = data["parent_id"] or "0" + data["parent_id"] = parent_id + if parent_id != "0": + if parent_id == item_id: + raise ValueError("不能将项目设置为自己的父级") + parent = ExpenseItemService.get_by_id(db, parent_id, tenant_no) + if not parent: + raise ValueError("父级费用项目不存在") + return BxCrudService.update( + BxExpenseItem, + db, + item_id, + tenant_no, + data, + user_id=user.id, + ) + + @staticmethod + def soft_delete(db: Session, item_id: str, *, user: BxUserContext) -> bool: + tenant_no = ExpenseItemService._tenant_no(db, user) + return BxCrudService.soft_delete( + BxExpenseItem, db, item_id, tenant_no, user_id=user.id + ) + + @staticmethod + def get_item_tree(db: Session, tenant_no: str) -> List[BxExpenseItem]: + items = ( + db.query(BxExpenseItem) + .filter(BxExpenseItem.del_flag == 0, BxExpenseItem.tenant_no == tenant_no) + .order_by(BxExpenseItem.sort_order.asc(), BxExpenseItem.create_time.desc()) + .all() + ) + return ExpenseItemService._build_tree(items) + + @staticmethod + def _build_tree(items: List[BxExpenseItem]) -> List[BxExpenseItem]: + item_map = {item.id: item for item in items} + roots: List[BxExpenseItem] = [] + for item in items: + parent_id = item.parent_id or "0" + if not parent_id or parent_id == "0": + roots.append(item) + else: + parent = item_map.get(parent_id) + if parent: + if not hasattr(parent, "children") or parent.children is None: + parent.children = [] + parent.children.append(item) + for item in items: + if hasattr(item, "children") and item.children: + item.child_count = len(item.children) + else: + item.child_count = 0 + return roots diff --git a/backend/app/services/bx/reimburse.py b/backend/app/services/bx/reimburse.py new file mode 100644 index 000000000..f4895c9f0 --- /dev/null +++ b/backend/app/services/bx/reimburse.py @@ -0,0 +1,765 @@ +from __future__ import annotations + +from datetime import datetime +from decimal import Decimal +from typing import Any, Dict, List, Optional, Sequence, Tuple + +from sqlalchemy import and_, func, or_ +from sqlalchemy.orm import Session + +from app.core.bx_auth import BxUserContext +from app.core.tenant_context import get_tenant_no +from app.core.utils import generate_uuid +from app.models.bx_models import ( + BxReimburseApply, + BxReimburseApproval, + BxReimburseDetail, + BxReimburseOffset, + BxWorkflowDef, + BxWorkflowNode, +) +from app.schemas.bx.reimburse import ReimburseApplyOut, ReimburseDetailOut +from app.services.bx.approval_cycle import filter_current_cycle_approvals +from app.services.bx.attachment import AttachmentService +from app.services.bx.base import BxCrudService +from app.utils.bx_codegen import generate_apply_code, generate_title +from app.utils.bx_date_range import current_month_bounds, parse_create_time_day_bounds + +_REIMBURSE_MY_STATS_PASSED_STATUSES = ("approved", "processed", "paid", "offset") + + +class ReimburseService: + @staticmethod + def _tenant_no(db: Session, user: BxUserContext) -> str: + return get_tenant_no(db, user.to_tenant_user_dict()) + + @staticmethod + def get_by_id(db: Session, reimburse_id: str, tenant_no: str) -> Optional[BxReimburseApply]: + return BxCrudService.get_by_id(BxReimburseApply, db, reimburse_id, tenant_no) + + @staticmethod + def get_paged( + db: Session, + tenant_no: str, + page: int, + page_size: int, + filters: Optional[List[Any]] = None, + ) -> Tuple[Sequence[BxReimburseApply], int]: + return BxCrudService.get_paged(BxReimburseApply, db, tenant_no, page, page_size, filters) + + @staticmethod + def soft_delete(db: Session, reimburse_id: str, *, user: BxUserContext) -> bool: + tenant_no = ReimburseService._tenant_no(db, user) + return BxCrudService.soft_delete( + BxReimburseApply, db, reimburse_id, tenant_no, user_id=user.id + ) + + @staticmethod + def _workflow_nodes(db: Session, wf_id: str, tenant_no: str) -> List[BxWorkflowNode]: + return ( + db.query(BxWorkflowNode) + .filter( + BxWorkflowNode.wf_id == wf_id, + BxWorkflowNode.tenant_no == tenant_no, + BxWorkflowNode.del_flag == 0, + ) + .order_by(BxWorkflowNode.node_order) + .all() + ) + + @staticmethod + def pending_approval( + db: Session, + user: BxUserContext, + tenant_no: str, + page: int, + page_size: int, + keyword: str = "", + applicant_id: Optional[str] = None, + apply_date: Optional[str] = None, + ): + subquery = ( + db.query(BxReimburseApply.id) + .join( + BxWorkflowNode, + and_( + BxWorkflowNode.wf_id == BxReimburseApply.wf_id, + BxWorkflowNode.node_name == BxReimburseApply.current_node, + BxWorkflowNode.tenant_no == tenant_no, + BxWorkflowNode.del_flag == 0, + ), + ) + .filter( + BxReimburseApply.del_flag == 0, + BxReimburseApply.tenant_no == tenant_no, + BxReimburseApply.status == "pending", + BxWorkflowNode.approver_id == user.id, + ) + ) + if keyword: + subquery = subquery.filter( + or_( + BxReimburseApply.apply_code.contains(keyword), + BxReimburseApply.applicant_name.contains(keyword), + ) + ) + if applicant_id: + subquery = subquery.filter(BxReimburseApply.applicant_id == applicant_id) + bounds = parse_create_time_day_bounds(apply_date) + if bounds: + d0, d1 = bounds + subquery = subquery.filter( + BxReimburseApply.create_time >= d0, BxReimburseApply.create_time < d1 + ) + subquery = subquery.subquery() + total = db.query(func.count()).select_from(subquery).scalar() or 0 + rows = ( + db.query(BxReimburseApply) + .join(subquery, BxReimburseApply.id == subquery.c.id) + .order_by(BxReimburseApply.create_time.desc()) + .offset((page - 1) * page_size) + .limit(page_size) + .all() + ) + return rows, total + + @staticmethod + def approved_by_me( + db: Session, + user: BxUserContext, + tenant_no: str, + page: int, + page_size: int, + keyword: str = "", + applicant_id: Optional[str] = None, + apply_date: Optional[str] = None, + ): + subquery = ( + db.query(BxReimburseApproval.apply_id) + .filter( + BxReimburseApproval.approver_id == user.id, + BxReimburseApproval.tenant_no == tenant_no, + BxReimburseApproval.del_flag == 0, + ) + .distinct() + .subquery() + ) + query = ( + db.query(BxReimburseApply) + .join(subquery, BxReimburseApply.id == subquery.c.apply_id) + .filter(BxReimburseApply.del_flag == 0, BxReimburseApply.tenant_no == tenant_no) + ) + if keyword: + query = query.filter( + or_( + BxReimburseApply.apply_code.contains(keyword), + BxReimburseApply.applicant_name.contains(keyword), + ) + ) + if applicant_id: + query = query.filter(BxReimburseApply.applicant_id == applicant_id) + bounds = parse_create_time_day_bounds(apply_date) + if bounds: + d0, d1 = bounds + query = query.filter(BxReimburseApply.create_time >= d0, BxReimburseApply.create_time < d1) + total = query.count() + rows = ( + query.order_by(BxReimburseApply.create_time.desc()) + .offset((page - 1) * page_size) + .limit(page_size) + .all() + ) + return rows, total + + @staticmethod + def submit(db: Session, apply_id: str, user: BxUserContext) -> Optional[BxReimburseApply]: + tenant_no = ReimburseService._tenant_no(db, user) + apply_obj = ReimburseService.get_by_id(db, apply_id, tenant_no) + if not apply_obj: + return None + apply_obj.status = "pending" + if not apply_obj.apply_code: + apply_obj.apply_code = generate_apply_code(db, "BX", tenant_no) + apply_obj.update_by = user.id + if apply_obj.wf_id: + nodes = ReimburseService._workflow_nodes(db, apply_obj.wf_id, tenant_no) + if nodes: + apply_obj.current_node = nodes[0].node_name + db.flush() + return apply_obj + + @staticmethod + def approve( + db: Session, apply_id: str, approver: BxUserContext, opinion: str + ) -> Optional[BxReimburseApply]: + tenant_no = ReimburseService._tenant_no(db, approver) + apply_obj = ReimburseService.get_by_id(db, apply_id, tenant_no) + if not apply_obj or not apply_obj.wf_id: + return None + nodes = ReimburseService._workflow_nodes(db, apply_obj.wf_id, tenant_no) + if not nodes: + return None + current_idx = None + for i, node in enumerate(nodes): + if node.node_name == apply_obj.current_node: + current_idx = i + break + if current_idx is None: + return None + current_node = nodes[current_idx] + if current_node.approver_id != approver.id: + return None + approval = BxReimburseApproval( + id=generate_uuid(), + apply_id=apply_id, + approver_id=approver.id, + approver_name=approver.name, + approval_opinion=opinion, + node_name=current_node.node_name, + node_order=current_node.node_order, + approval_status="approved", + approval_time=datetime.now(), + tenant_no=tenant_no, + create_by=approver.id, + create_dept_id=approver.dept_id or "", + ) + db.add(approval) + if current_idx == len(nodes) - 1: + apply_obj.status = "approved" + apply_obj.current_node = None + else: + apply_obj.current_node = nodes[current_idx + 1].node_name + apply_obj.update_by = approver.id + db.flush() + return apply_obj + + @staticmethod + def reject( + db: Session, apply_id: str, approver: BxUserContext, opinion: str + ) -> Optional[BxReimburseApply]: + tenant_no = ReimburseService._tenant_no(db, approver) + apply_obj = ReimburseService.get_by_id(db, apply_id, tenant_no) + if not apply_obj or not apply_obj.wf_id: + return None + nodes = ReimburseService._workflow_nodes(db, apply_obj.wf_id, tenant_no) + current_node = None + for node in nodes: + if node.node_name == apply_obj.current_node: + current_node = node + break + if current_node is None or current_node.approver_id != approver.id: + return None + approval = BxReimburseApproval( + id=generate_uuid(), + apply_id=apply_id, + approver_id=approver.id, + approver_name=approver.name, + approval_opinion=opinion, + node_name=current_node.node_name, + node_order=current_node.node_order, + approval_status="rejected", + approval_time=datetime.now(), + tenant_no=tenant_no, + create_by=approver.id, + create_dept_id=approver.dept_id or "", + ) + db.add(approval) + apply_obj.status = "rejected" + apply_obj.current_node = None + apply_obj.update_by = approver.id + db.flush() + return apply_obj + + @staticmethod + def _approval_record_dict(approval: BxReimburseApproval, apply_id: str) -> Dict[str, Any]: + return { + "id": approval.id, + "reimburse_id": apply_id, + "node_name": approval.node_name, + "node_order": approval.node_order, + "approval_status": approval.approval_status, + "approval_opinion": approval.approval_opinion, + "approver_name": approval.approver_name, + "approval_time": approval.approval_time, + } + + @staticmethod + def _latest_approval_per_node( + approvals: Sequence[BxReimburseApproval], + ) -> Dict[int, BxReimburseApproval]: + """同一节点多次审批时,取 approval_time 最新的一条作为当前节点状态。""" + approval_map: Dict[int, BxReimburseApproval] = {} + for approval in approvals: + existing = approval_map.get(approval.node_order) + if existing is None: + approval_map[approval.node_order] = approval + continue + approval_time = approval.approval_time or datetime.min + existing_time = existing.approval_time or datetime.min + if approval_time >= existing_time: + approval_map[approval.node_order] = approval + return approval_map + + @staticmethod + def _query_approvals(db: Session, apply_id: str, tenant_no: str) -> List[BxReimburseApproval]: + return ( + db.query(BxReimburseApproval) + .filter( + BxReimburseApproval.apply_id == apply_id, + BxReimburseApproval.tenant_no == tenant_no, + BxReimburseApproval.del_flag == 0, + ) + .all() + ) + + @staticmethod + def get_approvals(db: Session, apply_id: str, tenant_no: str) -> List[Dict[str, Any]]: + apply_obj = ReimburseService.get_by_id(db, apply_id, tenant_no) + if not apply_obj or not apply_obj.wf_id: + return [] + wf = BxCrudService.get_by_id(BxWorkflowDef, db, apply_obj.wf_id, tenant_no) + if not wf: + return [] + nodes = ReimburseService._workflow_nodes(db, wf.id, tenant_no) + if not nodes: + return [] + approvals = ReimburseService._query_approvals(db, apply_id, tenant_no) + cycle_approvals = filter_current_cycle_approvals(approvals, apply_obj.status) + approval_map = ReimburseService._latest_approval_per_node(cycle_approvals) + result: List[Dict[str, Any]] = [] + for node in nodes: + approval = approval_map.get(node.node_order) + if approval: + result.append(ReimburseService._approval_record_dict(approval, apply_id)) + else: + result.append( + { + "id": "0", + "reimburse_id": apply_id, + "node_name": node.node_name, + "node_order": node.node_order, + "approval_status": "pending", + "approval_opinion": None, + "approver_name": node.approver_name or "", + "approval_time": None, + } + ) + return result + + @staticmethod + def get_approval_history(db: Session, apply_id: str, tenant_no: str) -> List[Dict[str, Any]]: + """返回全部审批动作,按时间正序排列,用于展示完整审批历史。""" + if not ReimburseService.get_by_id(db, apply_id, tenant_no): + return [] + approvals = ( + db.query(BxReimburseApproval) + .filter( + BxReimburseApproval.apply_id == apply_id, + BxReimburseApproval.tenant_no == tenant_no, + BxReimburseApproval.del_flag == 0, + ) + .order_by(BxReimburseApproval.approval_time.asc(), BxReimburseApproval.create_time.asc()) + .all() + ) + return [ReimburseService._approval_record_dict(a, apply_id) for a in approvals] + + @staticmethod + def create_with_details( + db: Session, + obj_in: dict, + details: List[dict], + *, + user: BxUserContext, + ) -> BxReimburseApply: + tenant_no = ReimburseService._tenant_no(db, user) + data = dict(obj_in) + total_amount = sum(float(d.get("amount", 0) or 0) for d in details) + title = data.pop("title", None) or generate_title(db, user.name, tenant_no) + first_detail = details[0] if details else {} + + apply_obj = BxReimburseApply( + id=generate_uuid(), + title=title, + amount=total_amount, + expense_id=str(first_detail.get("expense_id") or ""), + expense_name=first_detail.get("expense_name") or "", + applicant_id=user.id, + applicant_name=user.name, + tenant_no=tenant_no, + create_by=user.id, + create_dept_id=user.dept_id or "", + **data, + ) + db.add(apply_obj) + db.flush() + + for d in details: + detail = BxReimburseDetail( + id=generate_uuid(), + reimburse_id=apply_obj.id, + expense_id=str(d["expense_id"]), + expense_name=d["expense_name"], + amount=d["amount"], + remark=d.get("remark"), + tenant_no=tenant_no, + create_by=user.id, + create_dept_id=user.dept_id or "", + ) + db.add(detail) + db.flush() + return apply_obj + + @staticmethod + def update_with_details( + db: Session, + apply_id: str, + obj_in: dict, + details: Optional[List[dict]], + *, + user: BxUserContext, + ) -> Optional[BxReimburseApply]: + tenant_no = ReimburseService._tenant_no(db, user) + apply_obj = ReimburseService.get_by_id(db, apply_id, tenant_no) + if not apply_obj: + return None + + for key, value in obj_in.items(): + setattr(apply_obj, key, value) + + if details is not None: + db.query(BxReimburseDetail).filter( + BxReimburseDetail.reimburse_id == apply_id, + BxReimburseDetail.tenant_no == tenant_no, + BxReimburseDetail.del_flag == 0, + ).update({"del_flag": 1}, synchronize_session=False) + + total_amount = Decimal("0") + first_expense_name = "" + first_expense_id = "" + for i, d in enumerate(details): + detail = BxReimburseDetail( + id=generate_uuid(), + reimburse_id=apply_id, + expense_id=str(d["expense_id"]), + expense_name=d["expense_name"], + amount=d["amount"], + remark=d.get("remark"), + tenant_no=tenant_no, + create_by=user.id, + create_dept_id=user.dept_id or "", + ) + db.add(detail) + total_amount += Decimal(str(d["amount"])) + if i == 0: + first_expense_name = d["expense_name"] + first_expense_id = str(d["expense_id"]) + + apply_obj.amount = total_amount + apply_obj.expense_name = first_expense_name + apply_obj.expense_id = first_expense_id + + apply_obj.update_by = user.id + db.flush() + return apply_obj + + @staticmethod + def get_details(db: Session, reimburse_id: str, tenant_no: str) -> List[BxReimburseDetail]: + return ( + db.query(BxReimburseDetail) + .filter( + BxReimburseDetail.reimburse_id == reimburse_id, + BxReimburseDetail.tenant_no == tenant_no, + BxReimburseDetail.del_flag == 0, + ) + .order_by(BxReimburseDetail.create_time) + .all() + ) + + @staticmethod + def out_rows_with_attachment_counts( + db: Session, tenant_no: str, rows: List[BxReimburseApply] + ) -> List[ReimburseApplyOut]: + if not rows: + return [] + ids = [r.id for r in rows] + counts = AttachmentService.count_invoice_attach_by_biz_ids( + db, "reimburse_apply", ids, tenant_no + ) + out_list: List[ReimburseApplyOut] = [] + for row in rows: + out = ReimburseApplyOut.model_validate(row) + inv, att = counts.get(row.id, (0, 0)) + out_list.append(out.model_copy(update={"invoice_count": inv, "attach_count": att})) + return out_list + + @staticmethod + def out_one_with_attachment_counts( + db: Session, tenant_no: str, row: BxReimburseApply + ) -> ReimburseApplyOut: + return ReimburseService.out_rows_with_attachment_counts(db, tenant_no, [row])[0] + + @staticmethod + def build_apply_out_with_details( + db: Session, tenant_no: str, reimburse: BxReimburseApply + ) -> ReimburseApplyOut: + out = ReimburseService.out_one_with_attachment_counts(db, tenant_no, reimburse) + detail_rows = ReimburseService.get_details(db, reimburse.id, tenant_no) + out.details = [ReimburseDetailOut.model_validate(d) for d in detail_rows] + return out + + @staticmethod + def global_status_counts(db: Session, tenant_no: str) -> Dict[str, int]: + rows = ( + db.query(BxReimburseApply.status, func.count()) + .filter(BxReimburseApply.del_flag == 0, BxReimburseApply.tenant_no == tenant_no) + .group_by(BxReimburseApply.status) + .all() + ) + return {str(s or ""): int(c) for s, c in rows} + + @staticmethod + def my_apply_stats(db: Session, user_id: str, tenant_no: str) -> dict: + base = and_( + BxReimburseApply.del_flag == 0, + BxReimburseApply.tenant_no == tenant_no, + or_( + BxReimburseApply.applicant_id == user_id, + BxReimburseApply.create_by == user_id, + ), + ) + total_count = db.query(func.count()).select_from(BxReimburseApply).filter(base).scalar() or 0 + pending = ( + db.query(func.count()) + .select_from(BxReimburseApply) + .filter(base, BxReimburseApply.status == "pending") + .scalar() + or 0 + ) + approved_count = ( + db.query(func.count()) + .select_from(BxReimburseApply) + .filter(base, BxReimburseApply.status.in_(_REIMBURSE_MY_STATS_PASSED_STATUSES)) + .scalar() + or 0 + ) + rejected_count = ( + db.query(func.count()) + .select_from(BxReimburseApply) + .filter(base, BxReimburseApply.status == "rejected") + .scalar() + or 0 + ) + approved_amount = ( + db.query(func.coalesce(func.sum(BxReimburseApply.amount), 0)) + .filter(base, BxReimburseApply.status.in_(_REIMBURSE_MY_STATS_PASSED_STATUSES)) + .scalar() + or 0 + ) + m0, m1 = current_month_bounds() + month_apply_amount = ( + db.query(func.coalesce(func.sum(BxReimburseApply.amount), 0)) + .filter(base, BxReimburseApply.create_time >= m0, BxReimburseApply.create_time < m1) + .scalar() + or 0 + ) + month_apply_count = ( + db.query(func.count()) + .select_from(BxReimburseApply) + .filter(base, BxReimburseApply.create_time >= m0, BxReimburseApply.create_time < m1) + .scalar() + or 0 + ) + return { + "total_count": int(total_count), + "pending_count": int(pending), + "approved_count": int(approved_count), + "rejected_count": int(rejected_count), + "approved_amount": float(approved_amount), + "month_apply_amount": float(month_apply_amount), + "month_apply_count": int(month_apply_count), + } + + @staticmethod + def pending_approval_stats(db: Session, user: BxUserContext, tenant_no: str) -> dict: + subquery = ( + db.query(BxReimburseApply.id) + .join( + BxWorkflowNode, + and_( + BxWorkflowNode.wf_id == BxReimburseApply.wf_id, + BxWorkflowNode.node_name == BxReimburseApply.current_node, + BxWorkflowNode.tenant_no == tenant_no, + BxWorkflowNode.del_flag == 0, + ), + ) + .filter( + BxReimburseApply.del_flag == 0, + BxReimburseApply.tenant_no == tenant_no, + BxReimburseApply.status == "pending", + BxWorkflowNode.approver_id == user.id, + ) + ).subquery() + total = db.query(func.count()).select_from(subquery).scalar() or 0 + m0, m1 = current_month_bounds() + month_sum = ( + db.query(func.coalesce(func.sum(BxReimburseApply.amount), 0)) + .join(subquery, BxReimburseApply.id == subquery.c.id) + .filter(BxReimburseApply.create_time >= m0, BxReimburseApply.create_time < m1) + .scalar() + or 0 + ) + return {"pending_total": int(total), "month_pending_amount": float(month_sum)} + + @staticmethod + def pay( + db: Session, + apply_id: str, + user: BxUserContext, + pay_remark: str = "", + actual_amount: Optional[float] = None, + ) -> Optional[BxReimburseApply]: + tenant_no = ReimburseService._tenant_no(db, user) + apply_obj = ReimburseService.get_by_id(db, apply_id, tenant_no) + if not apply_obj: + return None + apply_obj.status = "processed" + apply_obj.update_by = user.id + apply_obj.pay_status = "paid" + apply_obj.pay_time = datetime.now() + apply_obj.pay_user_id = user.id + apply_obj.pay_user_name = user.name + if actual_amount is not None: + apply_obj.actual_amount = actual_amount + db.flush() + return apply_obj + + @staticmethod + def offset( + db: Session, + apply_id: str, + advance_id: str, + amount: float, + user: BxUserContext, + remark: str = "", + ) -> Optional[BxReimburseApply]: + tenant_no = ReimburseService._tenant_no(db, user) + apply_obj = ReimburseService.get_by_id(db, apply_id, tenant_no) + if not apply_obj: + return None + apply_obj.status = "offset" + apply_obj.offset_advance_id = advance_id + apply_obj.offset_amount = amount + apply_obj.update_by = user.id + offset_record = BxReimburseOffset( + id=generate_uuid(), + reimburse_id=apply_id, + advance_id=advance_id, + offset_amount=amount, + remark=remark or None, + tenant_no=tenant_no, + create_by=user.name, + create_dept_id=user.dept_id or "", + ) + db.add(offset_record) + db.flush() + return apply_obj + + @staticmethod + def batch_offset( + db: Session, + apply_id: str, + items: List[dict], + pay_amount: float, + user: BxUserContext, + remark: str = "", + ) -> Optional[BxReimburseApply]: + tenant_no = ReimburseService._tenant_no(db, user) + apply_obj = ReimburseService.get_by_id(db, apply_id, tenant_no) + if not apply_obj: + return None + + has_offsets = bool(items) + total_offset = 0.0 + first_advance_id = None + + for item in items: + advance_id = str(item["advance_id"]) + offset_amount = float(item["offset_amount"]) + if first_advance_id is None: + first_advance_id = advance_id + total_offset += offset_amount + offset_record = BxReimburseOffset( + id=generate_uuid(), + reimburse_id=apply_id, + advance_id=advance_id, + offset_amount=offset_amount, + remark=remark or None, + tenant_no=tenant_no, + create_by=user.name, + create_dept_id=user.dept_id or "", + ) + db.add(offset_record) + + if first_advance_id is not None: + apply_obj.offset_advance_id = first_advance_id + apply_obj.offset_amount = total_offset + + if pay_amount > 0: + apply_obj.pay_status = "paid" + apply_obj.pay_time = datetime.now() + apply_obj.pay_user_id = user.id + apply_obj.pay_user_name = user.name + apply_obj.actual_amount = pay_amount + apply_obj.status = "processed" + elif has_offsets: + apply_obj.actual_amount = 0 + apply_obj.status = "processed" + + apply_obj.update_by = user.id + db.flush() + return apply_obj + + @staticmethod + def finance_payment_stats(db: Session, tenant_no: str) -> dict: + base = and_(BxReimburseApply.del_flag == 0, BxReimburseApply.tenant_no == tenant_no) + pending = ( + db.query(func.count()) + .select_from(BxReimburseApply) + .filter(base, BxReimburseApply.status == "approved") + .scalar() + or 0 + ) + bank_paid = BxReimburseApply.pay_time.isnot(None) + paid = ( + db.query(func.count()).select_from(BxReimburseApply).filter(base, bank_paid).scalar() or 0 + ) + offset_settled = or_( + BxReimburseApply.status == "offset", + and_( + BxReimburseApply.status == "processed", + BxReimburseApply.pay_time.is_(None), + func.coalesce(BxReimburseApply.offset_amount, 0) > 0, + ), + ) + offset = ( + db.query(func.count()).select_from(BxReimburseApply).filter(base, offset_settled).scalar() or 0 + ) + m0, m1 = current_month_bounds() + month_paid = ( + db.query(func.coalesce(func.sum(BxReimburseApply.amount), 0)) + .filter(base, bank_paid, BxReimburseApply.pay_time >= m0, BxReimburseApply.pay_time < m1) + .scalar() + or 0 + ) + month_offset = ( + db.query(func.coalesce(func.sum(BxReimburseApply.amount), 0)) + .filter(base, offset_settled, BxReimburseApply.update_time >= m0, BxReimburseApply.update_time < m1) + .scalar() + or 0 + ) + return { + "pending_count": int(pending), + "paid_count": int(paid), + "offset_count": int(offset), + "month_processed_amount": float(month_paid) + float(month_offset), + } diff --git a/backend/app/services/bx/storage.py b/backend/app/services/bx/storage.py new file mode 100644 index 000000000..c6f42c76b --- /dev/null +++ b/backend/app/services/bx/storage.py @@ -0,0 +1,103 @@ +"""报销附件存储适配 — 复用门户 app.core.storage,对外保持 bx 协议。""" +from __future__ import annotations + +from datetime import timedelta +from io import BytesIO +from pathlib import Path + +from app.core.config import settings +from app.core.storage import LocalStorage, MinIOStorage, get_storage, storage + + +def normalize_storage_path(file_url: str) -> str: + """将 upload 返回的完整 URL 归一化为存储相对路径(与 admin 附件 upload 一致)。""" + u = (file_url or "").strip() + if not u: + return "" + if "?" in u: + u = u.split("?", 1)[0] + base_url = (settings.MINIO_BASE_URL or "").rstrip("/") + if base_url and u.startswith(base_url + "/"): + return u[len(base_url) + 1 :] + local_base = settings.LOCAL_STORAGE_URL.rstrip("/") + if u.startswith(local_base + "/"): + return u[len(local_base) + 1 :] + if u.startswith("http://") or u.startswith("https://"): + store = get_storage() + if isinstance(store, MinIOStorage): + return store._extract_object_key(u) + return u.lstrip("/") + + +def upload_bx_file(file_content: bytes, filename: str, *, biz_type: str = "") -> tuple[str, str]: + """ + 上传文件到对象存储。 + 返回 (relative_path, access_url)。 + """ + folder = "bx" + if biz_type: + folder = f"bx/{biz_type.strip('/')}" + full_url = storage.upload_file(file_content, filename, folder) + relative_path = normalize_storage_path(full_url) + return relative_path, full_url + + +def get_access_url(file_path: str) -> str: + """获取可访问 URL(本地/MinIO 公开地址)。""" + store = get_storage() + key = normalize_storage_path(file_path) + if not key: + return "" + return store.get_url(key) + + +def get_preview_url(file_path: str, *, expires_seconds: int = 3600) -> str: + """图片/附件预览 URL:MinIO 预签名 inline,本地/其他存储用 get_url。""" + store = get_storage() + key = normalize_storage_path(file_path) + if not key: + return "" + if isinstance(store, MinIOStorage): + return store.client.presigned_get_object( + bucket_name=store.bucket_name, + object_name=key, + expires=timedelta(seconds=expires_seconds), + ) + return store.get_url(key) + + +def get_download_url(file_path: str, file_name: str, *, expires_seconds: int = 3600) -> str: + """带文件名的下载 URL(对齐门户 attachment/download-url)。""" + store = get_storage() + key = normalize_storage_path(file_path) + return store.presigned_download_url(key, file_name, expires_seconds) + + +def download_file_bytes(file_path: str) -> bytes: + """读取文件二进制,供 StreamingResponse 下载。""" + store = get_storage() + key = normalize_storage_path(file_path) + if not key: + raise ValueError("无效的文件路径") + if isinstance(store, MinIOStorage): + response = store.client.get_object(store.bucket_name, key) + try: + return response.read() + finally: + response.close() + response.release_conn() + if isinstance(store, LocalStorage): + file_full_path = Path(store.upload_dir) / key + if not file_full_path.is_file(): + raise FileNotFoundError(f"文件不存在: {key}") + return file_full_path.read_bytes() + # 七牛/OSS 等:回退 HTTP 拉取(开发环境较少用到) + import urllib.request + + url = store.get_url(key) + with urllib.request.urlopen(url, timeout=60) as resp: + return resp.read() + + +def file_stream(file_path: str) -> BytesIO: + return BytesIO(download_file_bytes(file_path)) diff --git a/backend/app/services/bx/workflow.py b/backend/app/services/bx/workflow.py new file mode 100644 index 000000000..832a5e9fc --- /dev/null +++ b/backend/app/services/bx/workflow.py @@ -0,0 +1,169 @@ +from __future__ import annotations + +from typing import List, Optional, Sequence, Tuple + +from sqlalchemy.orm import Session + +from app.core.bx_auth import BxUserContext +from app.core.tenant_context import get_tenant_no +from app.core.utils import generate_uuid +from app.models.bx_models import BxWorkflowDef, BxWorkflowNode +from app.services.bx.base import BxCrudService + + +_DEFAULT_WORKFLOWS = { + "advance": { + "wf_name": "备用金审批流程", + "remark": "备用金申请默认审批流程", + }, + "reimburse": { + "wf_name": "报销单审批流程", + "remark": "报销申请默认审批流程", + }, +} + + +class WorkflowService: + @staticmethod + def _tenant_no(db: Session, user: BxUserContext) -> str: + return get_tenant_no(db, user.to_tenant_user_dict()) + + @staticmethod + def get_by_id(db: Session, workflow_id: str, tenant_no: str) -> Optional[BxWorkflowDef]: + return BxCrudService.get_by_id(BxWorkflowDef, db, workflow_id, tenant_no) + + @staticmethod + def get_paged( + db: Session, + tenant_no: str, + page: int, + page_size: int, + ) -> Tuple[Sequence[BxWorkflowDef], int]: + return BxCrudService.get_paged(BxWorkflowDef, db, tenant_no, page, page_size) + + @staticmethod + def create( + db: Session, + obj_in: dict, + *, + user: BxUserContext, + ) -> BxWorkflowDef: + tenant_no = WorkflowService._tenant_no(db, user) + return BxCrudService.create( + BxWorkflowDef, + db, + obj_in, + tenant_no=tenant_no, + user_id=user.id, + dept_id=user.dept_id, + ) + + @staticmethod + def update( + db: Session, + workflow_id: str, + obj_in: dict, + *, + user: BxUserContext, + ) -> Optional[BxWorkflowDef]: + tenant_no = WorkflowService._tenant_no(db, user) + return BxCrudService.update( + BxWorkflowDef, + db, + workflow_id, + tenant_no, + obj_in, + user_id=user.id, + ) + + @staticmethod + def soft_delete(db: Session, workflow_id: str, *, user: BxUserContext) -> bool: + tenant_no = WorkflowService._tenant_no(db, user) + deleted = BxCrudService.soft_delete( + BxWorkflowDef, db, workflow_id, tenant_no, user_id=user.id + ) + if deleted: + db.query(BxWorkflowNode).filter( + BxWorkflowNode.wf_id == workflow_id, + BxWorkflowNode.tenant_no == tenant_no, + ).update({"del_flag": 1}, synchronize_session=False) + db.flush() + return deleted + + @staticmethod + def get_by_biz_type(db: Session, biz_type: str, tenant_no: str) -> Optional[BxWorkflowDef]: + return ( + db.query(BxWorkflowDef) + .filter( + BxWorkflowDef.biz_type == biz_type, + BxWorkflowDef.tenant_no == tenant_no, + BxWorkflowDef.del_flag == 0, + ) + .first() + ) + + @staticmethod + def ensure_by_biz_type( + db: Session, + biz_type: str, + *, + user: BxUserContext, + ) -> Optional[BxWorkflowDef]: + """按业务类型获取工作流;已知类型不存在时自动创建空定义(无节点)。""" + tenant_no = WorkflowService._tenant_no(db, user) + workflow = WorkflowService.get_by_biz_type(db, biz_type, tenant_no) + if workflow: + return workflow + + meta = _DEFAULT_WORKFLOWS.get(biz_type) + if not meta: + return None + + workflow = WorkflowService.create( + db, + { + "biz_type": biz_type, + "wf_name": meta["wf_name"], + "remark": meta["remark"], + "status": 1, + }, + user=user, + ) + db.commit() + db.refresh(workflow) + return workflow + + @staticmethod + def save_nodes( + db: Session, + wf_id: str, + nodes: List[dict], + *, + user: BxUserContext, + ) -> List[BxWorkflowNode]: + tenant_no = WorkflowService._tenant_no(db, user) + workflow = WorkflowService.get_by_id(db, wf_id, tenant_no) + if not workflow: + raise ValueError("工作流不存在") + + db.query(BxWorkflowNode).filter( + BxWorkflowNode.wf_id == wf_id, + BxWorkflowNode.tenant_no == tenant_no, + ).delete(synchronize_session=False) + + created: List[BxWorkflowNode] = [] + for node_data in nodes: + data = dict(node_data) + data["id"] = generate_uuid() + data["wf_id"] = wf_id + data["tenant_no"] = tenant_no + data["create_by"] = user.id + data["create_dept_id"] = user.dept_id or "" + if data.get("approver_id") is not None: + data["approver_id"] = str(data["approver_id"]).strip() or None + node = BxWorkflowNode(**data) + db.add(node) + created.append(node) + db.flush() + db.expire(workflow, ["nodes"]) + return created diff --git a/backend/app/utils/bx_codegen.py b/backend/app/utils/bx_codegen.py new file mode 100644 index 000000000..3613d4338 --- /dev/null +++ b/backend/app/utils/bx_codegen.py @@ -0,0 +1,46 @@ +"""报销单号/标题生成(从 bx-backend 迁移,增加 tenant_no 隔离)。""" +from datetime import datetime + +from sqlalchemy import text +from sqlalchemy.orm import Session + + +def generate_apply_code(db: Session, prefix: str, tenant_no: str) -> str: + """ + 生成顺序单号:{prefix}{YYYYMMDD}{3位序号}。 + prefix 示例:BYJ(备用金)、BX(报销)。 + """ + today = datetime.now().strftime("%Y%m%d") + like_pattern = f"{prefix}{today}%" + + result = db.execute( + text( + "SELECT MAX(CAST(SUBSTRING(apply_code, -3) AS UNSIGNED)) FROM (" + "SELECT apply_code FROM bx_advance_apply " + "WHERE tenant_no = :tenant_no AND apply_code LIKE :p1 AND del_flag = 0 " + "UNION ALL " + "SELECT apply_code FROM bx_reimburse_apply " + "WHERE tenant_no = :tenant_no AND apply_code LIKE :p2 AND del_flag = 0" + ") t" + ), + {"tenant_no": tenant_no, "p1": like_pattern, "p2": like_pattern}, + ).scalar() + + seq = (result or 0) + 1 + return f"{prefix}{today}{seq:03d}" + + +def generate_title(db: Session, applicant_name: str, tenant_no: str) -> str: + today = datetime.now().strftime("%Y%m%d") + like_pattern = f"%报销单{today}%" + + result = db.execute( + text( + "SELECT COUNT(*) FROM bx_reimburse_apply " + "WHERE tenant_no = :tenant_no AND title LIKE :p AND del_flag = 0" + ), + {"tenant_no": tenant_no, "p": like_pattern}, + ).scalar() + + seq = (result or 0) + 1 + return f"{applicant_name}报销单{today}{seq:03d}" diff --git a/backend/app/utils/bx_date_range.py b/backend/app/utils/bx_date_range.py new file mode 100644 index 000000000..80d5ce9c2 --- /dev/null +++ b/backend/app/utils/bx_date_range.py @@ -0,0 +1,26 @@ +"""报销模块日期范围工具(从 bx-backend 迁移)。""" +from __future__ import annotations + +from datetime import datetime, timedelta + + +def current_month_bounds(now: datetime | None = None) -> tuple[datetime, datetime]: + """当前自然月 [month_start, next_month_start)。""" + if now is None: + now = datetime.now() + month_start = now.replace(day=1, hour=0, minute=0, second=0, microsecond=0) + if now.month == 12: + month_end = datetime(now.year + 1, 1, 1) + else: + month_end = datetime(now.year, now.month + 1, 1) + return month_start, month_end + + +def parse_create_time_day_bounds(apply_date: str | None) -> tuple[datetime, datetime] | None: + if not apply_date or not str(apply_date).strip(): + return None + try: + day_start = datetime.strptime(str(apply_date).strip(), "%Y-%m-%d") + return day_start, day_start + timedelta(days=1) + except ValueError: + return None diff --git a/backend/graphify-out/.graphify_labels.json b/backend/graphify-out/.graphify_labels.json index 95d8da366..7ffda0739 100644 --- a/backend/graphify-out/.graphify_labels.json +++ b/backend/graphify-out/.graphify_labels.json @@ -103,6 +103,30 @@ "101": "Community 101", "102": "Community 102", "103": "Community 103", + "104": "Community 104", + "105": "Community 105", + "106": "Community 106", + "107": "Community 107", + "108": "Community 108", "109": "Community 109", - "113": "Community 113" + "110": "Community 110", + "111": "Community 111", + "112": "Community 112", + "113": "Community 113", + "114": "Community 114", + "115": "Community 115", + "116": "Community 116", + "117": "Community 117", + "118": "Community 118", + "119": "Community 119", + "120": "Community 120", + "121": "Community 121", + "122": "Community 122", + "123": "Community 123", + "124": "Community 124", + "125": "Community 125", + "126": "Community 126", + "127": "Community 127", + "128": "Community 128", + "129": "Community 129" } diff --git a/backend/graphify-out/GRAPH_REPORT.md b/backend/graphify-out/GRAPH_REPORT.md index 96be68cd8..fce275f4e 100644 --- a/backend/graphify-out/GRAPH_REPORT.md +++ b/backend/graphify-out/GRAPH_REPORT.md @@ -1,16 +1,16 @@ # Graph Report - backend (2026-06-06) ## Corpus Check -- 122 files · ~93,527 words +- 149 files · ~105,173 words - Verdict: corpus is large enough that graph structure adds value. ## Summary -- 2643 nodes · 18676 edges · 106 communities (103 shown, 3 thin omitted) -- Extraction: 45% EXTRACTED · 55% INFERRED · 0% AMBIGUOUS · INFERRED: 10230 edges (avg confidence: 0.51) +- 3047 nodes · 20600 edges · 130 communities (125 shown, 5 thin omitted) +- Extraction: 47% EXTRACTED · 53% INFERRED · 0% AMBIGUOUS · INFERRED: 10854 edges (avg confidence: 0.51) - Token cost: 0 input · 0 output ## Graph Freshness -- Built from commit: `dacfdc9f` +- Built from commit: `f9676f87` - Run `git rev-parse HEAD` and compare to check if the graph is stale. - Run `graphify update .` after code changes (no API cost). @@ -112,94 +112,117 @@ - [[_COMMUNITY_Community 101|Community 101]] - [[_COMMUNITY_Community 102|Community 102]] - [[_COMMUNITY_Community 103|Community 103]] +- [[_COMMUNITY_Community 104|Community 104]] +- [[_COMMUNITY_Community 105|Community 105]] +- [[_COMMUNITY_Community 106|Community 106]] +- [[_COMMUNITY_Community 107|Community 107]] +- [[_COMMUNITY_Community 108|Community 108]] - [[_COMMUNITY_Community 109|Community 109]] +- [[_COMMUNITY_Community 110|Community 110]] +- [[_COMMUNITY_Community 111|Community 111]] +- [[_COMMUNITY_Community 112|Community 112]] - [[_COMMUNITY_Community 113|Community 113]] +- [[_COMMUNITY_Community 114|Community 114]] +- [[_COMMUNITY_Community 116|Community 116]] +- [[_COMMUNITY_Community 117|Community 117]] +- [[_COMMUNITY_Community 118|Community 118]] +- [[_COMMUNITY_Community 119|Community 119]] +- [[_COMMUNITY_Community 120|Community 120]] +- [[_COMMUNITY_Community 121|Community 121]] +- [[_COMMUNITY_Community 122|Community 122]] +- [[_COMMUNITY_Community 123|Community 123]] +- [[_COMMUNITY_Community 124|Community 124]] +- [[_COMMUNITY_Community 125|Community 125]] +- [[_COMMUNITY_Community 126|Community 126]] +- [[_COMMUNITY_Community 127|Community 127]] +- [[_COMMUNITY_Community 128|Community 128]] +- [[_COMMUNITY_Community 129|Community 129]] ## God Nodes (most connected - your core abstractions) -1. `Session` - 256 edges -2. `success_response()` - 246 edges -3. `Session` - 243 edges -4. `BaseModel` - 242 edges +1. `BaseModel` - 281 edges +2. `Session` - 256 edges +3. `success_response()` - 246 edges +4. `Session` - 243 edges 5. `error_response()` - 234 edges 6. `SysUser` - 180 edges -7. `get_tenant_no()` - 140 edges -8. `int` - 111 edges -9. `CustomerListBody` - 108 edges -10. `CustomerCreateBody` - 108 edges +7. `get_tenant_no()` - 170 edges +8. `generate_uuid()` - 114 edges +9. `int` - 111 edges +10. `CustomerListBody` - 108 edges ## Surprising Connections (you probably didn't know these) -- `bool` --uses--> `SysUser` [INFERRED] - app/crud/sample_code.py → app/models/models.py -- `date` --uses--> `CrmContact` [INFERRED] - app/crud/crm/contact.py → app/models/crm_models.py -- `bool` --uses--> `CrmInvoiceInfo` [INFERRED] - app/crud/crm/invoice_info.py → app/models/crm_models.py -- `pool_recovery_job()` --calls--> `execute_pool_rules()` [INFERRED] - app/tasks/customer_pool.py → app/crud/crm/pool_rule.py -- `Session` --uses--> `CrmCustomer` [INFERRED] - app/tasks/customer_pool.py → app/models/crm_models.py +- `Any` --uses--> `SysApiRequestLog` [INFERRED] + app/core/api_request_log_middleware.py → app/models/models.py +- `bytes` --uses--> `SysApiRequestLog` [INFERRED] + app/core/api_request_log_middleware.py → app/models/models.py +- `bool` --uses--> `SysApiRequestLog` [INFERRED] + app/core/api_request_log_middleware.py → app/models/models.py +- `UploadFile` --uses--> `BxUserContext` [INFERRED] + app/api/bx/attachment.py → app/core/bx_auth.py +- `int` --uses--> `BxUserContext` [INFERRED] + app/api/bx/workflow.py → app/core/bx_auth.py -## Communities (106 total, 3 thin omitted) +## Communities (130 total, 5 thin omitted) ### Community 0 - "Community 0" -Cohesion: 0.15 -Nodes (42): Any, int, Session, str, Any, bool, CRM 公海池规则 CRUD + 规则执行逻辑, int (+34 more) +Cohesion: 0.25 +Nodes (27): Any, bool, CRM 公海池规则 CRUD + 规则执行逻辑, int, Session, str, generate_uuid(), create_pool_rule() (+19 more) ### Community 1 - "Community 1" -Cohesion: 0.09 -Nodes (84): Any, ProcessDefCreateBody, ProcessDefUpdateBody, PublishVersionBody, 审批意见:前端传 commentText,兼容 comment。, StartInstanceBody, TaskActionBody, Any (+76 more) +Cohesion: 0.14 +Nodes (28): Any, Any, bool, str, WfProcessInstance, Any, bool, Session (+20 more) ### Community 2 - "Community 2" -Cohesion: 0.22 -Nodes (11): Any, bool, int, Session, str, bool, camel_to_snake(), CRUDBase (+3 more) +Cohesion: 0.23 +Nodes (10): Any, bool, int, Session, str, camel_to_snake(), CRUDBase, get_model_attr() (+2 more) ### Community 3 - "Community 3" Cohesion: 0.13 Nodes (15): Any, bool, int, str, get_wechat_pay_client(), get_wechat_pay_v2(), 微信支付工具模块 支持微信支付 V3 API 文档参考: https://pay.weixin.qq.com/docs/v3/apis/index.html, 统一下单接口 (V3) Args: out_trade_no: 商户订单号 total_amo (+7 more) ### Community 4 - "Community 4" -Cohesion: 0.20 -Nodes (29): bool, CRM 产品模块 CRUD(产品分类 + 产品 + 附件), Session, str, barcode_exists(), category_code_exists(), _category_row_to_dict(), create_category() (+21 more) +Cohesion: 0.14 +Nodes (41): Any, bool, CRM 产品模块 CRUD(产品分类 + 产品 + 附件), int, Session, str, barcode_exists(), _build_category_tree() (+33 more) ### Community 5 - "Community 5" -Cohesion: 0.09 -Nodes (33): Any, bool, bytes, int, str, Exception, bool, bytes (+25 more) +Cohesion: 0.14 +Nodes (5): bool, BaseStorage, OSSStorage, QiniuStorage, 文件存储工具模块 支持多种存储方式: 1. 本地存储 (local) - 默认 2. 七牛云存储 (qiniu) - 推荐生产环境使用 3. 阿里云OSS ( ### Community 6 - "Community 6" -Cohesion: 0.09 -Nodes (94): attachment_download_url(), AttachmentDownloadUrlBody, create_dept(), create_dict_data(), create_dict_type(), create_menu(), create_post(), create_role_management() (+86 more) +Cohesion: 0.11 +Nodes (72): attachment_download_url(), create_dept(), create_dict_data(), create_dict_type(), create_menu(), create_post(), create_role_management(), create_site() (+64 more) ### Community 7 - "Community 7" Cohesion: 0.22 Nodes (9): create_new_version(), Java: createNewVersion — 返回新报价单 id, Java: createNewVersion — 返回新报价单 id, Java: createNewVersion — 返回新报价单 id, Java: createNewVersion — 返回新报价单 id, Java: createNewVersion — 返回新报价单 id, Java: createNewVersion — 返回新报价单 id, Java: createNewVersion — 返回新报价单 id (+1 more) ### Community 8 - "Community 8" -Cohesion: 0.15 -Nodes (34): Session, str, Any, bool, int, Session, str, apply_data_scope() (+26 more) +Cohesion: 0.11 +Nodes (50): Session, str, Any, bool, int, Session, str, Any (+42 more) ### Community 9 - "Community 9" Cohesion: 0.33 Nodes (15): Any, int, Session, str, BizLeaveRequest, create_leave(), get_leave(), list_leaves() (+7 more) ### Community 10 - "Community 10" -Cohesion: 0.09 -Nodes (56): register_contract_sub_routes(), Any, bool, datetime, int, Session, str, _advance_contract_after_approval() (+48 more) +Cohesion: 0.08 +Nodes (68): Any, bool, CrmContract, datetime, int, Query, Session, str (+60 more) ### Community 11 - "Community 11" Cohesion: 0.05 -Nodes (168): _apply_default_invoice_info_to_customers(), category_add(), category_delete(), category_tree(), category_update(), clue_assign(), clue_check_convert(), clue_check_duplicate() (+160 more) +Nodes (167): _apply_default_invoice_info_to_customers(), category_add(), category_delete(), category_tree(), category_update(), clue_assign(), clue_check_convert(), clue_check_duplicate() (+159 more) ### Community 12 - "Community 12" -Cohesion: 0.06 -Nodes (68): str, CRM 客户管理 Pydantic Schemas, BaseModel, PageResult, ResponseModel, ContactByCustomerBody, ContactDetailBody, ContactSetPrimaryBody (+60 more) +Cohesion: 0.15 +Nodes (52): ProcessDefCreateBody, ProcessDefUpdateBody, PublishVersionBody, 审批意见:前端传 commentText,兼容 comment。, StartInstanceBody, TaskActionBody, Any, int (+44 more) ### Community 13 - "Community 13" Cohesion: 0.36 Nodes (213): Any, bool, str, UploadFile, CRM 线索管理 Pydantic Schemas, CRM 商机管理 Pydantic Schemas, CRM 客户公海池规则 Pydantic Schemas, CRM 产品模块 Pydantic Schemas (+205 more) ### Community 14 - "Community 14" -Cohesion: 0.18 -Nodes (39): Any, bool, CRM 客户 CRUD(客户主表 + 转移/成交/公海池操作), CrmCustomer, date, datetime, float, int (+31 more) +Cohesion: 0.17 +Nodes (45): Any, bool, CRM 客户 CRUD(客户主表 + 转移/成交/公海池操作), CrmCustomer, date, datetime, float, int (+37 more) ### Community 15 - "Community 15" Cohesion: 0.08 @@ -210,16 +233,16 @@ Cohesion: 0.12 Nodes (31): CRM 报价单 API 路由 — 挂接到 crm.router, CRM 报价单 Pydantic Schemas, QuoteAcceptBody, QuoteApprovalApproveBody, QuoteApprovalListBody, QuoteApprovalRefreshNamesBody, QuoteApprovalWithdrawBody, QuoteCreateBody (+23 more) ### Community 17 - "Community 17" -Cohesion: 0.26 -Nodes (22): Any, bool, datetime, int, Session, str, BizSampleCode, batch_generate_sample_codes() (+14 more) +Cohesion: 0.11 +Nodes (59): BxUserContext, int, Session, str, BxUserContext, int, Session, str (+51 more) ### Community 18 - "Community 18" Cohesion: 0.17 Nodes (34): Any, bool, int, Session, str, SysUser, create_user(), get_user() (+26 more) ### Community 19 - "Community 19" -Cohesion: 0.35 -Nodes (9): check_customer_protect_time(), _execute_single_rule(), _get_all_tenant_nos(), pool_recovery_job(), 公海池自动回收任务(由 APScheduler 调度) 遍历所有租户的启用规则,执行自动回收。, 每天凌晨1点:检查保护期到期客户,跟进次数不足则退回公海, 每天早上9点:保护期到期提醒(3天内到期且跟进不足), remind_customer_recycle() (+1 more) +Cohesion: 0.23 +Nodes (21): Any, bool, CRM 供方信息 CRUD — 对照 CrmSupplierInfoServiceImpl.java, int, Session, str, _apply_list_filters(), create_supplier_info() (+13 more) ### Community 20 - "Community 20" Cohesion: 0.37 @@ -230,12 +253,12 @@ Cohesion: 0.34 Nodes (16): Any, int, Session, str, _build_tree(), _cascade_soft_delete(), _collect_with_ancestors(), create_dept() (+8 more) ### Community 22 - "Community 22" -Cohesion: 0.07 -Nodes (48): 导出供方列表 — Java: CrmSupplierInfoController.export, 导出供方列表 — Java: CrmSupplierInfoController.export, 导出供方列表 — Java: CrmSupplierInfoController.export, 导出供方列表 — Java: CrmSupplierInfoController.export, 导出供方列表 — Java: CrmSupplierInfoController.export, 导出供方列表 — Java: CrmSupplierInfoController.export, 导出供方列表 — Java: CrmSupplierInfoController.export, 导出供方列表 — Java: CrmSupplierInfoController.export (+40 more) +Cohesion: 0.18 +Nodes (19): str, Any, bool, Session, str, StreamingResponse, CRM 模块 Excel 导出列定义(字段与字典类型对齐 Java *Vo @ExcelDictFormat)。, _yes_no() (+11 more) ### Community 23 - "Community 23" -Cohesion: 0.09 -Nodes (23): download_contract_pdf(), export_contracts(), get_contract_detail(), ORM → camelCase(单点真相), ORM → camelCase(单点真相), ORM → camelCase(单点真相), ORM → camelCase(单点真相), ORM → camelCase(单点真相) (+15 more) +Cohesion: 0.13 +Nodes (17): CrmContract, contract_row_to_dict(), _parse_letter_oss_ids_from_tier(), Java: validateFrameworkContractForSubmitApproval, Java: validateFrameworkContractForSubmitApproval, Java: validateFrameworkContractForSubmitApproval, Java: validateFrameworkContractForSubmitApproval, ORM → camelCase(单点真相) (+9 more) ### Community 24 - "Community 24" Cohesion: 0.29 @@ -250,12 +273,12 @@ Cohesion: 0.27 Nodes (11): Any, bool, str, decrypt_login_payload(), ensure_initialized(), extract_login_credentials(), get_public_pem(), 登录凭据 RSA 解密(与前端 JSEncrypt PKCS#1 v1.5 兼容)。 (+3 more) ### Community 27 - "Community 27" -Cohesion: 0.26 -Nodes (20): Any, bool, int, Session, str, create_follow(), _enrich_follow_dict(), _follow_row_to_dict() (+12 more) +Cohesion: 0.16 +Nodes (31): Any, bool, int, Session, str, Any, Session, str (+23 more) ### Community 28 - "Community 28" -Cohesion: 0.26 -Nodes (19): Any, bool, date, int, Session, str, _contact_row_to_dict(), create_contact() (+11 more) +Cohesion: 0.23 +Nodes (34): AdvanceApplyCreate, AdvanceApplyOut, AdvanceApplyUpdate, AdvanceApprovalCreate, BxUserContext, int, Session, str (+26 more) ### Community 29 - "Community 29" Cohesion: 0.32 @@ -266,76 +289,76 @@ Cohesion: 0.40 Nodes (3): BaseSettings, Config, Settings ### Community 36 - "Community 36" -Cohesion: 0.17 -Nodes (32): Any, int, Session, str, Any, bool, int, Session (+24 more) +Cohesion: 0.27 +Nodes (14): Any, bool, bytes, int, str, ApiCryptoError, _b64url_decode(), _b64url_encode() (+6 more) ### Community 37 - "Community 37" -Cohesion: 0.19 -Nodes (17): Any, int, str, BusinessException, InvalidStatusTransitionException, log_api_request(), log_delivery_operation(), log_operation() (+9 more) +Cohesion: 0.08 +Nodes (46): str, ContractApprovalPageListBody, 全局审批记录分页(approval/index.vue), CustomerFollowByCustomerBody, CustomerFollowDetailBody, BaseModel, AttachmentUploadResponse, ChangePasswordRequest (+38 more) ### Community 38 - "Community 38" -Cohesion: 0.40 -Nodes (4): str, Config, format_api_error_message(), 将 HTTP/SQLAlchemy 等异常转为可展示的错误文案(避免 str([]) 空列表)。 +Cohesion: 0.26 +Nodes (21): approve_task(), _business_type_label(), create_process_def(), delete_process_def(), _enrich_task_list(), get_business_all_tasks(), _get_business_form_fields(), get_designer_data() (+13 more) ### Community 39 - "Community 39" Cohesion: 0.20 Nodes (26): Any, bool, Decimal, int, Session, str, batch_insert_quote_products(), calculate_subtotal() (+18 more) ### Community 40 - "Community 40" -Cohesion: 0.22 -Nodes (33): Any, bool, CRM 线索 CRUD(线索主表 + 转化/分配/无效/等级操作), date, datetime, int, Session, str (+25 more) +Cohesion: 0.10 +Nodes (60): Any, bool, int, Session, str, Any, bool, CRM 线索 CRUD(线索主表 + 转化/分配/无效/等级操作) (+52 more) ### Community 41 - "Community 41" -Cohesion: 0.11 -Nodes (19): 供方全量列表(下拉)— Java: CrmSupplierInfoController.listAll, 供方全量列表(下拉)— Java: CrmSupplierInfoController.listAll, 供方全量列表(下拉)— Java: CrmSupplierInfoController.listAll, 供方全量列表(下拉)— Java: CrmSupplierInfoController.listAll, 供方全量列表(下拉)— Java: CrmSupplierInfoController.listAll, 供方全量列表(下拉)— Java: CrmSupplierInfoController.listAll, 供方全量列表(下拉)— Java: CrmSupplierInfoController.listAll, 供方全量列表(下拉)— Java: CrmSupplierInfoController.listAll (+11 more) +Cohesion: 0.17 +Nodes (22): BxUserContext, Session, str, str, bool, BxUserContext, Session, str (+14 more) ### Community 42 - "Community 42" Cohesion: 0.34 Nodes (16): Any, bool, int, Session, str, create_dict_type(), dict_type_code_exists(), get_dict_type() (+8 more) ### Community 43 - "Community 43" -Cohesion: 0.23 -Nodes (16): bool, int, Redis, Request, str, _claims_from_auth(), _coerce_post_method_override_to_get(), _get_redis_client() (+8 more) +Cohesion: 0.30 +Nodes (11): bool, BxUserContext, BxWorkflowNode, int, Session, str, 按业务类型获取工作流;已知类型不存在时自动创建空定义(无节点)。, WorkflowService (+3 more) ### Community 44 - "Community 44" -Cohesion: 0.16 -Nodes (21): _error_json(), lifespan(), _mask_secret(), Exception, int, Request, str, 未捕获异常:统一 JSON 500,确保跨域场景下仍有 Access-Control-Allow-Origin (+13 more) +Cohesion: 0.22 +Nodes (16): Any, bool, bytes, int, Request, str, _claims_from_auth(), _format_body_bytes() (+8 more) ### Community 45 - "Community 45" -Cohesion: 0.08 -Nodes (76): register_contract_routes(), bool, CRM 合同 CRUD — 对照 CrmContractServiceImpl.java(列表/详情 P1), Session, str, batch_assign_owner(), batch_submit_approval(), _build_customer_address() (+68 more) +Cohesion: 0.29 +Nodes (34): AdvanceIssueRequest, BxUserContext, int, ReimburseApplyOut, Session, str, str, BatchOffsetRequest (+26 more) ### Community 46 - "Community 46" -Cohesion: 0.17 -Nodes (23): Any, bool, bytes, int, Request, str, bool, int (+15 more) +Cohesion: 0.05 +Nodes (83): _avatar_url_field(), _build_user_info_payload(), get_current_user_profile(), get_web_auth_menu_codes(), _jwt_user_payload(), logout(), public_quote_share(), 公共接口(Web 登录、刷新 Token、登出;用户模型对齐 docs/sql/shanxia2.0.sql 基线) (+75 more) ### Community 47 - "Community 47" -Cohesion: 0.17 -Nodes (26): API 路由包 — 山峡化工生产一体化门户, get_menu_list(), 运营端菜单接口(与 web-admin 前端静态路由 sqxp.ts 对齐,14 个一级菜单), approve_task(), _business_type_label(), create_process_def(), delete_process_def(), _enrich_task_list() (+18 more) +Cohesion: 0.20 +Nodes (25): Any, bool, BxUserContext, BxWorkflowNode, float, int, ReimburseApplyOut, Session (+17 more) ### Community 48 - "Community 48" Cohesion: 0.07 -Nodes (51): CRM 合同 API 路由 — GET/PUT/DELETE/POST 对齐原 Java CRM, CRM 合同子模块路由 — 变更/模板/审批独立页, CRM 合同 Pydantic Schemas — 对照 CrmContractBo / CrmContractVo, ContractApprovalActionBody, ContractApprovalApproveBody, ContractApprovalByContractBody, ContractApprovalExportBody, ContractApprovalListBody (+43 more) +Nodes (52): CRM 合同 API 路由 — GET/PUT/DELETE/POST 对齐原 Java CRM, CRM 合同子模块路由 — 变更/模板/审批独立页, register_contract_sub_routes(), CRM 合同 Pydantic Schemas — 对照 CrmContractBo / CrmContractVo, ContractApprovalActionBody, ContractApprovalApproveBody, ContractApprovalByContractBody, ContractApprovalExportBody (+44 more) ### Community 49 - "Community 49" -Cohesion: 0.44 -Nodes (11): Any, Session, str, get_follow_statistics(), get_industry_statistics(), get_level_statistics(), get_overview_statistics(), get_owner_statistics() (+3 more) +Cohesion: 0.29 +Nodes (29): AttachmentDownloadUrlBody, DeptCreateBody, DeptUpdateBody, DictDataCreateBody, DictDataUpdateBody, DictTypeCreateBody, DictTypeUpdateBody, MenuCreateBody (+21 more) ### Community 50 - "Community 50" -Cohesion: 0.19 -Nodes (20): operlog_detail(), operlog_list(), 操作日志分页列表(基于 API 请求日志适配 RuoYi OperLog 结构), Session, Any, int, Session, str (+12 more) +Cohesion: 0.14 +Nodes (22): _error_json(), lifespan(), _mask_secret(), Exception, int, Request, str, 未捕获异常:统一 JSON 500,确保跨域场景下仍有 Access-Control-Allow-Origin (+14 more) ### Community 51 - "Community 51" Cohesion: 0.16 Nodes (13): float, int, str, 微信消息通知服务 支持微信小程序模板消息推送 使用方式: from app.core.wechat_message import WechatMes, 发送订单状态通知 Args: openid: 用户openid order_n, 发送支付成功通知 Args: openid: 用户openid order_n, 发送配送通知 Args: openid: 配送员openid task_no:, 发送配送时效预警 Args: openid: 配送员openid task_n (+5 more) ### Community 52 - "Community 52" -Cohesion: 0.37 -Nodes (13): create_leave(), delete_leave(), get_leave(), _leave_local_callback(), leave_workflow_callback(), list_leaves(), submit_leave(), update_leave() (+5 more) +Cohesion: 0.33 +Nodes (6): int, Config, LeaveCreate, LeaveResponse, LeaveUpdate, Pydantic schemas - 请假申请 ### Community 53 - "Community 53" -Cohesion: 0.29 -Nodes (7): batch_submit_contract_approval(), Java: batchSubmitApproval, Java: batchSubmitApproval, Java: batchSubmitApproval, Java: batchSubmitApproval, Java: batchSubmitApproval, Java: batchSubmitApproval +Cohesion: 0.28 +Nodes (20): Any, bool, date, int, Session, str, _contact_row_to_dict(), create_contact() (+12 more) ### Community 54 - "Community 54" Cohesion: 0.34 @@ -351,7 +374,7 @@ Nodes (10): Any, Request, str, str, parse_admin_request_json(), 运营 Web(/we ### Community 57 - "Community 57" Cohesion: 0.11 -Nodes (26): _avatar_url_field(), _build_user_info_payload(), get_current_user_profile(), get_web_auth_menu_codes(), _jwt_user_payload(), logout(), public_quote_share(), 登出:吊销 Redis 会话(若已配置 REDIS_HOST)。 (+18 more) +Nodes (19): 供方全量列表(下拉)— Java: CrmSupplierInfoController.listAll, 供方全量列表(下拉)— Java: CrmSupplierInfoController.listAll, 供方全量列表(下拉)— Java: CrmSupplierInfoController.listAll, 供方全量列表(下拉)— Java: CrmSupplierInfoController.listAll, 供方全量列表(下拉)— Java: CrmSupplierInfoController.listAll, 供方全量列表(下拉)— Java: CrmSupplierInfoController.listAll, 供方全量列表(下拉)— Java: CrmSupplierInfoController.listAll, 供方全量列表(下拉)— Java: CrmSupplierInfoController.listAll (+11 more) ### Community 59 - "Community 59" Cohesion: 0.11 @@ -362,8 +385,8 @@ Cohesion: 0.19 Nodes (32): Any, bool, CrmContractProductPriceTier, date, Decimal, int, Session, str (+24 more) ### Community 61 - "Community 61" -Cohesion: 0.17 -Nodes (30): register_quote_routes(), bool, int, Session, str, accept_quote(), generate_pdf(), generate_share() (+22 more) +Cohesion: 0.11 +Nodes (27): API 路由包 — 山峡化工生产一体化门户, create_leave(), delete_leave(), get_leave(), _leave_local_callback(), leave_workflow_callback(), list_leaves(), submit_leave() (+19 more) ### Community 62 - "Community 62" Cohesion: 0.35 @@ -371,51 +394,51 @@ Nodes (17): Any, bool, int, Session, str, _build_tree(), _cascade_soft_delete(), ### Community 63 - "Community 63" Cohesion: 0.17 -Nodes (29): Any, bool, int, Session, str, Query, approve_quote(), can_user_approve() (+21 more) +Nodes (30): Any, bool, int, Session, str, date, Query, approve_quote() (+22 more) ### Community 65 - "Community 65" Cohesion: 0.12 Nodes (16): invoice_info_list(), 按客户ID查询开票信息(与 by-customer 等价), 按客户ID查询开票信息(与 by-customer 等价), 按客户ID查询开票信息(与 by-customer 等价), 按客户ID查询开票信息(与 by-customer 等价), 按客户ID查询开票信息(与 by-customer 等价), 按客户ID查询开票信息(与 by-customer 等价), 按客户ID查询开票信息(与 by-customer 等价) (+8 more) ### Community 68 - "Community 68" -Cohesion: 0.27 -Nodes (18): Any, bool, int, Session, str, create_clue_follow(), delete_clue_follow(), get_clue_follow() (+10 more) +Cohesion: 0.33 +Nodes (14): BxUserContext, Session, str, UploadFile, AttachmentOut, bind_biz(), delete_attachment(), download_file() (+6 more) ### Community 69 - "Community 69" Cohesion: 0.19 Nodes (45): Any, CRM 商机 CRUD(主表 + 阶段/赢输单/统计/看板/漏斗), date, datetime, Decimal, int, Session, str (+37 more) ### Community 70 - "Community 70" -Cohesion: 0.20 -Nodes (28): 公共接口(Web 登录、刷新 Token、登出;用户模型对齐 docs/sql/shanxia2.0.sql 基线), refresh_token(), bool, Redis, Session, str, create_access_token(), create_refresh_token() (+20 more) +Cohesion: 0.33 +Nodes (14): Any, int, Session, str, create_dict_data(), get_dict_data(), list_dict_data(), list_dict_data_options() (+6 more) ### Community 71 - "Community 71" -Cohesion: 0.14 -Nodes (17): Any, int, _build_category_tree(), _collect_category_with_ancestors(), list_category_tree(), list_products(), _product_row_to_dict(), 获取产品分类树(嵌套 children,供树形表格/树选择器使用) (+9 more) +Cohesion: 0.40 +Nodes (5): _product_row_to_dict(), 产品 ORM 对象转 dict(camelCase 键名), 产品 ORM 对象转 dict(camelCase 键名), 产品 ORM 对象转 dict(camelCase 键名), 产品 ORM 对象转 dict(camelCase 键名) ### Community 72 - "Community 72" Cohesion: 0.38 -Nodes (15): Any, bool, int, Session, str, create_post(), get_post(), list_posts() (+7 more) +Nodes (15): Any, bool, int, Session, str, create_site(), get_site(), list_sites() (+7 more) ### Community 73 - "Community 73" -Cohesion: 0.24 -Nodes (12): Session, str, iter_user_menu_perm_codes(), _map_role_name_to_web(), Web 管理端登录:基于 V0.3 sys_user / sys_user_role / sys_role 的角色与菜单权限解析, 将 sys_role.role_name 映射为 web-admin 使用的 role 字符串。, 根据用户关联角色解析 Web 端 role(admin / super_admin)。, 根据用户关联角色解析 Web 端 role(admin / super_admin)。 (+4 more) +Cohesion: 0.33 +Nodes (6): bx_health(), P0 健康检查:验证 bx 路由已挂载且响应协议为 code=0。, P0 健康检查:验证 bx 路由已挂载且响应协议为 code=0。, P0 健康检查:验证 bx 路由已挂载且响应协议为 code=0。, P0 健康检查:验证 bx 路由已挂载且响应协议为 code=0。, P0 健康检查:验证 bx 路由已挂载且响应协议为 code=0。 ### Community 74 - "Community 74" -Cohesion: 0.07 -Nodes (46): Decimal, _apply_contract_entity_fields(), _apply_contract_scalar_fields(), _build_contract_filters(), _calc_amount_with_tax(), create_contract(), create_from_opportunity(), create_from_quote() (+38 more) +Cohesion: 0.08 +Nodes (99): register_contract_routes(), Any, bool, CRM 合同 CRUD — 对照 CrmContractServiceImpl.java(列表/详情 P1), Decimal, int, Session, str (+91 more) ### Community 75 - "Community 75" Cohesion: 0.16 Nodes (21): Any, bool, Session, str, Java: viewByShareCode, Java: viewByShareCode, Java: viewByShareCode, Java: viewByShareCode (+13 more) ### Community 76 - "Community 76" -Cohesion: 0.34 -Nodes (18): Any, bool, datetime, int, Session, str, create_opportunity_follow(), get_opportunity_follow() (+10 more) +Cohesion: 0.35 +Nodes (19): Any, bool, datetime, int, Session, str, create_opportunity_follow(), get_opportunity_follow() (+11 more) ### Community 78 - "Community 78" -Cohesion: 0.11 -Nodes (42): Any, CRM 报价单 CRUD — 对照 CrmQuoteServiceImpl.java(P2 全量), date, datetime, Decimal, _build_quote_filters(), calculate_quote_amount(), create_quote() (+34 more) +Cohesion: 0.42 +Nodes (13): Any, bool, Session, str, _clear_default_for_customer(), create_invoice_info(), get_invoice_info(), list_invoice_info_by_customer() (+5 more) ### Community 79 - "Community 79" Cohesion: 0.22 @@ -426,16 +449,16 @@ Cohesion: 0.22 Nodes (9): generate_contract_no(), Java: generateContractNo — {供方编码}/X-JT + yyyyMMdd + 3位流水, Java: generateContractNo — {供方编码}/X-JT + yyyyMMdd + 3位流水, Java: generateContractNo — {供方编码}/X-JT{yyyyMMdd}{3位序号}, Java: generateContractNo — {供方编码}/X-JT{yyyyMMdd}{3位序号}, Java: generateContractNo — {供方编码}/X-JT{yyyyMMdd}{3位序号}, Java: generateContractNo — {供方编码}/X-JT{yyyyMMdd}{3位序号}, Java: generateContractNo — {供方编码}/X-JT{yyyyMMdd}{3位序号} (+1 more) ### Community 81 - "Community 81" -Cohesion: 0.60 -Nodes (10): Any, Session, str, _apply_create_range(), _base_query(), get_clue_level_statistics(), get_clue_overview_statistics(), get_clue_owner_statistics() (+2 more) +Cohesion: 0.22 +Nodes (18): bytes, int, str, download_file_bytes(), file_stream(), get_access_url(), get_download_url(), get_preview_url() (+10 more) ### Community 82 - "Community 82" Cohesion: 0.33 Nodes (11): SysOss, int, Session, str, SysOss, create_oss(), _oss_row_to_dict(), create_oss() (+3 more) ### Community 83 - "Community 83" -Cohesion: 0.18 -Nodes (31): CrmContract, Query, Any, CrmContract, CrmContractProductPriceTier, date, datetime, int (+23 more) +Cohesion: 0.14 +Nodes (14): _build_contract_filters(), export_contracts(), Java: queryList for export, Java: queryList for export, Java: queryList for export, Java: queryList for export, Java: buildQueryWrapper, Java: queryList for export (+6 more) ### Community 84 - "Community 84" Cohesion: 0.33 @@ -446,16 +469,16 @@ Cohesion: 0.11 Nodes (19): 分页查询供方列表 — Java: CrmSupplierInfoController.list, 分页查询供方列表 — Java: CrmSupplierInfoController.list, 分页查询供方列表 — Java: CrmSupplierInfoController.list, 分页查询供方列表 — Java: CrmSupplierInfoController.list, 分页查询供方列表 — Java: CrmSupplierInfoController.list, 分页查询供方列表 — Java: CrmSupplierInfoController.list, 分页查询供方列表 — Java: CrmSupplierInfoController.list, 分页查询供方列表 — Java: CrmSupplierInfoController.list (+11 more) ### Community 86 - "Community 86" -Cohesion: 0.20 -Nodes (10): 供方详情 — Java: CrmSupplierInfoController.getInfo, 供方详情 — Java: CrmSupplierInfoController.getInfo, 供方详情 — Java: CrmSupplierInfoController.getInfo, 供方详情 — Java: CrmSupplierInfoController.getInfo, 供方详情 — Java: CrmSupplierInfoController.getInfo, 供方详情 — Java: CrmSupplierInfoController.getInfo, 供方详情 — Java: CrmSupplierInfoController.getInfo, 供方详情 — Java: CrmSupplierInfoController.getInfo (+2 more) +Cohesion: 0.30 +Nodes (8): Any, bool, int, Session, str, BxCrudService, 报销模块 Service 基类 — 租户隔离 + UUID + 软删除。, M ### Community 87 - "Community 87" Cohesion: 0.20 Nodes (10): 删除供方 — Java: CrmSupplierInfoController.remove, 删除供方 — Java: CrmSupplierInfoController.remove, 删除供方 — Java: CrmSupplierInfoController.remove, 删除供方 — Java: CrmSupplierInfoController.remove, 删除供方 — Java: CrmSupplierInfoController.remove, 删除供方 — Java: CrmSupplierInfoController.remove, 删除供方 — Java: CrmSupplierInfoController.remove, 删除供方 — Java: CrmSupplierInfoController.remove (+2 more) ### Community 88 - "Community 88" -Cohesion: 0.33 -Nodes (10): Any, int, Session, str, list_ethnics(), 民族码表 CRUD(全局 sys_ethnic), _row_to_dict(), 民族码表 sys_ethnic(国标 GB/T 3304,全局) (+2 more) +Cohesion: 0.21 +Nodes (16): Any, int, str, BusinessException, InvalidStatusTransitionException, log_api_request(), log_delivery_operation(), log_operation() (+8 more) ### Community 89 - "Community 89" Cohesion: 0.25 @@ -474,71 +497,155 @@ Cohesion: 0.29 Nodes (7): Java: renewContract — 基础续签, Java: renewContract — 基础续签, Java: renewContract — 基础续签, Java: renewContract — 基础续签, Java: renewContract — 基础续签, Java: renewContract — 基础续签, renew_contract() ### Community 93 - "Community 93" -Cohesion: 0.42 -Nodes (13): Any, bool, Session, str, _clear_default_for_customer(), create_invoice_info(), get_invoice_info(), list_invoice_info_by_customer() (+5 more) +Cohesion: 0.26 +Nodes (22): Any, bool, datetime, int, Session, str, BizSampleCode, batch_generate_sample_codes() (+14 more) ### Community 94 - "Community 94" -Cohesion: 0.17 -Nodes (21): Decimal, str, Any, str, derive_legacy_status_from_three(), derive_three_status_from_legacy(), 阶段A兼容:从旧 status 推导三字段。 约束:旧 status 本身混合了支付/配送/订单生命周期,因此只能尽力推断; 若业务侧已有更精确, 阶段A兼容:从三字段反推旧 status(用于旧前端/旧筛选参数兼容)。 (+13 more) +Cohesion: 0.18 +Nodes (20): Decimal, str, Any, str, derive_legacy_status_from_three(), derive_three_status_from_legacy(), 阶段A兼容:从旧 status 推导三字段。 约束:旧 status 本身混合了支付/配送/订单生命周期,因此只能尽力推断; 若业务侧已有更精确, 阶段A兼容:从三字段反推旧 status(用于旧前端/旧筛选参数兼容)。 (+12 more) ### Community 95 - "Community 95" Cohesion: 0.13 Nodes (15): generate_auto_product_no(), _get_quote_item_field(), Java: generateAutoProductNo — SXWL + 8位随机大写字符, Java: generateAutoProductNo — SXWL + 8位随机大写字符, Java: resolveProductIdForQuoteItem(CrmProduct 无 tax_rate,跳过税率匹配), Java: resolveProductIdForQuoteItem(CrmProduct 无 tax_rate,跳过税率匹配), Java: generateAutoProductNo — SXWL + 8位随机大写字符, Java: generateAutoProductNo — SXWL + 8位随机大写字符 (+7 more) ### Community 96 - "Community 96" -Cohesion: 0.18 -Nodes (19): datetime, int, str, datetime, int, Session, str, BizNoKind (+11 more) +Cohesion: 0.21 +Nodes (14): Any, str, bool, BxUserContext, int, Session, str, AttachmentService (+6 more) ### Community 97 - "Community 97" -Cohesion: 0.22 -Nodes (9): Java: statisticsOverview, Java: statisticsOverview, Java: statisticsOverview, Java: statisticsOverview, Java: statisticsOverview, Java: statisticsOverview, Java: statisticsOverview, Java: statisticsOverview (+1 more) +Cohesion: 0.10 +Nodes (61): register_quote_routes(), Any, bool, CRM 报价单 CRUD — 对照 CrmQuoteServiceImpl.java(P2 全量), int, Session, str, accept_quote() (+53 more) ### Community 98 - "Community 98" -Cohesion: 0.22 -Nodes (9): Java: statisticsTrend, Java: statisticsTrend, Java: statisticsTrend, Java: statisticsTrend, Java: statisticsTrend, Java: statisticsTrend, Java: statisticsTrend, Java: statisticsTrend (+1 more) +Cohesion: 0.26 +Nodes (9): Exception, bytes, str, bytes, BytesIO, convert_heic_to_jpeg(), process_image_content(), 将 HEIC/HEIF 格式转换为 JPEG 格式 (+1 more) ### Community 99 - "Community 99" -Cohesion: 0.29 -Nodes (7): _parse_letter_oss_ids_from_tier(), Java: validateFrameworkContractForSubmitApproval, Java: validateFrameworkContractForSubmitApproval, Java: validateFrameworkContractForSubmitApproval, Java: validateFrameworkContractForSubmitApproval, Java: validateFrameworkContractForSubmitApproval, validate_framework_contract_for_submit_approval() +Cohesion: 0.20 +Nodes (10): 供方详情 — Java: CrmSupplierInfoController.getInfo, 供方详情 — Java: CrmSupplierInfoController.getInfo, 供方详情 — Java: CrmSupplierInfoController.getInfo, 供方详情 — Java: CrmSupplierInfoController.getInfo, 供方详情 — Java: CrmSupplierInfoController.getInfo, 供方详情 — Java: CrmSupplierInfoController.getInfo, 供方详情 — Java: CrmSupplierInfoController.getInfo, 供方详情 — Java: CrmSupplierInfoController.getInfo (+2 more) ### Community 100 - "Community 100" -Cohesion: 0.40 -Nodes (5): bool, str, get_password_hash(), 验证密码(哈希非 bcrypt 或损坏时返回 False,避免抛错), verify_password() +Cohesion: 0.36 +Nodes (9): Any, int, Session, str, get_pool_record(), list_pool_records(), _row_to_dict(), total_pages() (+1 more) ### Community 101 - "Community 101" -Cohesion: 0.40 -Nodes (5): list_roles_for_designer(), 返回角色下拉选项(label=角色名,value=角色ID UUID),供流程设计器审批人选择使用。 与 /roles 不同,此端点返回角色 UUID, 返回角色下拉选项(label=角色名,value=角色ID UUID),供流程设计器审批人选择使用。 与 /roles 不同,此端点返回角色 UUID, 返回角色下拉选项(label=角色名,value=角色ID UUID),供流程设计器审批人选择使用。 与 /roles 不同,此端点返回角色 UUID, 返回角色下拉选项(label=角色名,value=角色ID UUID),供流程设计器审批人选择使用。 与 /roles 不同,此端点返回角色 UUID +Cohesion: 0.18 +Nodes (15): Any, int, Session, str, Base, list_ethnics(), 民族码表 CRUD(全局 sys_ethnic), _row_to_dict() (+7 more) ### Community 102 - "Community 102" Cohesion: 0.22 Nodes (9): Java: statisticsStatus, Java: statisticsStatus, Java: statisticsStatus, Java: statisticsStatus, Java: statisticsStatus, Java: statisticsStatus, Java: statisticsStatus, Java: statisticsStatus (+1 more) ### Community 103 - "Community 103" -Cohesion: 0.67 -Nodes (3): Web 端登录用 RSA 公钥(PKCS#1 v1.5,与 JSEncrypt 一致), Web 端登录用 RSA 公钥(PKCS#1 v1.5,与 JSEncrypt 一致), web_login_rsa_public_key() +Cohesion: 0.22 +Nodes (17): bool, int, Redis, Request, str, _claims_from_auth(), _coerce_post_method_override_to_get(), _get_redis_client() (+9 more) + +### Community 104 - "Community 104" +Cohesion: 0.14 +Nodes (25): Any, bool, BxUserContext, BxWorkflowNode, float, int, Session, str (+17 more) + +### Community 105 - "Community 105" +Cohesion: 0.32 +Nodes (10): datetime, int, str, 审批轮次过滤 — 驳回后重新提交时,进度接口仅展示当前轮次。, format_datetime(), generate_random_password(), get_current_time(), get_file_size_display() (+2 more) + +### Community 106 - "Community 106" +Cohesion: 0.29 +Nodes (10): datetime, int, Session, str, BizNoKind, allocate_next_biz_no(), _format_biz_no(), _prefix_for() (+2 more) + +### Community 107 - "Community 107" +Cohesion: 0.29 +Nodes (7): batch_submit_contract_approval(), Java: batchSubmitApproval, Java: batchSubmitApproval, Java: batchSubmitApproval, Java: batchSubmitApproval, Java: batchSubmitApproval, Java: batchSubmitApproval + +### Community 108 - "Community 108" +Cohesion: 0.18 +Nodes (11): batch_assign_owner(), download_contract_pdf(), Java: batchAssignOwner, Java: downloadContractPdf — 返回合同文件 URL/路径, Java: batchAssignOwner, Java: batchAssignOwner, Java: batchAssignOwner, Java: batchAssignOwner (+3 more) ### Community 109 - "Community 109" -Cohesion: 0.40 -Nodes (4): str, 附件上传 bizType 与 MinIO 目录映射(对齐原 CRM oss 上传语义), 优先使用显式 folder;否则按 bizType 映射默认目录。, resolve_upload_folder() +Cohesion: 0.33 +Nodes (5): str, 附件上传 bizType 与 MinIO 目录映射(对齐原 CRM oss 上传语义), 优先使用显式 folder;否则按 bizType 映射默认目录。, 优先使用显式 folder;否则按 bizType 映射默认目录。, resolve_upload_folder() + +### Community 111 - "Community 111" +Cohesion: 0.18 +Nodes (5): ContactByCustomerBody, ContactDetailBody, ContactSetPrimaryBody, CRM 联系人 Pydantic Schemas, SoftDeleteModel + +### Community 112 - "Community 112" +Cohesion: 0.29 +Nodes (7): create_from_opportunity(), _opportunity_products_to_contract_products(), Java: createFromOpportunity — 返回合同 id, Java: createFromOpportunity — 返回合同 id, Java: createFromOpportunity — 返回合同 id, Java: createFromOpportunity — 返回合同 id, Java: createFromOpportunity — 返回合同 id ### Community 113 - "Community 113" -Cohesion: 0.18 -Nodes (10): Session, str, _auto_fill_create_dept_id(), get_db(), ORM before_insert 钩子:当 create_dept_id 为空时,自动从请求上下文填充当前用户部门 ID, get_user_menu_codes(), 菜单 code 权限守卫(V0.3:通过 sys_user_role → sys_role_menu → sys_menu.perms), 读取用户授权的菜单权限标识集合(与前端 meta.menuCode / perms 对齐)。 (+2 more) +Cohesion: 0.35 +Nodes (9): check_customer_protect_time(), _execute_single_rule(), _get_all_tenant_nos(), pool_recovery_job(), 公海池自动回收任务(由 APScheduler 调度) 遍历所有租户的启用规则,执行自动回收。, 每天凌晨1点:检查保护期到期客户,跟进次数不足则退回公海, 每天早上9点:保护期到期提醒(3天内到期且跟进不足), remind_customer_recycle() (+1 more) + +### Community 114 - "Community 114" +Cohesion: 0.29 +Nodes (7): Java: withdrawApproval, Java: withdrawApproval, Java: withdrawApproval, Java: withdrawApproval, Java: withdrawApproval, Java: withdrawApproval, withdraw_contract_approval() + +### Community 116 - "Community 116" +Cohesion: 0.25 +Nodes (8): create_from_quote(), _quote_products_to_contract_products(), Java: createFromQuote — 返回合同 id, Java: createFromQuote — 返回合同 id, Java: createFromQuote — 返回合同 id, Java: createFromQuote — 返回合同 id, Java: createFromQuote — 返回合同 id, Java: createFromQuote — 返回合同 id + +### Community 117 - "Community 117" +Cohesion: 0.33 +Nodes (6): datetime, str, _dt_to_str(), PagedQuery, PagedResponse, bx 原系统 API 响应包装(code=0 / msg / data.rows),与门户 success_response 分离。 + +### Community 118 - "Community 118" +Cohesion: 0.09 +Nodes (27): datetime, Decimal, calculate_quote_amount(), _decimal_value(), _parse_optional_datetime(), _period_key(), Java: statisticsOverview, Java: statisticsOverview (+19 more) + +### Community 119 - "Community 119" +Cohesion: 0.29 +Nodes (4): int, MinIOStorage, MinIO 预签名下载 URL,携带原始文件名。, 带下载文件名的访问 URL;默认实现为普通访问地址。 + +### Community 120 - "Community 120" +Cohesion: 0.33 +Nodes (6): Java Controller TODO — 保持 pending,记录备注, Java Controller TODO — 保持 pending,记录备注, Java Controller TODO — 保持 pending,记录备注, Java Controller TODO — 保持 pending,记录备注, Java Controller TODO — 保持 pending,记录备注, submit_change_approval() + +### Community 121 - "Community 121" +Cohesion: 0.44 +Nodes (8): bool, int, Session, str, ApiRequestLogCRUD, SysApiRequestLog, SysApiRequestLogHis, SysApiRequestLog + +### Community 122 - "Community 122" +Cohesion: 0.38 +Nodes (11): Any, int, Session, str, _business_type_from_path(), get_oper_log(), list_oper_logs(), _oper_status() (+3 more) + +### Community 123 - "Community 123" +Cohesion: 0.20 +Nodes (10): 导出供方列表 — Java: CrmSupplierInfoController.export, 导出供方列表 — Java: CrmSupplierInfoController.export, 导出供方列表 — Java: CrmSupplierInfoController.export, 导出供方列表 — Java: CrmSupplierInfoController.export, 导出供方列表 — Java: CrmSupplierInfoController.export, 导出供方列表 — Java: CrmSupplierInfoController.export, 导出供方列表 — Java: CrmSupplierInfoController.export, 导出供方列表 — Java: CrmSupplierInfoController.export (+2 more) + +### Community 124 - "Community 124" +Cohesion: 0.29 +Nodes (6): _coerce_optional_id(), WorkflowDefCreate, WorkflowDefOut, WorkflowDefUpdate, WorkflowNodeCreate, WorkflowNodeOut + +### Community 125 - "Community 125" +Cohesion: 0.29 +Nodes (6): CustomerPoolDetailBody, CustomerPoolListBody, PoolCustomerListBody, PoolRecordDetailBody, PoolRecordListBody, CRM 客户公海池记录 Pydantic Schemas + +### Community 127 - "Community 127" +Cohesion: 0.50 +Nodes (3): Config, PageResult, ResponseModel + +### Community 128 - "Community 128" +Cohesion: 0.67 +Nodes (3): str, format_api_error_message(), 将 HTTP/SQLAlchemy 等异常转为可展示的错误文案(避免 str([]) 空列表)。 + +### Community 129 - "Community 129" +Cohesion: 0.33 +Nodes (5): CRM 客户管理 Pydantic Schemas, CustomerAssignPoolBody, CustomerCheckDuplicateBody, CustomerDetailBody, CRM 客户管理 CRUD(客户 + 联系人 + 跟进记录) ## Knowledge Gaps -- **42 isolated node(s):** `bool`, `bool`, `Config`, `bool`, `bool` (+37 more) +- **52 isolated node(s):** `bool`, `bool`, `Config`, `bool`, `bool` (+47 more) These have ≤1 connection - possible missing edges or undocumented components. -- **3 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes. +- **5 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes. ## Suggested Questions _Questions this graph is uniquely positioned to answer:_ -- **Why does `SysUser` connect `Community 1` to `Community 0`, `Community 2`, `Community 5`, `Community 6`, `Community 8`, `Community 10`, `Community 14`, `Community 17`, `Community 18`, `Community 36`, `Community 40`, `Community 45`, `Community 47`, `Community 57`, `Community 61`, `Community 63`, `Community 69`, `Community 70`, `Community 74`, `Community 78`, `Community 83`, `Community 96`?** - _High betweenness centrality (0.148) - this node is a cross-community bridge._ -- **Why does `generate_uuid()` connect `Community 0` to `Community 1`, `Community 4`, `Community 5`, `Community 7`, `Community 8`, `Community 9`, `Community 10`, `Community 14`, `Community 17`, `Community 18`, `Community 19`, `Community 21`, `Community 22`, `Community 27`, `Community 28`, `Community 36`, `Community 39`, `Community 40`, `Community 42`, `Community 45`, `Community 54`, `Community 55`, `Community 57`, `Community 60`, `Community 62`, `Community 63`, `Community 68`, `Community 69`, `Community 70`, `Community 72`, `Community 74`, `Community 75`, `Community 76`, `Community 78`, `Community 82`, `Community 83`, `Community 93`, `Community 95`, `Community 96`?** - _High betweenness centrality (0.113) - this node is a cross-community bridge._ -- **Why does `error_response()` connect `Community 11` to `Community 1`, `Community 5`, `Community 6`, `Community 10`, `Community 16`, `Community 22`, `Community 36`, `Community 38`, `Community 41`, `Community 43`, `Community 45`, `Community 47`, `Community 48`, `Community 50`, `Community 52`, `Community 57`, `Community 59`, `Community 61`, `Community 65`, `Community 70`, `Community 85`, `Community 86`, `Community 87`?** - _High betweenness centrality (0.088) - this node is a cross-community bridge._ +- **Why does `generate_uuid()` connect `Community 0` to `Community 4`, `Community 6`, `Community 7`, `Community 8`, `Community 9`, `Community 10`, `Community 12`, `Community 14`, `Community 18`, `Community 19`, `Community 21`, `Community 27`, `Community 39`, `Community 40`, `Community 42`, `Community 43`, `Community 46`, `Community 47`, `Community 53`, `Community 54`, `Community 55`, `Community 60`, `Community 62`, `Community 63`, `Community 69`, `Community 70`, `Community 72`, `Community 74`, `Community 75`, `Community 76`, `Community 78`, `Community 82`, `Community 86`, `Community 93`, `Community 95`, `Community 97`, `Community 100`, `Community 104`, `Community 105`, `Community 106`, `Community 113`?** + _High betweenness centrality (0.111) - this node is a cross-community bridge._ +- **Why does `SysUser` connect `Community 101` to `Community 1`, `Community 6`, `Community 8`, `Community 10`, `Community 12`, `Community 14`, `Community 18`, `Community 23`, `Community 38`, `Community 40`, `Community 44`, `Community 46`, `Community 49`, `Community 63`, `Community 69`, `Community 74`, `Community 93`, `Community 97`, `Community 100`, `Community 105`, `Community 118`?** + _High betweenness centrality (0.101) - this node is a cross-community bridge._ +- **Why does `BaseModel` connect `Community 37` to `Community 129`, `Community 12`, `Community 13`, `Community 16`, `Community 17`, `Community 28`, `Community 41`, `Community 45`, `Community 47`, `Community 48`, `Community 49`, `Community 52`, `Community 61`, `Community 68`, `Community 101`, `Community 111`, `Community 117`, `Community 124`, `Community 125`, `Community 127`?** + _High betweenness centrality (0.092) - this node is a cross-community bridge._ - **Are the 28 inferred relationships involving `str` (e.g. with `CRUDBase` and `LeaveCreate`) actually correct?** _`str` has 28 INFERRED edges - model-reasoned connections that need verification._ - **Are the 100 inferred relationships involving `Session` (e.g. with `ClueAssignBody` and `ClueConvertBody`) actually correct?** diff --git a/backend/graphify-out/cache/ast/011868ea9a25a17816882b6bc0dc097eeca74adaf8c1a00943397a2a1bbdb389.json b/backend/graphify-out/cache/ast/011868ea9a25a17816882b6bc0dc097eeca74adaf8c1a00943397a2a1bbdb389.json new file mode 100644 index 000000000..fa3b2973f --- /dev/null +++ b/backend/graphify-out/cache/ast/011868ea9a25a17816882b6bc0dc097eeca74adaf8c1a00943397a2a1bbdb389.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_attachment_py", "label": "attachment.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L1"}, {"id": "bx_attachment_attachmentservice", "label": "AttachmentService", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L14"}, {"id": "bx_attachment_attachmentservice_tenant_no", "label": "._tenant_no()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L16"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L16"}, {"id": "bxusercontext", "label": "BxUserContext", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L16"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L16"}, {"id": "bx_attachment_attachmentservice_get_by_id", "label": ".get_by_id()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L20"}, {"id": "bxattachment", "label": "BxAttachment", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L20"}, {"id": "bx_attachment_attachmentservice_create", "label": ".create()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L24"}, {"id": "bx_attachment_attachmentservice_soft_delete", "label": ".soft_delete()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L41"}, {"id": "bool", "label": "bool", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L41"}, {"id": "bx_attachment_attachmentservice_get_by_biz", "label": ".get_by_biz()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L48"}, {"id": "bx_attachment_attachmentservice_bind_biz", "label": ".bind_biz()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L58"}, {"id": "int", "label": "int", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L58"}, {"id": "bx_attachment_attachmentservice_count_invoice_attach_by_biz_ids", "label": ".count_invoice_attach_by_biz_ids()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L89"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_attachment_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_attachment_py", "target": "sqlalchemy", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L5", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_attachment_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L6", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_attachment_py", "target": "app_core_bx_auth", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L8", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_attachment_py", "target": "app_core_tenant_context", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L9", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_attachment_py", "target": "app_models_bx_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L10", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_attachment_py", "target": "app_services_bx_base", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L11", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_attachment_py", "target": "bx_attachment_attachmentservice", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L14", "weight": 1.0}, {"source": "bx_attachment_attachmentservice", "target": "bx_attachment_attachmentservice_tenant_no", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L16", "weight": 1.0}, {"source": "bx_attachment_attachmentservice_tenant_no", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L16", "weight": 1.0}, {"source": "bx_attachment_attachmentservice_tenant_no", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L16", "weight": 1.0}, {"source": "bx_attachment_attachmentservice_tenant_no", "target": "str", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L16", "weight": 1.0}, {"source": "bx_attachment_attachmentservice", "target": "bx_attachment_attachmentservice_get_by_id", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L20", "weight": 1.0}, {"source": "bx_attachment_attachmentservice_get_by_id", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L20", "weight": 1.0}, {"source": "bx_attachment_attachmentservice_get_by_id", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L20", "weight": 1.0}, {"source": "bx_attachment_attachmentservice_get_by_id", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L20", "weight": 1.0}, {"source": "bx_attachment_attachmentservice_get_by_id", "target": "bxattachment", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L20", "weight": 1.0}, {"source": "bx_attachment_attachmentservice", "target": "bx_attachment_attachmentservice_create", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L24", "weight": 1.0}, {"source": "bx_attachment_attachmentservice_create", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L24", "weight": 1.0}, {"source": "bx_attachment_attachmentservice_create", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L24", "weight": 1.0}, {"source": "bx_attachment_attachmentservice_create", "target": "bxattachment", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L24", "weight": 1.0}, {"source": "bx_attachment_attachmentservice", "target": "bx_attachment_attachmentservice_soft_delete", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L41", "weight": 1.0}, {"source": "bx_attachment_attachmentservice_soft_delete", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L41", "weight": 1.0}, {"source": "bx_attachment_attachmentservice_soft_delete", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L41", "weight": 1.0}, {"source": "bx_attachment_attachmentservice_soft_delete", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L41", "weight": 1.0}, {"source": "bx_attachment_attachmentservice_soft_delete", "target": "bool", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L41", "weight": 1.0}, {"source": "bx_attachment_attachmentservice", "target": "bx_attachment_attachmentservice_get_by_biz", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L48", "weight": 1.0}, {"source": "bx_attachment_attachmentservice_get_by_biz", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L48", "weight": 1.0}, {"source": "bx_attachment_attachmentservice_get_by_biz", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L48", "weight": 1.0}, {"source": "bx_attachment_attachmentservice_get_by_biz", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L48", "weight": 1.0}, {"source": "bx_attachment_attachmentservice_get_by_biz", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L48", "weight": 1.0}, {"source": "bx_attachment_attachmentservice_get_by_biz", "target": "bxattachment", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L48", "weight": 1.0}, {"source": "bx_attachment_attachmentservice", "target": "bx_attachment_attachmentservice_bind_biz", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L58", "weight": 1.0}, {"source": "bx_attachment_attachmentservice_bind_biz", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L58", "weight": 1.0}, {"source": "bx_attachment_attachmentservice_bind_biz", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L58", "weight": 1.0}, {"source": "bx_attachment_attachmentservice_bind_biz", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L58", "weight": 1.0}, {"source": "bx_attachment_attachmentservice_bind_biz", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L58", "weight": 1.0}, {"source": "bx_attachment_attachmentservice_bind_biz", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L58", "weight": 1.0}, {"source": "bx_attachment_attachmentservice_bind_biz", "target": "int", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L58", "weight": 1.0}, {"source": "bx_attachment_attachmentservice", "target": "bx_attachment_attachmentservice_count_invoice_attach_by_biz_ids", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L89", "weight": 1.0}, {"source": "bx_attachment_attachmentservice_count_invoice_attach_by_biz_ids", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L89", "weight": 1.0}, {"source": "bx_attachment_attachmentservice_count_invoice_attach_by_biz_ids", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L89", "weight": 1.0}, {"source": "bx_attachment_attachmentservice_count_invoice_attach_by_biz_ids", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L89", "weight": 1.0}, {"source": "bx_attachment_attachmentservice_count_invoice_attach_by_biz_ids", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L89", "weight": 1.0}, {"source": "bx_attachment_attachmentservice_count_invoice_attach_by_biz_ids", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L89", "weight": 1.0}, {"source": "bx_attachment_attachmentservice_count_invoice_attach_by_biz_ids", "target": "int", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L89", "weight": 1.0}, {"source": "bx_attachment_attachmentservice_count_invoice_attach_by_biz_ids", "target": "int", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L89", "weight": 1.0}, {"source": "bx_attachment_attachmentservice_create", "target": "bx_attachment_attachmentservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L30", "weight": 1.0}, {"source": "bx_attachment_attachmentservice_soft_delete", "target": "bx_attachment_attachmentservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L42", "weight": 1.0}, {"source": "bx_attachment_attachmentservice_bind_biz", "target": "bx_attachment_attachmentservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L66", "weight": 1.0}], "raw_calls": [{"caller_nid": "bx_attachment_attachmentservice_tenant_no", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L17"}, {"caller_nid": "bx_attachment_attachmentservice_tenant_no", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L17"}, {"caller_nid": "bx_attachment_attachmentservice_get_by_biz", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L49"}, {"caller_nid": "bx_attachment_attachmentservice_get_by_biz", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L55"}, {"caller_nid": "bx_attachment_attachmentservice_bind_biz", "callee": "update", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L70"}, {"caller_nid": "bx_attachment_attachmentservice_bind_biz", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L70"}, {"caller_nid": "bx_attachment_attachmentservice_bind_biz", "callee": "in_", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L72"}, {"caller_nid": "bx_attachment_attachmentservice_bind_biz", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L85"}, {"caller_nid": "bx_attachment_attachmentservice_count_invoice_attach_by_biz_ids", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L95"}, {"caller_nid": "bx_attachment_attachmentservice_count_invoice_attach_by_biz_ids", "callee": "isnot", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L97"}, {"caller_nid": "bx_attachment_attachmentservice_count_invoice_attach_by_biz_ids", "callee": "like", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L97"}, {"caller_nid": "bx_attachment_attachmentservice_count_invoice_attach_by_biz_ids", "callee": "sql_case", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L102"}, {"caller_nid": "bx_attachment_attachmentservice_count_invoice_attach_by_biz_ids", "callee": "sql_case", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L103"}, {"caller_nid": "bx_attachment_attachmentservice_count_invoice_attach_by_biz_ids", "callee": "group_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L105"}, {"caller_nid": "bx_attachment_attachmentservice_count_invoice_attach_by_biz_ids", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L105"}, {"caller_nid": "bx_attachment_attachmentservice_count_invoice_attach_by_biz_ids", "callee": "label", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L107"}, {"caller_nid": "bx_attachment_attachmentservice_count_invoice_attach_by_biz_ids", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L107"}, {"caller_nid": "bx_attachment_attachmentservice_count_invoice_attach_by_biz_ids", "callee": "label", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L108"}, {"caller_nid": "bx_attachment_attachmentservice_count_invoice_attach_by_biz_ids", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L108"}, {"caller_nid": "bx_attachment_attachmentservice_count_invoice_attach_by_biz_ids", "callee": "in_", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py", "source_location": "L112"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/035a12f3afe54a283145453608bc65c3043f3a0557afd8b3d382dcbc6d86aa48.json b/backend/graphify-out/cache/ast/035a12f3afe54a283145453608bc65c3043f3a0557afd8b3d382dcbc6d86aa48.json new file mode 100644 index 000000000..c91a9bd2e --- /dev/null +++ b/backend/graphify-out/cache/ast/035a12f3afe54a283145453608bc65c3043f3a0557afd8b3d382dcbc6d86aa48.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_advance_py", "label": "advance.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L1"}, {"id": "bx_advance_coerce_optional_id", "label": "_coerce_optional_id()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L9"}, {"id": "bx_advance_advanceapplycreate", "label": "AdvanceApplyCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L16"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "bx_advance_advanceapplycreate_validate_expense_item_id", "label": ".validate_expense_item_id()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L27"}, {"id": "bx_advance_advanceapplyupdate", "label": "AdvanceApplyUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L31"}, {"id": "bx_advance_advanceapplyupdate_validate_expense_item_id", "label": ".validate_expense_item_id()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L42"}, {"id": "bx_advance_advanceapplyout", "label": "AdvanceApplyOut", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L46"}, {"id": "bx_advance_advanceapprovalcreate", "label": "AdvanceApprovalCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L69"}, {"id": "bx_advance_advanceapprovalout", "label": "AdvanceApprovalOut", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L76"}, {"id": "bx_advance_advancemystatsout", "label": "AdvanceMyStatsOut", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L89"}, {"id": "bx_advance_advanceapproverpendingstatsout", "label": "AdvanceApproverPendingStatsOut", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L104"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_advance_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L1", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_advance_py", "target": "pydantic", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_advance_py", "target": "pydantic_alias_generators", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_advance_py", "target": "app_schemas_bx_common", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L6", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_advance_py", "target": "bx_advance_coerce_optional_id", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L9", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_advance_py", "target": "bx_advance_advanceapplycreate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L16", "weight": 1.0}, {"source": "bx_advance_advanceapplycreate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L16", "weight": 1.0}, {"source": "bx_advance_advanceapplycreate", "target": "bx_advance_advanceapplycreate_validate_expense_item_id", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L27", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_advance_py", "target": "bx_advance_advanceapplyupdate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L31", "weight": 1.0}, {"source": "bx_advance_advanceapplyupdate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L31", "weight": 1.0}, {"source": "bx_advance_advanceapplyupdate", "target": "bx_advance_advanceapplyupdate_validate_expense_item_id", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L42", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_advance_py", "target": "bx_advance_advanceapplyout", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L46", "weight": 1.0}, {"source": "bx_advance_advanceapplyout", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L46", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_advance_py", "target": "bx_advance_advanceapprovalcreate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L69", "weight": 1.0}, {"source": "bx_advance_advanceapprovalcreate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L69", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_advance_py", "target": "bx_advance_advanceapprovalout", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L76", "weight": 1.0}, {"source": "bx_advance_advanceapprovalout", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L76", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_advance_py", "target": "bx_advance_advancemystatsout", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L89", "weight": 1.0}, {"source": "bx_advance_advancemystatsout", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L89", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_advance_py", "target": "bx_advance_advanceapproverpendingstatsout", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L104", "weight": 1.0}, {"source": "bx_advance_advanceapproverpendingstatsout", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L104", "weight": 1.0}, {"source": "bx_advance_advanceapplycreate_validate_expense_item_id", "target": "bx_advance_coerce_optional_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L28", "weight": 1.0}, {"source": "bx_advance_advanceapplyupdate_validate_expense_item_id", "target": "bx_advance_coerce_optional_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L43", "weight": 1.0}], "raw_calls": [{"caller_nid": "bx_advance_coerce_optional_id", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L12"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/0448e5ccd69b876402d03bb69647207497aef22b24f8686784bea2266c636607.json b/backend/graphify-out/cache/ast/0448e5ccd69b876402d03bb69647207497aef22b24f8686784bea2266c636607.json new file mode 100644 index 000000000..a66e71911 --- /dev/null +++ b/backend/graphify-out/cache/ast/0448e5ccd69b876402d03bb69647207497aef22b24f8686784bea2266c636607.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "label": "advance.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L1"}, {"id": "bx_advance_tenant", "label": "_tenant()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L29"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L29"}, {"id": "bxusercontext", "label": "BxUserContext", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L29"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L29"}, {"id": "bx_advance_fill_offset_amounts", "label": "_fill_offset_amounts()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L33"}, {"id": "advanceapplyout", "label": "AdvanceApplyOut", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L33"}, {"id": "bx_advance_list_advances", "label": "list_advances()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L42"}, {"id": "int", "label": "int", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L42"}, {"id": "bx_advance_my_advances", "label": "my_advances()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L77"}, {"id": "bx_advance_my_advance_stats", "label": "my_advance_stats()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L114"}, {"id": "bx_advance_advance_status_counts", "label": "advance_status_counts()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L124"}, {"id": "bx_advance_pending_approval", "label": "pending_approval()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L133"}, {"id": "bx_advance_advance_pending_approval_stats", "label": "advance_pending_approval_stats()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L159"}, {"id": "bx_advance_approved_by_me", "label": "approved_by_me()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L169"}, {"id": "bx_advance_get_advance", "label": "get_advance()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L195"}, {"id": "bx_advance_get_approvals", "label": "get_approvals()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L211"}, {"id": "bx_advance_get_approval_history", "label": "get_approval_history()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L224"}, {"id": "bx_advance_create_advance", "label": "create_advance()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L237"}, {"id": "advanceapplycreate", "label": "AdvanceApplyCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L237"}, {"id": "bx_advance_update_advance", "label": "update_advance()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L270"}, {"id": "advanceapplyupdate", "label": "AdvanceApplyUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L270"}, {"id": "bx_advance_submit_advance", "label": "submit_advance()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L291"}, {"id": "bx_advance_approve_advance", "label": "approve_advance()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L305"}, {"id": "advanceapprovalcreate", "label": "AdvanceApprovalCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L305"}, {"id": "bx_advance_reject_advance", "label": "reject_advance()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L320"}, {"id": "bx_advance_delete_advance", "label": "delete_advance()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L335"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L1", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "fastapi", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "sqlalchemy", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L5", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "app_core_bx_auth", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L7", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "app_core_database", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L8", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "app_core_tenant_context", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L9", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "app_models_bx_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L10", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "app_schemas_bx_advance", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L11", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "app_schemas_bx_common", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L20", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "app_services_bx_advance", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L21", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "app_services_bx_expense_item", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L22", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "app_utils_bx_codegen", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L23", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "app_utils_bx_date_range", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L24", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "bx_advance_tenant", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L29", "weight": 1.0}, {"source": "bx_advance_tenant", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L29", "weight": 1.0}, {"source": "bx_advance_tenant", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L29", "weight": 1.0}, {"source": "bx_advance_tenant", "target": "str", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L29", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "bx_advance_fill_offset_amounts", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L33", "weight": 1.0}, {"source": "bx_advance_fill_offset_amounts", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L33", "weight": 1.0}, {"source": "bx_advance_fill_offset_amounts", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L33", "weight": 1.0}, {"source": "bx_advance_fill_offset_amounts", "target": "advanceapplyout", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L33", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "bx_advance_list_advances", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L42", "weight": 1.0}, {"source": "bx_advance_list_advances", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L42", "weight": 1.0}, {"source": "bx_advance_list_advances", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L42", "weight": 1.0}, {"source": "bx_advance_list_advances", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L42", "weight": 1.0}, {"source": "bx_advance_list_advances", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L42", "weight": 1.0}, {"source": "bx_advance_list_advances", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L42", "weight": 1.0}, {"source": "bx_advance_list_advances", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L42", "weight": 1.0}, {"source": "bx_advance_list_advances", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L42", "weight": 1.0}, {"source": "bx_advance_list_advances", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L42", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "bx_advance_my_advances", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L77", "weight": 1.0}, {"source": "bx_advance_my_advances", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L77", "weight": 1.0}, {"source": "bx_advance_my_advances", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L77", "weight": 1.0}, {"source": "bx_advance_my_advances", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L77", "weight": 1.0}, {"source": "bx_advance_my_advances", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L77", "weight": 1.0}, {"source": "bx_advance_my_advances", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L77", "weight": 1.0}, {"source": "bx_advance_my_advances", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L77", "weight": 1.0}, {"source": "bx_advance_my_advances", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L77", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "bx_advance_my_advance_stats", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L114", "weight": 1.0}, {"source": "bx_advance_my_advance_stats", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L114", "weight": 1.0}, {"source": "bx_advance_my_advance_stats", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L114", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "bx_advance_advance_status_counts", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L124", "weight": 1.0}, {"source": "bx_advance_advance_status_counts", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L124", "weight": 1.0}, {"source": "bx_advance_advance_status_counts", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L124", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "bx_advance_pending_approval", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L133", "weight": 1.0}, {"source": "bx_advance_pending_approval", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L133", "weight": 1.0}, {"source": "bx_advance_pending_approval", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L133", "weight": 1.0}, {"source": "bx_advance_pending_approval", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L133", "weight": 1.0}, {"source": "bx_advance_pending_approval", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L133", "weight": 1.0}, {"source": "bx_advance_pending_approval", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L133", "weight": 1.0}, {"source": "bx_advance_pending_approval", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L133", "weight": 1.0}, {"source": "bx_advance_pending_approval", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L133", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "bx_advance_advance_pending_approval_stats", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L159", "weight": 1.0}, {"source": "bx_advance_advance_pending_approval_stats", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L159", "weight": 1.0}, {"source": "bx_advance_advance_pending_approval_stats", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L159", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "bx_advance_approved_by_me", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L169", "weight": 1.0}, {"source": "bx_advance_approved_by_me", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L169", "weight": 1.0}, {"source": "bx_advance_approved_by_me", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L169", "weight": 1.0}, {"source": "bx_advance_approved_by_me", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L169", "weight": 1.0}, {"source": "bx_advance_approved_by_me", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L169", "weight": 1.0}, {"source": "bx_advance_approved_by_me", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L169", "weight": 1.0}, {"source": "bx_advance_approved_by_me", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L169", "weight": 1.0}, {"source": "bx_advance_approved_by_me", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L169", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "bx_advance_get_advance", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L195", "weight": 1.0}, {"source": "bx_advance_get_advance", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L195", "weight": 1.0}, {"source": "bx_advance_get_advance", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L195", "weight": 1.0}, {"source": "bx_advance_get_advance", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L195", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "bx_advance_get_approvals", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L211", "weight": 1.0}, {"source": "bx_advance_get_approvals", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L211", "weight": 1.0}, {"source": "bx_advance_get_approvals", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L211", "weight": 1.0}, {"source": "bx_advance_get_approvals", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L211", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "bx_advance_get_approval_history", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L224", "weight": 1.0}, {"source": "bx_advance_get_approval_history", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L224", "weight": 1.0}, {"source": "bx_advance_get_approval_history", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L224", "weight": 1.0}, {"source": "bx_advance_get_approval_history", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L224", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "bx_advance_create_advance", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L237", "weight": 1.0}, {"source": "bx_advance_create_advance", "target": "advanceapplycreate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L237", "weight": 1.0}, {"source": "bx_advance_create_advance", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L237", "weight": 1.0}, {"source": "bx_advance_create_advance", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L237", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "bx_advance_update_advance", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L270", "weight": 1.0}, {"source": "bx_advance_update_advance", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L270", "weight": 1.0}, {"source": "bx_advance_update_advance", "target": "advanceapplyupdate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L270", "weight": 1.0}, {"source": "bx_advance_update_advance", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L270", "weight": 1.0}, {"source": "bx_advance_update_advance", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L270", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "bx_advance_submit_advance", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L291", "weight": 1.0}, {"source": "bx_advance_submit_advance", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L291", "weight": 1.0}, {"source": "bx_advance_submit_advance", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L291", "weight": 1.0}, {"source": "bx_advance_submit_advance", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L291", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "bx_advance_approve_advance", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L305", "weight": 1.0}, {"source": "bx_advance_approve_advance", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L305", "weight": 1.0}, {"source": "bx_advance_approve_advance", "target": "advanceapprovalcreate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L305", "weight": 1.0}, {"source": "bx_advance_approve_advance", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L305", "weight": 1.0}, {"source": "bx_advance_approve_advance", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L305", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "bx_advance_reject_advance", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L320", "weight": 1.0}, {"source": "bx_advance_reject_advance", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L320", "weight": 1.0}, {"source": "bx_advance_reject_advance", "target": "advanceapprovalcreate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L320", "weight": 1.0}, {"source": "bx_advance_reject_advance", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L320", "weight": 1.0}, {"source": "bx_advance_reject_advance", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L320", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "bx_advance_delete_advance", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L335", "weight": 1.0}, {"source": "bx_advance_delete_advance", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L335", "weight": 1.0}, {"source": "bx_advance_delete_advance", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L335", "weight": 1.0}, {"source": "bx_advance_delete_advance", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L335", "weight": 1.0}, {"source": "bx_advance_list_advances", "target": "bx_advance_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L52", "weight": 1.0}, {"source": "bx_advance_list_advances", "target": "bx_advance_fill_offset_amounts", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L72", "weight": 1.0}, {"source": "bx_advance_my_advances", "target": "bx_advance_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L86", "weight": 1.0}, {"source": "bx_advance_my_advances", "target": "bx_advance_fill_offset_amounts", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L109", "weight": 1.0}, {"source": "bx_advance_my_advance_stats", "target": "bx_advance_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L118", "weight": 1.0}, {"source": "bx_advance_advance_status_counts", "target": "bx_advance_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L128", "weight": 1.0}, {"source": "bx_advance_pending_approval", "target": "bx_advance_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L142", "weight": 1.0}, {"source": "bx_advance_advance_pending_approval_stats", "target": "bx_advance_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L163", "weight": 1.0}, {"source": "bx_advance_approved_by_me", "target": "bx_advance_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L178", "weight": 1.0}, {"source": "bx_advance_get_advance", "target": "bx_advance_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L200", "weight": 1.0}, {"source": "bx_advance_get_approvals", "target": "bx_advance_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L216", "weight": 1.0}, {"source": "bx_advance_get_approval_history", "target": "bx_advance_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L229", "weight": 1.0}, {"source": "bx_advance_create_advance", "target": "bx_advance_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L242", "weight": 1.0}, {"source": "bx_advance_update_advance", "target": "bx_advance_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L276", "weight": 1.0}, {"source": "bx_advance_delete_advance", "target": "bx_advance_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L340", "weight": 1.0}], "raw_calls": [{"caller_nid": "bx_advance_tenant", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L30"}, {"caller_nid": "bx_advance_tenant", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L30"}, {"caller_nid": "bx_advance_fill_offset_amounts", "callee": "offset_amount_map", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L36"}, {"caller_nid": "bx_advance_fill_offset_amounts", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L38"}, {"caller_nid": "bx_advance_list_advances", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L55"}, {"caller_nid": "bx_advance_list_advances", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L57"}, {"caller_nid": "bx_advance_list_advances", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L58"}, {"caller_nid": "bx_advance_list_advances", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L59"}, {"caller_nid": "bx_advance_list_advances", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L60"}, {"caller_nid": "bx_advance_list_advances", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L64"}, {"caller_nid": "bx_advance_list_advances", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L64"}, {"caller_nid": "bx_advance_list_advances", "callee": "parse_create_time_day_bounds", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L65"}, {"caller_nid": "bx_advance_list_advances", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L68"}, {"caller_nid": "bx_advance_list_advances", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L69"}, {"caller_nid": "bx_advance_list_advances", "callee": "get_paged", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L70"}, {"caller_nid": "bx_advance_list_advances", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L71"}, {"caller_nid": "bx_advance_list_advances", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L73"}, {"caller_nid": "bx_advance_list_advances", "callee": "PagedData", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L73"}, {"caller_nid": "bx_advance_my_advances", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L88"}, {"caller_nid": "bx_advance_my_advances", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L94"}, {"caller_nid": "bx_advance_my_advances", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L96"}, {"caller_nid": "bx_advance_my_advances", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L97"}, {"caller_nid": "bx_advance_my_advances", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L98"}, {"caller_nid": "bx_advance_my_advances", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L99"}, {"caller_nid": "bx_advance_my_advances", "callee": "parse_create_time_day_bounds", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L102"}, {"caller_nid": "bx_advance_my_advances", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L105"}, {"caller_nid": "bx_advance_my_advances", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L106"}, {"caller_nid": "bx_advance_my_advances", "callee": "get_paged", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L107"}, {"caller_nid": "bx_advance_my_advances", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L108"}, {"caller_nid": "bx_advance_my_advances", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L110"}, {"caller_nid": "bx_advance_my_advances", "callee": "PagedData", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L110"}, {"caller_nid": "bx_advance_my_advance_stats", "callee": "my_apply_stats", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L119"}, {"caller_nid": "bx_advance_my_advance_stats", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L120"}, {"caller_nid": "bx_advance_my_advance_stats", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L120"}, {"caller_nid": "bx_advance_advance_status_counts", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L129"}, {"caller_nid": "bx_advance_advance_status_counts", "callee": "global_status_counts", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L129"}, {"caller_nid": "bx_advance_pending_approval", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L143"}, {"caller_nid": "bx_advance_pending_approval", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L154"}, {"caller_nid": "bx_advance_pending_approval", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L155"}, {"caller_nid": "bx_advance_pending_approval", "callee": "PagedData", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L155"}, {"caller_nid": "bx_advance_advance_pending_approval_stats", "callee": "pending_approval_stats", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L164"}, {"caller_nid": "bx_advance_advance_pending_approval_stats", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L165"}, {"caller_nid": "bx_advance_advance_pending_approval_stats", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L165"}, {"caller_nid": "bx_advance_approved_by_me", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L179"}, {"caller_nid": "bx_advance_approved_by_me", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L190"}, {"caller_nid": "bx_advance_approved_by_me", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L191"}, {"caller_nid": "bx_advance_approved_by_me", "callee": "PagedData", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L191"}, {"caller_nid": "bx_advance_get_advance", "callee": "get_by_id", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L201"}, {"caller_nid": "bx_advance_get_advance", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L203"}, {"caller_nid": "bx_advance_get_advance", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L204"}, {"caller_nid": "bx_advance_get_advance", "callee": "offset_amount_map", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L205"}, {"caller_nid": "bx_advance_get_advance", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L206"}, {"caller_nid": "bx_advance_get_advance", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L207"}, {"caller_nid": "bx_advance_get_approvals", "callee": "get_by_id", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L217"}, {"caller_nid": "bx_advance_get_approvals", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L218"}, {"caller_nid": "bx_advance_get_approvals", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L220"}, {"caller_nid": "bx_advance_get_approvals", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L220"}, {"caller_nid": "bx_advance_get_approval_history", "callee": "get_by_id", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L230"}, {"caller_nid": "bx_advance_get_approval_history", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L231"}, {"caller_nid": "bx_advance_get_approval_history", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L233"}, {"caller_nid": "bx_advance_get_approval_history", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L233"}, {"caller_nid": "bx_advance_create_advance", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L243"}, {"caller_nid": "bx_advance_create_advance", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L244"}, {"caller_nid": "bx_advance_create_advance", "callee": "get_by_id", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L246"}, {"caller_nid": "bx_advance_create_advance", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L247"}, {"caller_nid": "bx_advance_create_advance", "callee": "generate_apply_code", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L250"}, {"caller_nid": "bx_advance_create_advance", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L253"}, {"caller_nid": "bx_advance_create_advance", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L253"}, {"caller_nid": "bx_advance_create_advance", "callee": "create", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L263"}, {"caller_nid": "bx_advance_create_advance", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L264"}, {"caller_nid": "bx_advance_create_advance", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L265"}, {"caller_nid": "bx_advance_create_advance", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L266"}, {"caller_nid": "bx_advance_create_advance", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L266"}, {"caller_nid": "bx_advance_update_advance", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L277"}, {"caller_nid": "bx_advance_update_advance", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L278"}, {"caller_nid": "bx_advance_update_advance", "callee": "get_by_id", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L280"}, {"caller_nid": "bx_advance_update_advance", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L281"}, {"caller_nid": "bx_advance_update_advance", "callee": "update", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L282"}, {"caller_nid": "bx_advance_update_advance", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L284"}, {"caller_nid": "bx_advance_update_advance", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L285"}, {"caller_nid": "bx_advance_update_advance", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L286"}, {"caller_nid": "bx_advance_update_advance", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L287"}, {"caller_nid": "bx_advance_update_advance", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L287"}, {"caller_nid": "bx_advance_submit_advance", "callee": "submit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L296"}, {"caller_nid": "bx_advance_submit_advance", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L298"}, {"caller_nid": "bx_advance_submit_advance", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L299"}, {"caller_nid": "bx_advance_submit_advance", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L300"}, {"caller_nid": "bx_advance_submit_advance", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L301"}, {"caller_nid": "bx_advance_submit_advance", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L301"}, {"caller_nid": "bx_advance_approve_advance", "callee": "approve", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L311"}, {"caller_nid": "bx_advance_approve_advance", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L313"}, {"caller_nid": "bx_advance_approve_advance", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L314"}, {"caller_nid": "bx_advance_approve_advance", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L315"}, {"caller_nid": "bx_advance_approve_advance", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L316"}, {"caller_nid": "bx_advance_approve_advance", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L316"}, {"caller_nid": "bx_advance_reject_advance", "callee": "reject", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L326"}, {"caller_nid": "bx_advance_reject_advance", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L328"}, {"caller_nid": "bx_advance_reject_advance", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L329"}, {"caller_nid": "bx_advance_reject_advance", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L330"}, {"caller_nid": "bx_advance_reject_advance", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L331"}, {"caller_nid": "bx_advance_reject_advance", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L331"}, {"caller_nid": "bx_advance_delete_advance", "callee": "get_by_id", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L341"}, {"caller_nid": "bx_advance_delete_advance", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L342"}, {"caller_nid": "bx_advance_delete_advance", "callee": "soft_delete", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L343"}, {"caller_nid": "bx_advance_delete_advance", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L344"}, {"caller_nid": "bx_advance_delete_advance", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L345"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/07c3422f745afbff1c8162b3782fbb4b8de65084e7e9bbcf45abb9d433d65f98.json b/backend/graphify-out/cache/ast/07c3422f745afbff1c8162b3782fbb4b8de65084e7e9bbcf45abb9d433d65f98.json new file mode 100644 index 000000000..9eed2e5a0 --- /dev/null +++ b/backend/graphify-out/cache/ast/07c3422f745afbff1c8162b3782fbb4b8de65084e7e9bbcf45abb9d433d65f98.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_init_py", "label": "__init__.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/__init__.py", "source_location": "L1"}, {"id": "bx_init_rationale_1", "label": "\u62a5\u9500\uff08bx\uff09Pydantic \u6a21\u578b \u2014 \u54cd\u5e94\u534f\u8bae\u4e0e bx \u539f\u7cfb\u7edf\u4fdd\u6301\u4e00\u81f4", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/__init__.py", "source_location": "L1"}], "edges": [{"source": "bx_init_rationale_1", "target": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_init_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/__init__.py", "source_location": "L1", "weight": 1.0}], "raw_calls": []} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/0e08cd5582c49d14cac98dbaa4e719056d971f223c0cb9c694d1fa7d151b3e56.json b/backend/graphify-out/cache/ast/0e08cd5582c49d14cac98dbaa4e719056d971f223c0cb9c694d1fa7d151b3e56.json new file mode 100644 index 000000000..403b61389 --- /dev/null +++ b/backend/graphify-out/cache/ast/0e08cd5582c49d14cac98dbaa4e719056d971f223c0cb9c694d1fa7d151b3e56.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "label": "reimburse.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L1"}, {"id": "bx_reimburse_tenant", "label": "_tenant()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L29"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L29"}, {"id": "bxusercontext", "label": "BxUserContext", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L29"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L29"}, {"id": "bx_reimburse_build_details_data", "label": "_build_details_data()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L33"}, {"id": "bx_reimburse_get_generated_title", "label": "get_generated_title()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L54"}, {"id": "bx_reimburse_list_reimburses", "label": "list_reimburses()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L64"}, {"id": "int", "label": "int", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L64"}, {"id": "bx_reimburse_my_reimburses", "label": "my_reimburses()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L101"}, {"id": "bx_reimburse_my_reimburse_stats", "label": "my_reimburse_stats()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L132"}, {"id": "bx_reimburse_reimburse_status_counts", "label": "reimburse_status_counts()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L142"}, {"id": "bx_reimburse_pending_approval", "label": "pending_approval()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L151"}, {"id": "bx_reimburse_pending_approval_stats", "label": "pending_approval_stats()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L177"}, {"id": "bx_reimburse_approved_by_me", "label": "approved_by_me()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L187"}, {"id": "bx_reimburse_get_reimburse", "label": "get_reimburse()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L213"}, {"id": "bx_reimburse_get_approvals", "label": "get_approvals()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L227"}, {"id": "bx_reimburse_get_approval_history", "label": "get_approval_history()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L240"}, {"id": "bx_reimburse_create_reimburse", "label": "create_reimburse()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L253"}, {"id": "reimburseapplycreate", "label": "ReimburseApplyCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L253"}, {"id": "bx_reimburse_update_reimburse", "label": "update_reimburse()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L286"}, {"id": "reimburseapplyupdate", "label": "ReimburseApplyUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L286"}, {"id": "bx_reimburse_submit_reimburse", "label": "submit_reimburse()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L311"}, {"id": "bx_reimburse_approve_reimburse", "label": "approve_reimburse()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L326"}, {"id": "reimburseapprovalcreate", "label": "ReimburseApprovalCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L326"}, {"id": "bx_reimburse_reject_reimburse", "label": "reject_reimburse()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L342"}, {"id": "bx_reimburse_delete_reimburse", "label": "delete_reimburse()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L358"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L1", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "fastapi", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "sqlalchemy", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L5", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "app_core_bx_auth", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L7", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "app_core_database", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L8", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "app_core_tenant_context", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L9", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "app_models_bx_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L10", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "app_schemas_bx_common", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L11", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "app_schemas_bx_reimburse", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L12", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "app_services_bx_expense_item", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L21", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "app_services_bx_reimburse", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L22", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "app_utils_bx_codegen", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L23", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "app_utils_bx_date_range", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L24", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "bx_reimburse_tenant", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L29", "weight": 1.0}, {"source": "bx_reimburse_tenant", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L29", "weight": 1.0}, {"source": "bx_reimburse_tenant", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L29", "weight": 1.0}, {"source": "bx_reimburse_tenant", "target": "str", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L29", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "bx_reimburse_build_details_data", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L33", "weight": 1.0}, {"source": "bx_reimburse_build_details_data", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L33", "weight": 1.0}, {"source": "bx_reimburse_build_details_data", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L33", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "bx_reimburse_get_generated_title", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L54", "weight": 1.0}, {"source": "bx_reimburse_get_generated_title", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L54", "weight": 1.0}, {"source": "bx_reimburse_get_generated_title", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L54", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "bx_reimburse_list_reimburses", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L64", "weight": 1.0}, {"source": "bx_reimburse_list_reimburses", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L64", "weight": 1.0}, {"source": "bx_reimburse_list_reimburses", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L64", "weight": 1.0}, {"source": "bx_reimburse_list_reimburses", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L64", "weight": 1.0}, {"source": "bx_reimburse_list_reimburses", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L64", "weight": 1.0}, {"source": "bx_reimburse_list_reimburses", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L64", "weight": 1.0}, {"source": "bx_reimburse_list_reimburses", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L64", "weight": 1.0}, {"source": "bx_reimburse_list_reimburses", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L64", "weight": 1.0}, {"source": "bx_reimburse_list_reimburses", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L64", "weight": 1.0}, {"source": "bx_reimburse_list_reimburses", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L64", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "bx_reimburse_my_reimburses", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L101", "weight": 1.0}, {"source": "bx_reimburse_my_reimburses", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L101", "weight": 1.0}, {"source": "bx_reimburse_my_reimburses", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L101", "weight": 1.0}, {"source": "bx_reimburse_my_reimburses", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L101", "weight": 1.0}, {"source": "bx_reimburse_my_reimburses", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L101", "weight": 1.0}, {"source": "bx_reimburse_my_reimburses", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L101", "weight": 1.0}, {"source": "bx_reimburse_my_reimburses", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L101", "weight": 1.0}, {"source": "bx_reimburse_my_reimburses", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L101", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "bx_reimburse_my_reimburse_stats", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L132", "weight": 1.0}, {"source": "bx_reimburse_my_reimburse_stats", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L132", "weight": 1.0}, {"source": "bx_reimburse_my_reimburse_stats", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L132", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "bx_reimburse_reimburse_status_counts", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L142", "weight": 1.0}, {"source": "bx_reimburse_reimburse_status_counts", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L142", "weight": 1.0}, {"source": "bx_reimburse_reimburse_status_counts", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L142", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "bx_reimburse_pending_approval", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L151", "weight": 1.0}, {"source": "bx_reimburse_pending_approval", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L151", "weight": 1.0}, {"source": "bx_reimburse_pending_approval", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L151", "weight": 1.0}, {"source": "bx_reimburse_pending_approval", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L151", "weight": 1.0}, {"source": "bx_reimburse_pending_approval", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L151", "weight": 1.0}, {"source": "bx_reimburse_pending_approval", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L151", "weight": 1.0}, {"source": "bx_reimburse_pending_approval", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L151", "weight": 1.0}, {"source": "bx_reimburse_pending_approval", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L151", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "bx_reimburse_pending_approval_stats", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L177", "weight": 1.0}, {"source": "bx_reimburse_pending_approval_stats", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L177", "weight": 1.0}, {"source": "bx_reimburse_pending_approval_stats", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L177", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "bx_reimburse_approved_by_me", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L187", "weight": 1.0}, {"source": "bx_reimburse_approved_by_me", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L187", "weight": 1.0}, {"source": "bx_reimburse_approved_by_me", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L187", "weight": 1.0}, {"source": "bx_reimburse_approved_by_me", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L187", "weight": 1.0}, {"source": "bx_reimburse_approved_by_me", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L187", "weight": 1.0}, {"source": "bx_reimburse_approved_by_me", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L187", "weight": 1.0}, {"source": "bx_reimburse_approved_by_me", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L187", "weight": 1.0}, {"source": "bx_reimburse_approved_by_me", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L187", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "bx_reimburse_get_reimburse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L213", "weight": 1.0}, {"source": "bx_reimburse_get_reimburse", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L213", "weight": 1.0}, {"source": "bx_reimburse_get_reimburse", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L213", "weight": 1.0}, {"source": "bx_reimburse_get_reimburse", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L213", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "bx_reimburse_get_approvals", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L227", "weight": 1.0}, {"source": "bx_reimburse_get_approvals", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L227", "weight": 1.0}, {"source": "bx_reimburse_get_approvals", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L227", "weight": 1.0}, {"source": "bx_reimburse_get_approvals", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L227", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "bx_reimburse_get_approval_history", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L240", "weight": 1.0}, {"source": "bx_reimburse_get_approval_history", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L240", "weight": 1.0}, {"source": "bx_reimburse_get_approval_history", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L240", "weight": 1.0}, {"source": "bx_reimburse_get_approval_history", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L240", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "bx_reimburse_create_reimburse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L253", "weight": 1.0}, {"source": "bx_reimburse_create_reimburse", "target": "reimburseapplycreate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L253", "weight": 1.0}, {"source": "bx_reimburse_create_reimburse", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L253", "weight": 1.0}, {"source": "bx_reimburse_create_reimburse", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L253", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "bx_reimburse_update_reimburse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L286", "weight": 1.0}, {"source": "bx_reimburse_update_reimburse", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L286", "weight": 1.0}, {"source": "bx_reimburse_update_reimburse", "target": "reimburseapplyupdate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L286", "weight": 1.0}, {"source": "bx_reimburse_update_reimburse", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L286", "weight": 1.0}, {"source": "bx_reimburse_update_reimburse", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L286", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "bx_reimburse_submit_reimburse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L311", "weight": 1.0}, {"source": "bx_reimburse_submit_reimburse", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L311", "weight": 1.0}, {"source": "bx_reimburse_submit_reimburse", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L311", "weight": 1.0}, {"source": "bx_reimburse_submit_reimburse", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L311", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "bx_reimburse_approve_reimburse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L326", "weight": 1.0}, {"source": "bx_reimburse_approve_reimburse", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L326", "weight": 1.0}, {"source": "bx_reimburse_approve_reimburse", "target": "reimburseapprovalcreate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L326", "weight": 1.0}, {"source": "bx_reimburse_approve_reimburse", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L326", "weight": 1.0}, {"source": "bx_reimburse_approve_reimburse", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L326", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "bx_reimburse_reject_reimburse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L342", "weight": 1.0}, {"source": "bx_reimburse_reject_reimburse", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L342", "weight": 1.0}, {"source": "bx_reimburse_reject_reimburse", "target": "reimburseapprovalcreate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L342", "weight": 1.0}, {"source": "bx_reimburse_reject_reimburse", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L342", "weight": 1.0}, {"source": "bx_reimburse_reject_reimburse", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L342", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "bx_reimburse_delete_reimburse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L358", "weight": 1.0}, {"source": "bx_reimburse_delete_reimburse", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L358", "weight": 1.0}, {"source": "bx_reimburse_delete_reimburse", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L358", "weight": 1.0}, {"source": "bx_reimburse_delete_reimburse", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L358", "weight": 1.0}, {"source": "bx_reimburse_get_generated_title", "target": "bx_reimburse_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L58", "weight": 1.0}, {"source": "bx_reimburse_list_reimburses", "target": "bx_reimburse_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L75", "weight": 1.0}, {"source": "bx_reimburse_my_reimburses", "target": "bx_reimburse_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L110", "weight": 1.0}, {"source": "bx_reimburse_my_reimburse_stats", "target": "bx_reimburse_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L136", "weight": 1.0}, {"source": "bx_reimburse_reimburse_status_counts", "target": "bx_reimburse_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L146", "weight": 1.0}, {"source": "bx_reimburse_pending_approval", "target": "bx_reimburse_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L160", "weight": 1.0}, {"source": "bx_reimburse_pending_approval_stats", "target": "bx_reimburse_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L181", "weight": 1.0}, {"source": "bx_reimburse_approved_by_me", "target": "bx_reimburse_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L196", "weight": 1.0}, {"source": "bx_reimburse_get_reimburse", "target": "bx_reimburse_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L218", "weight": 1.0}, {"source": "bx_reimburse_get_approvals", "target": "bx_reimburse_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L232", "weight": 1.0}, {"source": "bx_reimburse_get_approval_history", "target": "bx_reimburse_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L245", "weight": 1.0}, {"source": "bx_reimburse_create_reimburse", "target": "bx_reimburse_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L258", "weight": 1.0}, {"source": "bx_reimburse_create_reimburse", "target": "bx_reimburse_build_details_data", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L259", "weight": 1.0}, {"source": "bx_reimburse_update_reimburse", "target": "bx_reimburse_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L292", "weight": 1.0}, {"source": "bx_reimburse_update_reimburse", "target": "bx_reimburse_build_details_data", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L295", "weight": 1.0}, {"source": "bx_reimburse_submit_reimburse", "target": "bx_reimburse_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L316", "weight": 1.0}, {"source": "bx_reimburse_approve_reimburse", "target": "bx_reimburse_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L332", "weight": 1.0}, {"source": "bx_reimburse_reject_reimburse", "target": "bx_reimburse_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L348", "weight": 1.0}, {"source": "bx_reimburse_delete_reimburse", "target": "bx_reimburse_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L363", "weight": 1.0}], "raw_calls": [{"caller_nid": "bx_reimburse_tenant", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L30"}, {"caller_nid": "bx_reimburse_tenant", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L30"}, {"caller_nid": "bx_reimburse_build_details_data", "callee": "get_by_id", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L36"}, {"caller_nid": "bx_reimburse_build_details_data", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L38"}, {"caller_nid": "bx_reimburse_build_details_data", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L42"}, {"caller_nid": "bx_reimburse_get_generated_title", "callee": "generate_title", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L59"}, {"caller_nid": "bx_reimburse_get_generated_title", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L60"}, {"caller_nid": "bx_reimburse_list_reimburses", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L78"}, {"caller_nid": "bx_reimburse_list_reimburses", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L80"}, {"caller_nid": "bx_reimburse_list_reimburses", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L81"}, {"caller_nid": "bx_reimburse_list_reimburses", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L82"}, {"caller_nid": "bx_reimburse_list_reimburses", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L83"}, {"caller_nid": "bx_reimburse_list_reimburses", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L87"}, {"caller_nid": "bx_reimburse_list_reimburses", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L87"}, {"caller_nid": "bx_reimburse_list_reimburses", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L89"}, {"caller_nid": "bx_reimburse_list_reimburses", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L89"}, {"caller_nid": "bx_reimburse_list_reimburses", "callee": "parse_create_time_day_bounds", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L90"}, {"caller_nid": "bx_reimburse_list_reimburses", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L93"}, {"caller_nid": "bx_reimburse_list_reimburses", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L94"}, {"caller_nid": "bx_reimburse_list_reimburses", "callee": "get_paged", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L95"}, {"caller_nid": "bx_reimburse_list_reimburses", "callee": "out_rows_with_attachment_counts", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L96"}, {"caller_nid": "bx_reimburse_list_reimburses", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L97"}, {"caller_nid": "bx_reimburse_list_reimburses", "callee": "PagedData", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L97"}, {"caller_nid": "bx_reimburse_my_reimburses", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L113"}, {"caller_nid": "bx_reimburse_my_reimburses", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L115"}, {"caller_nid": "bx_reimburse_my_reimburses", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L116"}, {"caller_nid": "bx_reimburse_my_reimburses", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L117"}, {"caller_nid": "bx_reimburse_my_reimburses", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L118"}, {"caller_nid": "bx_reimburse_my_reimburses", "callee": "parse_create_time_day_bounds", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L121"}, {"caller_nid": "bx_reimburse_my_reimburses", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L124"}, {"caller_nid": "bx_reimburse_my_reimburses", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L125"}, {"caller_nid": "bx_reimburse_my_reimburses", "callee": "get_paged", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L126"}, {"caller_nid": "bx_reimburse_my_reimburses", "callee": "out_rows_with_attachment_counts", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L127"}, {"caller_nid": "bx_reimburse_my_reimburses", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L128"}, {"caller_nid": "bx_reimburse_my_reimburses", "callee": "PagedData", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L128"}, {"caller_nid": "bx_reimburse_my_reimburse_stats", "callee": "my_apply_stats", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L137"}, {"caller_nid": "bx_reimburse_my_reimburse_stats", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L138"}, {"caller_nid": "bx_reimburse_my_reimburse_stats", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L138"}, {"caller_nid": "bx_reimburse_reimburse_status_counts", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L147"}, {"caller_nid": "bx_reimburse_reimburse_status_counts", "callee": "global_status_counts", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L147"}, {"caller_nid": "bx_reimburse_pending_approval", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L161"}, {"caller_nid": "bx_reimburse_pending_approval", "callee": "out_rows_with_attachment_counts", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L172"}, {"caller_nid": "bx_reimburse_pending_approval", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L173"}, {"caller_nid": "bx_reimburse_pending_approval", "callee": "PagedData", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L173"}, {"caller_nid": "bx_reimburse_pending_approval_stats", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L183"}, {"caller_nid": "bx_reimburse_pending_approval_stats", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L183"}, {"caller_nid": "bx_reimburse_approved_by_me", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L197"}, {"caller_nid": "bx_reimburse_approved_by_me", "callee": "out_rows_with_attachment_counts", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L208"}, {"caller_nid": "bx_reimburse_approved_by_me", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L209"}, {"caller_nid": "bx_reimburse_approved_by_me", "callee": "PagedData", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L209"}, {"caller_nid": "bx_reimburse_get_reimburse", "callee": "get_by_id", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L219"}, {"caller_nid": "bx_reimburse_get_reimburse", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L221"}, {"caller_nid": "bx_reimburse_get_reimburse", "callee": "build_apply_out_with_details", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L222"}, {"caller_nid": "bx_reimburse_get_reimburse", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L223"}, {"caller_nid": "bx_reimburse_get_approvals", "callee": "get_by_id", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L233"}, {"caller_nid": "bx_reimburse_get_approvals", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L234"}, {"caller_nid": "bx_reimburse_get_approvals", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L236"}, {"caller_nid": "bx_reimburse_get_approvals", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L236"}, {"caller_nid": "bx_reimburse_get_approval_history", "callee": "get_by_id", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L246"}, {"caller_nid": "bx_reimburse_get_approval_history", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L247"}, {"caller_nid": "bx_reimburse_get_approval_history", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L249"}, {"caller_nid": "bx_reimburse_get_approval_history", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L249"}, {"caller_nid": "bx_reimburse_create_reimburse", "callee": "generate_apply_code", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L261"}, {"caller_nid": "bx_reimburse_create_reimburse", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L268"}, {"caller_nid": "bx_reimburse_create_reimburse", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L268"}, {"caller_nid": "bx_reimburse_create_reimburse", "callee": "create_with_details", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L278"}, {"caller_nid": "bx_reimburse_create_reimburse", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L279"}, {"caller_nid": "bx_reimburse_create_reimburse", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L280"}, {"caller_nid": "bx_reimburse_create_reimburse", "callee": "build_apply_out_with_details", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L281"}, {"caller_nid": "bx_reimburse_create_reimburse", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L282"}, {"caller_nid": "bx_reimburse_update_reimburse", "callee": "update_with_details", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L299"}, {"caller_nid": "bx_reimburse_update_reimburse", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L303"}, {"caller_nid": "bx_reimburse_update_reimburse", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L304"}, {"caller_nid": "bx_reimburse_update_reimburse", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L305"}, {"caller_nid": "bx_reimburse_update_reimburse", "callee": "build_apply_out_with_details", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L306"}, {"caller_nid": "bx_reimburse_update_reimburse", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L307"}, {"caller_nid": "bx_reimburse_submit_reimburse", "callee": "submit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L317"}, {"caller_nid": "bx_reimburse_submit_reimburse", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L319"}, {"caller_nid": "bx_reimburse_submit_reimburse", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L320"}, {"caller_nid": "bx_reimburse_submit_reimburse", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L321"}, {"caller_nid": "bx_reimburse_submit_reimburse", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L322"}, {"caller_nid": "bx_reimburse_submit_reimburse", "callee": "out_one_with_attachment_counts", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L322"}, {"caller_nid": "bx_reimburse_approve_reimburse", "callee": "approve", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L333"}, {"caller_nid": "bx_reimburse_approve_reimburse", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L335"}, {"caller_nid": "bx_reimburse_approve_reimburse", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L336"}, {"caller_nid": "bx_reimburse_approve_reimburse", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L337"}, {"caller_nid": "bx_reimburse_approve_reimburse", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L338"}, {"caller_nid": "bx_reimburse_approve_reimburse", "callee": "out_one_with_attachment_counts", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L338"}, {"caller_nid": "bx_reimburse_reject_reimburse", "callee": "reject", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L349"}, {"caller_nid": "bx_reimburse_reject_reimburse", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L351"}, {"caller_nid": "bx_reimburse_reject_reimburse", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L352"}, {"caller_nid": "bx_reimburse_reject_reimburse", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L353"}, {"caller_nid": "bx_reimburse_reject_reimburse", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L354"}, {"caller_nid": "bx_reimburse_reject_reimburse", "callee": "out_one_with_attachment_counts", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L354"}, {"caller_nid": "bx_reimburse_delete_reimburse", "callee": "get_by_id", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L364"}, {"caller_nid": "bx_reimburse_delete_reimburse", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L365"}, {"caller_nid": "bx_reimburse_delete_reimburse", "callee": "soft_delete", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L366"}, {"caller_nid": "bx_reimburse_delete_reimburse", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L367"}, {"caller_nid": "bx_reimburse_delete_reimburse", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L368"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/10ac1660a2a6d6daa4c313f57667df78b082c742e49780cec4270b1333b3cb1f.json b/backend/graphify-out/cache/ast/10ac1660a2a6d6daa4c313f57667df78b082c742e49780cec4270b1333b3cb1f.json new file mode 100644 index 000000000..664258903 --- /dev/null +++ b/backend/graphify-out/cache/ast/10ac1660a2a6d6daa4c313f57667df78b082c742e49780cec4270b1333b3cb1f.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_workflow_py", "label": "workflow.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L1"}, {"id": "bx_workflow_workflowservice", "label": "WorkflowService", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L26"}, {"id": "bx_workflow_workflowservice_tenant_no", "label": "._tenant_no()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L28"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L28"}, {"id": "bxusercontext", "label": "BxUserContext", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L28"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L28"}, {"id": "bx_workflow_workflowservice_get_by_id", "label": ".get_by_id()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L32"}, {"id": "bxworkflowdef", "label": "BxWorkflowDef", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L32"}, {"id": "bx_workflow_workflowservice_get_paged", "label": ".get_paged()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L36"}, {"id": "int", "label": "int", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L36"}, {"id": "bx_workflow_workflowservice_create", "label": ".create()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L45"}, {"id": "bx_workflow_workflowservice_update", "label": ".update()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L62"}, {"id": "bx_workflow_workflowservice_soft_delete", "label": ".soft_delete()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L80"}, {"id": "bool", "label": "bool", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L80"}, {"id": "bx_workflow_workflowservice_get_by_biz_type", "label": ".get_by_biz_type()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L94"}, {"id": "bx_workflow_workflowservice_ensure_by_biz_type", "label": ".ensure_by_biz_type()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L106"}, {"id": "bx_workflow_workflowservice_save_nodes", "label": ".save_nodes()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L137"}, {"id": "bxworkflownode", "label": "BxWorkflowNode", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L137"}, {"id": "bx_workflow_rationale_112", "label": "\u6309\u4e1a\u52a1\u7c7b\u578b\u83b7\u53d6\u5de5\u4f5c\u6d41\uff1b\u5df2\u77e5\u7c7b\u578b\u4e0d\u5b58\u5728\u65f6\u81ea\u52a8\u521b\u5efa\u7a7a\u5b9a\u4e49\uff08\u65e0\u8282\u70b9\uff09\u3002", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L112"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_workflow_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_workflow_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L5", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_workflow_py", "target": "app_core_bx_auth", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L7", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_workflow_py", "target": "app_core_tenant_context", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L8", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_workflow_py", "target": "app_core_utils", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L9", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_workflow_py", "target": "app_models_bx_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L10", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_workflow_py", "target": "app_services_bx_base", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L11", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_workflow_py", "target": "bx_workflow_workflowservice", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L26", "weight": 1.0}, {"source": "bx_workflow_workflowservice", "target": "bx_workflow_workflowservice_tenant_no", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L28", "weight": 1.0}, {"source": "bx_workflow_workflowservice_tenant_no", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L28", "weight": 1.0}, {"source": "bx_workflow_workflowservice_tenant_no", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L28", "weight": 1.0}, {"source": "bx_workflow_workflowservice_tenant_no", "target": "str", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L28", "weight": 1.0}, {"source": "bx_workflow_workflowservice", "target": "bx_workflow_workflowservice_get_by_id", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L32", "weight": 1.0}, {"source": "bx_workflow_workflowservice_get_by_id", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L32", "weight": 1.0}, {"source": "bx_workflow_workflowservice_get_by_id", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L32", "weight": 1.0}, {"source": "bx_workflow_workflowservice_get_by_id", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L32", "weight": 1.0}, {"source": "bx_workflow_workflowservice_get_by_id", "target": "bxworkflowdef", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L32", "weight": 1.0}, {"source": "bx_workflow_workflowservice", "target": "bx_workflow_workflowservice_get_paged", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L36", "weight": 1.0}, {"source": "bx_workflow_workflowservice_get_paged", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L36", "weight": 1.0}, {"source": "bx_workflow_workflowservice_get_paged", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L36", "weight": 1.0}, {"source": "bx_workflow_workflowservice_get_paged", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L36", "weight": 1.0}, {"source": "bx_workflow_workflowservice_get_paged", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L36", "weight": 1.0}, {"source": "bx_workflow_workflowservice_get_paged", "target": "bxworkflowdef", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L36", "weight": 1.0}, {"source": "bx_workflow_workflowservice_get_paged", "target": "int", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L36", "weight": 1.0}, {"source": "bx_workflow_workflowservice", "target": "bx_workflow_workflowservice_create", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L45", "weight": 1.0}, {"source": "bx_workflow_workflowservice_create", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L45", "weight": 1.0}, {"source": "bx_workflow_workflowservice_create", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L45", "weight": 1.0}, {"source": "bx_workflow_workflowservice_create", "target": "bxworkflowdef", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L45", "weight": 1.0}, {"source": "bx_workflow_workflowservice", "target": "bx_workflow_workflowservice_update", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L62", "weight": 1.0}, {"source": "bx_workflow_workflowservice_update", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L62", "weight": 1.0}, {"source": "bx_workflow_workflowservice_update", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L62", "weight": 1.0}, {"source": "bx_workflow_workflowservice_update", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L62", "weight": 1.0}, {"source": "bx_workflow_workflowservice_update", "target": "bxworkflowdef", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L62", "weight": 1.0}, {"source": "bx_workflow_workflowservice", "target": "bx_workflow_workflowservice_soft_delete", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L80", "weight": 1.0}, {"source": "bx_workflow_workflowservice_soft_delete", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L80", "weight": 1.0}, {"source": "bx_workflow_workflowservice_soft_delete", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L80", "weight": 1.0}, {"source": "bx_workflow_workflowservice_soft_delete", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L80", "weight": 1.0}, {"source": "bx_workflow_workflowservice_soft_delete", "target": "bool", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L80", "weight": 1.0}, {"source": "bx_workflow_workflowservice", "target": "bx_workflow_workflowservice_get_by_biz_type", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L94", "weight": 1.0}, {"source": "bx_workflow_workflowservice_get_by_biz_type", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L94", "weight": 1.0}, {"source": "bx_workflow_workflowservice_get_by_biz_type", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L94", "weight": 1.0}, {"source": "bx_workflow_workflowservice_get_by_biz_type", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L94", "weight": 1.0}, {"source": "bx_workflow_workflowservice_get_by_biz_type", "target": "bxworkflowdef", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L94", "weight": 1.0}, {"source": "bx_workflow_workflowservice", "target": "bx_workflow_workflowservice_ensure_by_biz_type", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L106", "weight": 1.0}, {"source": "bx_workflow_workflowservice_ensure_by_biz_type", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L106", "weight": 1.0}, {"source": "bx_workflow_workflowservice_ensure_by_biz_type", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L106", "weight": 1.0}, {"source": "bx_workflow_workflowservice_ensure_by_biz_type", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L106", "weight": 1.0}, {"source": "bx_workflow_workflowservice_ensure_by_biz_type", "target": "bxworkflowdef", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L106", "weight": 1.0}, {"source": "bx_workflow_workflowservice", "target": "bx_workflow_workflowservice_save_nodes", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L137", "weight": 1.0}, {"source": "bx_workflow_workflowservice_save_nodes", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L137", "weight": 1.0}, {"source": "bx_workflow_workflowservice_save_nodes", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L137", "weight": 1.0}, {"source": "bx_workflow_workflowservice_save_nodes", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L137", "weight": 1.0}, {"source": "bx_workflow_workflowservice_save_nodes", "target": "bxworkflownode", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L137", "weight": 1.0}, {"source": "bx_workflow_workflowservice_create", "target": "bx_workflow_workflowservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L51", "weight": 1.0}, {"source": "bx_workflow_workflowservice_update", "target": "bx_workflow_workflowservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L69", "weight": 1.0}, {"source": "bx_workflow_workflowservice_soft_delete", "target": "bx_workflow_workflowservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L81", "weight": 1.0}, {"source": "bx_workflow_workflowservice_soft_delete", "target": "bx_workflow_workflowservice_update", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L86", "weight": 1.0}, {"source": "bx_workflow_workflowservice_ensure_by_biz_type", "target": "bx_workflow_workflowservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L113", "weight": 1.0}, {"source": "bx_workflow_workflowservice_ensure_by_biz_type", "target": "bx_workflow_workflowservice_get_by_biz_type", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L114", "weight": 1.0}, {"source": "bx_workflow_workflowservice_ensure_by_biz_type", "target": "bx_workflow_workflowservice_create", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L122", "weight": 1.0}, {"source": "bx_workflow_workflowservice_save_nodes", "target": "bx_workflow_workflowservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L144", "weight": 1.0}, {"source": "bx_workflow_workflowservice_save_nodes", "target": "bx_workflow_workflowservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L145", "weight": 1.0}, {"source": "bx_workflow_workflowservice_save_nodes", "target": "bxworkflownode", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L164", "weight": 1.0}, {"source": "bx_workflow_rationale_112", "target": "bx_workflow_workflowservice_ensure_by_biz_type", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L112", "weight": 1.0}], "raw_calls": [{"caller_nid": "bx_workflow_workflowservice_tenant_no", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L29"}, {"caller_nid": "bx_workflow_workflowservice_tenant_no", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L29"}, {"caller_nid": "bx_workflow_workflowservice_soft_delete", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L86"}, {"caller_nid": "bx_workflow_workflowservice_soft_delete", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L90"}, {"caller_nid": "bx_workflow_workflowservice_get_by_biz_type", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L96"}, {"caller_nid": "bx_workflow_workflowservice_get_by_biz_type", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L96"}, {"caller_nid": "bx_workflow_workflowservice_ensure_by_biz_type", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L118"}, {"caller_nid": "bx_workflow_workflowservice_ensure_by_biz_type", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L132"}, {"caller_nid": "bx_workflow_workflowservice_ensure_by_biz_type", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L133"}, {"caller_nid": "bx_workflow_workflowservice_save_nodes", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L147"}, {"caller_nid": "bx_workflow_workflowservice_save_nodes", "callee": "delete", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L149"}, {"caller_nid": "bx_workflow_workflowservice_save_nodes", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L149"}, {"caller_nid": "bx_workflow_workflowservice_save_nodes", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L157"}, {"caller_nid": "bx_workflow_workflowservice_save_nodes", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L162"}, {"caller_nid": "bx_workflow_workflowservice_save_nodes", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L163"}, {"caller_nid": "bx_workflow_workflowservice_save_nodes", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L165"}, {"caller_nid": "bx_workflow_workflowservice_save_nodes", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L166"}, {"caller_nid": "bx_workflow_workflowservice_save_nodes", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L167"}, {"caller_nid": "bx_workflow_workflowservice_save_nodes", "callee": "expire", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L168"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/1945115e6d9b96e3bcefc80950de87460edb2b89ee4f777c10715d5f4d2cf213.json b/backend/graphify-out/cache/ast/1945115e6d9b96e3bcefc80950de87460edb2b89ee4f777c10715d5f4d2cf213.json new file mode 100644 index 000000000..587b4661b --- /dev/null +++ b/backend/graphify-out/cache/ast/1945115e6d9b96e3bcefc80950de87460edb2b89ee4f777c10715d5f4d2cf213.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_advance_py", "label": "advance.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L1"}, {"id": "bx_advance_coerce_optional_id", "label": "_coerce_optional_id()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L9"}, {"id": "bx_advance_advanceapplycreate", "label": "AdvanceApplyCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L16"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "bx_advance_advanceapplycreate_validate_expense_item_id", "label": ".validate_expense_item_id()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L27"}, {"id": "bx_advance_advanceapplyupdate", "label": "AdvanceApplyUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L31"}, {"id": "bx_advance_advanceapplyupdate_validate_expense_item_id", "label": ".validate_expense_item_id()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L42"}, {"id": "bx_advance_advanceapplyout", "label": "AdvanceApplyOut", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L46"}, {"id": "bx_advance_advanceapprovalcreate", "label": "AdvanceApprovalCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L69"}, {"id": "bx_advance_advanceapprovalout", "label": "AdvanceApprovalOut", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L76"}, {"id": "bx_advance_advancemystatsout", "label": "AdvanceMyStatsOut", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L89"}, {"id": "bx_advance_advanceapproverpendingstatsout", "label": "AdvanceApproverPendingStatsOut", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L104"}, {"id": "bx_advance_advanceissueout", "label": "AdvanceIssueOut", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L111"}, {"id": "bx_advance_advanceissuerequest", "label": "AdvanceIssueRequest", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L129"}, {"id": "bx_advance_advanceoffsetrecordout", "label": "AdvanceOffsetRecordOut", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L136"}, {"id": "bx_advance_advancefinanceissuestatsout", "label": "AdvanceFinanceIssueStatsOut", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L149"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_advance_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L1", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_advance_py", "target": "pydantic", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_advance_py", "target": "pydantic_alias_generators", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_advance_py", "target": "app_schemas_bx_common", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L6", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_advance_py", "target": "bx_advance_coerce_optional_id", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L9", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_advance_py", "target": "bx_advance_advanceapplycreate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L16", "weight": 1.0}, {"source": "bx_advance_advanceapplycreate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L16", "weight": 1.0}, {"source": "bx_advance_advanceapplycreate", "target": "bx_advance_advanceapplycreate_validate_expense_item_id", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L27", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_advance_py", "target": "bx_advance_advanceapplyupdate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L31", "weight": 1.0}, {"source": "bx_advance_advanceapplyupdate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L31", "weight": 1.0}, {"source": "bx_advance_advanceapplyupdate", "target": "bx_advance_advanceapplyupdate_validate_expense_item_id", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L42", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_advance_py", "target": "bx_advance_advanceapplyout", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L46", "weight": 1.0}, {"source": "bx_advance_advanceapplyout", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L46", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_advance_py", "target": "bx_advance_advanceapprovalcreate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L69", "weight": 1.0}, {"source": "bx_advance_advanceapprovalcreate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L69", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_advance_py", "target": "bx_advance_advanceapprovalout", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L76", "weight": 1.0}, {"source": "bx_advance_advanceapprovalout", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L76", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_advance_py", "target": "bx_advance_advancemystatsout", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L89", "weight": 1.0}, {"source": "bx_advance_advancemystatsout", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L89", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_advance_py", "target": "bx_advance_advanceapproverpendingstatsout", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L104", "weight": 1.0}, {"source": "bx_advance_advanceapproverpendingstatsout", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L104", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_advance_py", "target": "bx_advance_advanceissueout", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L111", "weight": 1.0}, {"source": "bx_advance_advanceissueout", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L111", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_advance_py", "target": "bx_advance_advanceissuerequest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L129", "weight": 1.0}, {"source": "bx_advance_advanceissuerequest", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L129", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_advance_py", "target": "bx_advance_advanceoffsetrecordout", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L136", "weight": 1.0}, {"source": "bx_advance_advanceoffsetrecordout", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L136", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_advance_py", "target": "bx_advance_advancefinanceissuestatsout", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L149", "weight": 1.0}, {"source": "bx_advance_advancefinanceissuestatsout", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L149", "weight": 1.0}, {"source": "bx_advance_advanceapplycreate_validate_expense_item_id", "target": "bx_advance_coerce_optional_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L28", "weight": 1.0}, {"source": "bx_advance_advanceapplyupdate_validate_expense_item_id", "target": "bx_advance_coerce_optional_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L43", "weight": 1.0}], "raw_calls": [{"caller_nid": "bx_advance_coerce_optional_id", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L12"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/1b8a1b82dcabdcb1a2957ac9c53d2ae128869a55439c77208ec3b0342380eeed.json b/backend/graphify-out/cache/ast/1b8a1b82dcabdcb1a2957ac9c53d2ae128869a55439c77208ec3b0342380eeed.json new file mode 100644 index 000000000..9d9813e81 --- /dev/null +++ b/backend/graphify-out/cache/ast/1b8a1b82dcabdcb1a2957ac9c53d2ae128869a55439c77208ec3b0342380eeed.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_common_py", "label": "common.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/common.py", "source_location": "L1"}, {"id": "bx_common_dt_to_str", "label": "_dt_to_str()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/common.py", "source_location": "L11"}, {"id": "datetime", "label": "datetime", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/common.py", "source_location": "L11"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/common.py", "source_location": "L11"}, {"id": "bx_common_pagedquery", "label": "PagedQuery", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/common.py", "source_location": "L21"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "bx_common_apiresponse", "label": "ApiResponse", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/common.py", "source_location": "L28"}, {"id": "bx_common_pageddata", "label": "PagedData", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/common.py", "source_location": "L34"}, {"id": "bx_common_pagedresponse", "label": "PagedResponse", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/common.py", "source_location": "L43"}, {"id": "bx_common_rationale_1", "label": "bx \u539f\u7cfb\u7edf API \u54cd\u5e94\u5305\u88c5\uff08code=0 / msg / data.rows\uff09\uff0c\u4e0e\u95e8\u6237 success_response \u5206\u79bb\u3002", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/common.py", "source_location": "L1"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_common_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/common.py", "source_location": "L2", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_common_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/common.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_common_py", "target": "pydantic", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/common.py", "source_location": "L5", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_common_py", "target": "pydantic_alias_generators", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/common.py", "source_location": "L6", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_common_py", "target": "bx_common_dt_to_str", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/common.py", "source_location": "L11", "weight": 1.0}, {"source": "bx_common_dt_to_str", "target": "datetime", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/common.py", "source_location": "L11", "weight": 1.0}, {"source": "bx_common_dt_to_str", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/common.py", "source_location": "L11", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_common_py", "target": "bx_common_pagedquery", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/common.py", "source_location": "L21", "weight": 1.0}, {"source": "bx_common_pagedquery", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/common.py", "source_location": "L21", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_common_py", "target": "bx_common_apiresponse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/common.py", "source_location": "L28", "weight": 1.0}, {"source": "bx_common_apiresponse", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/common.py", "source_location": "L28", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_common_py", "target": "bx_common_pageddata", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/common.py", "source_location": "L34", "weight": 1.0}, {"source": "bx_common_pageddata", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/common.py", "source_location": "L34", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_common_py", "target": "bx_common_pagedresponse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/common.py", "source_location": "L43", "weight": 1.0}, {"source": "bx_common_pagedresponse", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/common.py", "source_location": "L43", "weight": 1.0}, {"source": "bx_common_rationale_1", "target": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_common_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/common.py", "source_location": "L1", "weight": 1.0}], "raw_calls": [{"caller_nid": "bx_common_dt_to_str", "callee": "strftime", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/common.py", "source_location": "L14"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/1f1628e708c7779fa17dcb70b985815c363eb97fae2df1c82fdd685410690266.json b/backend/graphify-out/cache/ast/1f1628e708c7779fa17dcb70b985815c363eb97fae2df1c82fdd685410690266.json new file mode 100644 index 000000000..74f601d17 --- /dev/null +++ b/backend/graphify-out/cache/ast/1f1628e708c7779fa17dcb70b985815c363eb97fae2df1c82fdd685410690266.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_advance_py", "label": "advance.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L1"}, {"id": "bx_advance_advanceservice", "label": "AdvanceService", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L25"}, {"id": "bx_advance_advanceservice_tenant_no", "label": "._tenant_no()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L27"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L27"}, {"id": "bxusercontext", "label": "BxUserContext", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L27"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L27"}, {"id": "bx_advance_advanceservice_get_by_id", "label": ".get_by_id()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L31"}, {"id": "bxadvanceapply", "label": "BxAdvanceApply", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L31"}, {"id": "bx_advance_advanceservice_get_paged", "label": ".get_paged()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L35"}, {"id": "int", "label": "int", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L35"}, {"id": "any", "label": "Any", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L35"}, {"id": "bx_advance_advanceservice_create", "label": ".create()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L45"}, {"id": "bx_advance_advanceservice_update", "label": ".update()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L62"}, {"id": "bx_advance_advanceservice_soft_delete", "label": ".soft_delete()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L80"}, {"id": "bool", "label": "bool", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L80"}, {"id": "bx_advance_advanceservice_pending_approval", "label": ".pending_approval()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L87"}, {"id": "bx_advance_advanceservice_approved_by_me", "label": ".approved_by_me()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L143"}, {"id": "bx_advance_advanceservice_workflow_nodes", "label": "._workflow_nodes()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L191"}, {"id": "bxworkflownode", "label": "BxWorkflowNode", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L191"}, {"id": "bx_advance_advanceservice_submit", "label": ".submit()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L204"}, {"id": "bx_advance_advanceservice_approve", "label": ".approve()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L221"}, {"id": "bx_advance_advanceservice_reject", "label": ".reject()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L266"}, {"id": "bx_advance_advanceservice_approval_record_dict", "label": "._approval_record_dict()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L303"}, {"id": "bxadvanceapproval", "label": "BxAdvanceApproval", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L303"}, {"id": "bx_advance_advanceservice_latest_approval_per_node", "label": "._latest_approval_per_node()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L316"}, {"id": "bx_advance_advanceservice_query_approvals", "label": "._query_approvals()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L333"}, {"id": "bx_advance_advanceservice_get_approvals", "label": ".get_approvals()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L345"}, {"id": "bx_advance_advanceservice_get_approval_history", "label": ".get_approval_history()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L379"}, {"id": "bx_advance_advanceservice_global_status_counts", "label": ".global_status_counts()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L396"}, {"id": "bx_advance_advanceservice_my_apply_stats", "label": ".my_apply_stats()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L406"}, {"id": "bx_advance_advanceservice_pending_approval_stats", "label": ".pending_approval_stats()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L489"}, {"id": "bx_advance_advanceservice_offset_amount_map", "label": ".offset_amount_map()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L520"}, {"id": "float", "label": "float", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L520"}, {"id": "bx_advance_advanceservice_issue", "label": ".issue()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L539"}, {"id": "bx_advance_advanceservice_finance_issue_stats", "label": ".finance_issue_stats()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L564"}, {"id": "bx_advance_rationale_319", "label": "\u540c\u4e00\u8282\u70b9\u591a\u6b21\u5ba1\u6279\u65f6\uff0c\u53d6 approval_time \u6700\u65b0\u7684\u4e00\u6761\u4f5c\u4e3a\u5f53\u524d\u8282\u70b9\u72b6\u6001\u3002", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L319"}, {"id": "bx_advance_rationale_380", "label": "\u8fd4\u56de\u5168\u90e8\u5ba1\u6279\u52a8\u4f5c\uff0c\u6309\u65f6\u95f4\u6b63\u5e8f\u6392\u5217\uff0c\u7528\u4e8e\u5c55\u793a\u5b8c\u6574\u5ba1\u6279\u5386\u53f2\u3002", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L380"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_advance_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_advance_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_advance_py", "target": "sqlalchemy", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L6", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_advance_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L7", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_advance_py", "target": "app_core_bx_auth", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L9", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_advance_py", "target": "app_core_tenant_context", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L10", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_advance_py", "target": "app_core_utils", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L11", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_advance_py", "target": "app_models_bx_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L12", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_advance_py", "target": "app_services_bx_approval_cycle", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L19", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_advance_py", "target": "app_services_bx_base", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L20", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_advance_py", "target": "app_utils_bx_codegen", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L21", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_advance_py", "target": "app_utils_bx_date_range", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L22", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_advance_py", "target": "bx_advance_advanceservice", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L25", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_tenant_no", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L27", "weight": 1.0}, {"source": "bx_advance_advanceservice_tenant_no", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L27", "weight": 1.0}, {"source": "bx_advance_advanceservice_tenant_no", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L27", "weight": 1.0}, {"source": "bx_advance_advanceservice_tenant_no", "target": "str", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L27", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_get_by_id", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L31", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_by_id", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L31", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_by_id", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L31", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_by_id", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L31", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_by_id", "target": "bxadvanceapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L31", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_get_paged", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L35", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_paged", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L35", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_paged", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L35", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_paged", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L35", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_paged", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L35", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_paged", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L35", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_paged", "target": "bxadvanceapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L35", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_paged", "target": "int", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L35", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_create", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L45", "weight": 1.0}, {"source": "bx_advance_advanceservice_create", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L45", "weight": 1.0}, {"source": "bx_advance_advanceservice_create", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L45", "weight": 1.0}, {"source": "bx_advance_advanceservice_create", "target": "bxadvanceapply", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L45", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_update", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L62", "weight": 1.0}, {"source": "bx_advance_advanceservice_update", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L62", "weight": 1.0}, {"source": "bx_advance_advanceservice_update", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L62", "weight": 1.0}, {"source": "bx_advance_advanceservice_update", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L62", "weight": 1.0}, {"source": "bx_advance_advanceservice_update", "target": "bxadvanceapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L62", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_soft_delete", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L80", "weight": 1.0}, {"source": "bx_advance_advanceservice_soft_delete", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L80", "weight": 1.0}, {"source": "bx_advance_advanceservice_soft_delete", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L80", "weight": 1.0}, {"source": "bx_advance_advanceservice_soft_delete", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L80", "weight": 1.0}, {"source": "bx_advance_advanceservice_soft_delete", "target": "bool", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L80", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_pending_approval", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L87", "weight": 1.0}, {"source": "bx_advance_advanceservice_pending_approval", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L87", "weight": 1.0}, {"source": "bx_advance_advanceservice_pending_approval", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L87", "weight": 1.0}, {"source": "bx_advance_advanceservice_pending_approval", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L87", "weight": 1.0}, {"source": "bx_advance_advanceservice_pending_approval", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L87", "weight": 1.0}, {"source": "bx_advance_advanceservice_pending_approval", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L87", "weight": 1.0}, {"source": "bx_advance_advanceservice_pending_approval", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L87", "weight": 1.0}, {"source": "bx_advance_advanceservice_pending_approval", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L87", "weight": 1.0}, {"source": "bx_advance_advanceservice_pending_approval", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L87", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_approved_by_me", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L143", "weight": 1.0}, {"source": "bx_advance_advanceservice_approved_by_me", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L143", "weight": 1.0}, {"source": "bx_advance_advanceservice_approved_by_me", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L143", "weight": 1.0}, {"source": "bx_advance_advanceservice_approved_by_me", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L143", "weight": 1.0}, {"source": "bx_advance_advanceservice_approved_by_me", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L143", "weight": 1.0}, {"source": "bx_advance_advanceservice_approved_by_me", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L143", "weight": 1.0}, {"source": "bx_advance_advanceservice_approved_by_me", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L143", "weight": 1.0}, {"source": "bx_advance_advanceservice_approved_by_me", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L143", "weight": 1.0}, {"source": "bx_advance_advanceservice_approved_by_me", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L143", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_workflow_nodes", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L191", "weight": 1.0}, {"source": "bx_advance_advanceservice_workflow_nodes", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L191", "weight": 1.0}, {"source": "bx_advance_advanceservice_workflow_nodes", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L191", "weight": 1.0}, {"source": "bx_advance_advanceservice_workflow_nodes", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L191", "weight": 1.0}, {"source": "bx_advance_advanceservice_workflow_nodes", "target": "bxworkflownode", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L191", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_submit", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L204", "weight": 1.0}, {"source": "bx_advance_advanceservice_submit", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L204", "weight": 1.0}, {"source": "bx_advance_advanceservice_submit", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L204", "weight": 1.0}, {"source": "bx_advance_advanceservice_submit", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L204", "weight": 1.0}, {"source": "bx_advance_advanceservice_submit", "target": "bxadvanceapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L204", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_approve", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L221", "weight": 1.0}, {"source": "bx_advance_advanceservice_approve", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L221", "weight": 1.0}, {"source": "bx_advance_advanceservice_approve", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L221", "weight": 1.0}, {"source": "bx_advance_advanceservice_approve", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L221", "weight": 1.0}, {"source": "bx_advance_advanceservice_approve", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L221", "weight": 1.0}, {"source": "bx_advance_advanceservice_approve", "target": "bxadvanceapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L221", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_reject", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L266", "weight": 1.0}, {"source": "bx_advance_advanceservice_reject", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L266", "weight": 1.0}, {"source": "bx_advance_advanceservice_reject", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L266", "weight": 1.0}, {"source": "bx_advance_advanceservice_reject", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L266", "weight": 1.0}, {"source": "bx_advance_advanceservice_reject", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L266", "weight": 1.0}, {"source": "bx_advance_advanceservice_reject", "target": "bxadvanceapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L266", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_approval_record_dict", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L303", "weight": 1.0}, {"source": "bx_advance_advanceservice_approval_record_dict", "target": "bxadvanceapproval", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L303", "weight": 1.0}, {"source": "bx_advance_advanceservice_approval_record_dict", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L303", "weight": 1.0}, {"source": "bx_advance_advanceservice_approval_record_dict", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L303", "weight": 1.0}, {"source": "bx_advance_advanceservice_approval_record_dict", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L303", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_latest_approval_per_node", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L316", "weight": 1.0}, {"source": "bx_advance_advanceservice_latest_approval_per_node", "target": "bxadvanceapproval", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L316", "weight": 1.0}, {"source": "bx_advance_advanceservice_latest_approval_per_node", "target": "int", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L316", "weight": 1.0}, {"source": "bx_advance_advanceservice_latest_approval_per_node", "target": "bxadvanceapproval", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L316", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_query_approvals", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L333", "weight": 1.0}, {"source": "bx_advance_advanceservice_query_approvals", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L333", "weight": 1.0}, {"source": "bx_advance_advanceservice_query_approvals", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L333", "weight": 1.0}, {"source": "bx_advance_advanceservice_query_approvals", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L333", "weight": 1.0}, {"source": "bx_advance_advanceservice_query_approvals", "target": "bxadvanceapproval", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L333", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_get_approvals", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L345", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_approvals", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L345", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_approvals", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L345", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_approvals", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L345", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_approvals", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L345", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_approvals", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L345", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_get_approval_history", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L379", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_approval_history", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L379", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_approval_history", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L379", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_approval_history", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L379", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_approval_history", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L379", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_approval_history", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L379", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_global_status_counts", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L396", "weight": 1.0}, {"source": "bx_advance_advanceservice_global_status_counts", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L396", "weight": 1.0}, {"source": "bx_advance_advanceservice_global_status_counts", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L396", "weight": 1.0}, {"source": "bx_advance_advanceservice_global_status_counts", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L396", "weight": 1.0}, {"source": "bx_advance_advanceservice_global_status_counts", "target": "int", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L396", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_my_apply_stats", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L406", "weight": 1.0}, {"source": "bx_advance_advanceservice_my_apply_stats", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L406", "weight": 1.0}, {"source": "bx_advance_advanceservice_my_apply_stats", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L406", "weight": 1.0}, {"source": "bx_advance_advanceservice_my_apply_stats", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L406", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_pending_approval_stats", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L489", "weight": 1.0}, {"source": "bx_advance_advanceservice_pending_approval_stats", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L489", "weight": 1.0}, {"source": "bx_advance_advanceservice_pending_approval_stats", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L489", "weight": 1.0}, {"source": "bx_advance_advanceservice_pending_approval_stats", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L489", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_offset_amount_map", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L520", "weight": 1.0}, {"source": "bx_advance_advanceservice_offset_amount_map", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L520", "weight": 1.0}, {"source": "bx_advance_advanceservice_offset_amount_map", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L520", "weight": 1.0}, {"source": "bx_advance_advanceservice_offset_amount_map", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L520", "weight": 1.0}, {"source": "bx_advance_advanceservice_offset_amount_map", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L520", "weight": 1.0}, {"source": "bx_advance_advanceservice_offset_amount_map", "target": "float", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L520", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_issue", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L539", "weight": 1.0}, {"source": "bx_advance_advanceservice_issue", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L539", "weight": 1.0}, {"source": "bx_advance_advanceservice_issue", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L539", "weight": 1.0}, {"source": "bx_advance_advanceservice_issue", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L539", "weight": 1.0}, {"source": "bx_advance_advanceservice_issue", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L539", "weight": 1.0}, {"source": "bx_advance_advanceservice_issue", "target": "float", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L539", "weight": 1.0}, {"source": "bx_advance_advanceservice_issue", "target": "bxadvanceapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L539", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_finance_issue_stats", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L564", "weight": 1.0}, {"source": "bx_advance_advanceservice_finance_issue_stats", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L564", "weight": 1.0}, {"source": "bx_advance_advanceservice_finance_issue_stats", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L564", "weight": 1.0}, {"source": "bx_advance_advanceservice_create", "target": "bx_advance_advanceservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L51", "weight": 1.0}, {"source": "bx_advance_advanceservice_update", "target": "bx_advance_advanceservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L69", "weight": 1.0}, {"source": "bx_advance_advanceservice_soft_delete", "target": "bx_advance_advanceservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L81", "weight": 1.0}, {"source": "bx_advance_advanceservice_submit", "target": "bx_advance_advanceservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L205", "weight": 1.0}, {"source": "bx_advance_advanceservice_submit", "target": "bx_advance_advanceservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L206", "weight": 1.0}, {"source": "bx_advance_advanceservice_submit", "target": "bx_advance_advanceservice_workflow_nodes", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L214", "weight": 1.0}, {"source": "bx_advance_advanceservice_approve", "target": "bx_advance_advanceservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L224", "weight": 1.0}, {"source": "bx_advance_advanceservice_approve", "target": "bx_advance_advanceservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L225", "weight": 1.0}, {"source": "bx_advance_advanceservice_approve", "target": "bx_advance_advanceservice_workflow_nodes", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L228", "weight": 1.0}, {"source": "bx_advance_advanceservice_approve", "target": "bxadvanceapproval", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L241", "weight": 1.0}, {"source": "bx_advance_advanceservice_reject", "target": "bx_advance_advanceservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L269", "weight": 1.0}, {"source": "bx_advance_advanceservice_reject", "target": "bx_advance_advanceservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L270", "weight": 1.0}, {"source": "bx_advance_advanceservice_reject", "target": "bx_advance_advanceservice_workflow_nodes", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L273", "weight": 1.0}, {"source": "bx_advance_advanceservice_reject", "target": "bxadvanceapproval", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L281", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_approvals", "target": "bx_advance_advanceservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L346", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_approvals", "target": "bx_advance_advanceservice_workflow_nodes", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L352", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_approvals", "target": "bx_advance_advanceservice_query_approvals", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L355", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_approvals", "target": "bx_advance_advanceservice_latest_approval_per_node", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L357", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_approvals", "target": "bx_advance_advanceservice_approval_record_dict", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L362", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_approval_history", "target": "bx_advance_advanceservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L381", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_approval_history", "target": "bx_advance_advanceservice_approval_record_dict", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L393", "weight": 1.0}, {"source": "bx_advance_advanceservice_issue", "target": "bx_advance_advanceservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L546", "weight": 1.0}, {"source": "bx_advance_advanceservice_issue", "target": "bx_advance_advanceservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L547", "weight": 1.0}, {"source": "bx_advance_rationale_319", "target": "bx_advance_advanceservice_latest_approval_per_node", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L319", "weight": 1.0}, {"source": "bx_advance_rationale_380", "target": "bx_advance_advanceservice_get_approval_history", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L380", "weight": 1.0}], "raw_calls": [{"caller_nid": "bx_advance_advanceservice_tenant_no", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L28"}, {"caller_nid": "bx_advance_advanceservice_tenant_no", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L28"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "join", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L98"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L98"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "and_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L101"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L117"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L118"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L119"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "parse_create_time_day_bounds", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L124"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "subquery", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L130"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L131"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L131"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L131"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L131"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "limit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L133"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "offset", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L133"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L133"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "join", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L133"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L133"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L135"}, {"caller_nid": "bx_advance_advanceservice_approved_by_me", "callee": "subquery", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L154"}, {"caller_nid": "bx_advance_advanceservice_approved_by_me", "callee": "distinct", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L154"}, {"caller_nid": "bx_advance_advanceservice_approved_by_me", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L154"}, {"caller_nid": "bx_advance_advanceservice_approved_by_me", "callee": "join", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L164"}, {"caller_nid": "bx_advance_advanceservice_approved_by_me", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L164"}, {"caller_nid": "bx_advance_advanceservice_approved_by_me", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L170"}, {"caller_nid": "bx_advance_advanceservice_approved_by_me", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L171"}, {"caller_nid": "bx_advance_advanceservice_approved_by_me", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L172"}, {"caller_nid": "bx_advance_advanceservice_approved_by_me", "callee": "parse_create_time_day_bounds", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L177"}, {"caller_nid": "bx_advance_advanceservice_approved_by_me", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L181"}, {"caller_nid": "bx_advance_advanceservice_approved_by_me", "callee": "limit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L183"}, {"caller_nid": "bx_advance_advanceservice_approved_by_me", "callee": "offset", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L183"}, {"caller_nid": "bx_advance_advanceservice_approved_by_me", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L183"}, {"caller_nid": "bx_advance_advanceservice_approved_by_me", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L183"}, {"caller_nid": "bx_advance_advanceservice_workflow_nodes", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L193"}, {"caller_nid": "bx_advance_advanceservice_workflow_nodes", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L193"}, {"caller_nid": "bx_advance_advanceservice_submit", "callee": "generate_apply_code", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L211"}, {"caller_nid": "bx_advance_advanceservice_submit", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L217"}, {"caller_nid": "bx_advance_advanceservice_approve", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L242"}, {"caller_nid": "bx_advance_advanceservice_approve", "callee": "now", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L250"}, {"caller_nid": "bx_advance_advanceservice_approve", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L255"}, {"caller_nid": "bx_advance_advanceservice_approve", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L262"}, {"caller_nid": "bx_advance_advanceservice_reject", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L282"}, {"caller_nid": "bx_advance_advanceservice_reject", "callee": "now", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L290"}, {"caller_nid": "bx_advance_advanceservice_reject", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L295"}, {"caller_nid": "bx_advance_advanceservice_reject", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L299"}, {"caller_nid": "bx_advance_advanceservice_latest_approval_per_node", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L322"}, {"caller_nid": "bx_advance_advanceservice_query_approvals", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L335"}, {"caller_nid": "bx_advance_advanceservice_get_approvals", "callee": "filter_current_cycle_approvals", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L356"}, {"caller_nid": "bx_advance_advanceservice_get_approvals", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L360"}, {"caller_nid": "bx_advance_advanceservice_get_approvals", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L362"}, {"caller_nid": "bx_advance_advanceservice_get_approvals", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L364"}, {"caller_nid": "bx_advance_advanceservice_get_approval_history", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L384"}, {"caller_nid": "bx_advance_advanceservice_get_approval_history", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L384"}, {"caller_nid": "bx_advance_advanceservice_get_approval_history", "callee": "asc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L390"}, {"caller_nid": "bx_advance_advanceservice_get_approval_history", "callee": "asc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L390"}, {"caller_nid": "bx_advance_advanceservice_global_status_counts", "callee": "group_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L398"}, {"caller_nid": "bx_advance_advanceservice_global_status_counts", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L398"}, {"caller_nid": "bx_advance_advanceservice_global_status_counts", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L398"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "and_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L407"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L412"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L412"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L412"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L412"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L414"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L414"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L414"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L414"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L421"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L421"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L421"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L421"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L428"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L428"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L428"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L428"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L436"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L436"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L436"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L436"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L443"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L443"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L443"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "current_month_bounds", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L448"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L450"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L450"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L450"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L456"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L456"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L456"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L456"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L463"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "join", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L463"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L463"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L463"}, {"caller_nid": "bx_advance_advanceservice_pending_approval_stats", "callee": "subquery", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L490"}, {"caller_nid": "bx_advance_advanceservice_pending_approval_stats", "callee": "join", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L491"}, {"caller_nid": "bx_advance_advanceservice_pending_approval_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L491"}, {"caller_nid": "bx_advance_advanceservice_pending_approval_stats", "callee": "and_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L494"}, {"caller_nid": "bx_advance_advanceservice_pending_approval_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L508"}, {"caller_nid": "bx_advance_advanceservice_pending_approval_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L508"}, {"caller_nid": "bx_advance_advanceservice_pending_approval_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L508"}, {"caller_nid": "bx_advance_advanceservice_pending_approval_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L508"}, {"caller_nid": "bx_advance_advanceservice_pending_approval_stats", "callee": "current_month_bounds", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L509"}, {"caller_nid": "bx_advance_advanceservice_pending_approval_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L511"}, {"caller_nid": "bx_advance_advanceservice_pending_approval_stats", "callee": "join", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L511"}, {"caller_nid": "bx_advance_advanceservice_pending_approval_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L511"}, {"caller_nid": "bx_advance_advanceservice_pending_approval_stats", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L511"}, {"caller_nid": "bx_advance_advanceservice_offset_amount_map", "callee": "group_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L524"}, {"caller_nid": "bx_advance_advanceservice_offset_amount_map", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L524"}, {"caller_nid": "bx_advance_advanceservice_offset_amount_map", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L526"}, {"caller_nid": "bx_advance_advanceservice_offset_amount_map", "callee": "in_", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L529"}, {"caller_nid": "bx_advance_advanceservice_issue", "callee": "now", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L553"}, {"caller_nid": "bx_advance_advanceservice_issue", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L560"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "and_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L565"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "and_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L566"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L568"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "is_", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L568"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L570"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L570"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L570"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L570"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L572"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L572"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L572"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L572"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L579"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L579"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L579"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "current_month_bounds", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L584"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L585"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L587"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L587"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L587"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "isnot", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L591"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/2119cf43e553690f3e5a9d62870c025b01be03bd9e68711efe8b11fc975ea4b7.json b/backend/graphify-out/cache/ast/2119cf43e553690f3e5a9d62870c025b01be03bd9e68711efe8b11fc975ea4b7.json new file mode 100644 index 000000000..8eea9fee6 --- /dev/null +++ b/backend/graphify-out/cache/ast/2119cf43e553690f3e5a9d62870c025b01be03bd9e68711efe8b11fc975ea4b7.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_init_py", "label": "__init__.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/__init__.py", "source_location": "L1"}, {"id": "bx_init_bx_health", "label": "bx_health()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/__init__.py", "source_location": "L10"}, {"id": "bx_init_rationale_1", "label": "\u62a5\u9500\uff08bx\uff09API \u8def\u7531\u805a\u5408 \u2014 REST \u98ce\u683c\uff0c\u534f\u8bae\u5bf9\u9f50 bx \u539f\u7cfb\u7edf\u3002", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/__init__.py", "source_location": "L1"}, {"id": "bx_init_rationale_11", "label": "P0 \u5065\u5eb7\u68c0\u67e5\uff1a\u9a8c\u8bc1 bx \u8def\u7531\u5df2\u6302\u8f7d\u4e14\u54cd\u5e94\u534f\u8bae\u4e3a code=0\u3002", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/__init__.py", "source_location": "L11"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_init_py", "target": "fastapi", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/__init__.py", "source_location": "L2", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_init_py", "target": "app_schemas_bx_common", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/__init__.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_init_py", "target": "bx_init_bx_health", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/__init__.py", "source_location": "L10", "weight": 1.0}, {"source": "bx_init_rationale_1", "target": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_init_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/__init__.py", "source_location": "L1", "weight": 1.0}, {"source": "bx_init_rationale_11", "target": "bx_init_bx_health", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/__init__.py", "source_location": "L11", "weight": 1.0}], "raw_calls": [{"caller_nid": "bx_init_bx_health", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/__init__.py", "source_location": "L12"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/284030ccb6a38b6753a4ad8fe1a79bfd6e82feb3ac9731e55a17c197686e7ae5.json b/backend/graphify-out/cache/ast/284030ccb6a38b6753a4ad8fe1a79bfd6e82feb3ac9731e55a17c197686e7ae5.json new file mode 100644 index 000000000..73b6ee67d --- /dev/null +++ b/backend/graphify-out/cache/ast/284030ccb6a38b6753a4ad8fe1a79bfd6e82feb3ac9731e55a17c197686e7ae5.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_init_py", "label": "__init__.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/__init__.py", "source_location": "L1"}, {"id": "bx_init_bx_health", "label": "bx_health()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/__init__.py", "source_location": "L13"}, {"id": "bx_init_rationale_1", "label": "\u62a5\u9500\uff08bx\uff09API \u8def\u7531\u805a\u5408 \u2014 REST \u98ce\u683c\uff0c\u534f\u8bae\u5bf9\u9f50 bx \u539f\u7cfb\u7edf\u3002", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/__init__.py", "source_location": "L1"}, {"id": "bx_init_rationale_14", "label": "P0 \u5065\u5eb7\u68c0\u67e5\uff1a\u9a8c\u8bc1 bx \u8def\u7531\u5df2\u6302\u8f7d\u4e14\u54cd\u5e94\u534f\u8bae\u4e3a code=0\u3002", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/__init__.py", "source_location": "L14"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_init_py", "target": "fastapi", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/__init__.py", "source_location": "L2", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_init_py", "target": "app_api_bx", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/__init__.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_init_py", "target": "app_schemas_bx_common", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/__init__.py", "source_location": "L5", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_init_py", "target": "bx_init_bx_health", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/__init__.py", "source_location": "L13", "weight": 1.0}, {"source": "bx_init_rationale_1", "target": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_init_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/__init__.py", "source_location": "L1", "weight": 1.0}, {"source": "bx_init_rationale_14", "target": "bx_init_bx_health", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/__init__.py", "source_location": "L14", "weight": 1.0}], "raw_calls": [{"caller_nid": "bx_init_bx_health", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/__init__.py", "source_location": "L15"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/2bbe961ad71f0be530f10d515b69615dbf887257028e339d4252b9ff2a5aba2b.json b/backend/graphify-out/cache/ast/2bbe961ad71f0be530f10d515b69615dbf887257028e339d4252b9ff2a5aba2b.json new file mode 100644 index 000000000..6918ed415 --- /dev/null +++ b/backend/graphify-out/cache/ast/2bbe961ad71f0be530f10d515b69615dbf887257028e339d4252b9ff2a5aba2b.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_utils_bx_date_range_py", "label": "bx_date_range.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_date_range.py", "source_location": "L1"}, {"id": "utils_bx_date_range_current_month_bounds", "label": "current_month_bounds()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_date_range.py", "source_location": "L7"}, {"id": "datetime", "label": "datetime", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_date_range.py", "source_location": "L7"}, {"id": "utils_bx_date_range_parse_create_time_day_bounds", "label": "parse_create_time_day_bounds()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_date_range.py", "source_location": "L19"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_date_range.py", "source_location": "L19"}, {"id": "utils_bx_date_range_rationale_1", "label": "\u62a5\u9500\u6a21\u5757\u65e5\u671f\u8303\u56f4\u5de5\u5177\uff08\u4ece bx-backend \u8fc1\u79fb\uff09\u3002", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_date_range.py", "source_location": "L1"}, {"id": "utils_bx_date_range_rationale_8", "label": "\u5f53\u524d\u81ea\u7136\u6708 [month_start, next_month_start)\u3002", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_date_range.py", "source_location": "L8"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_utils_bx_date_range_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_date_range.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_utils_bx_date_range_py", "target": "utils_bx_date_range_current_month_bounds", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_date_range.py", "source_location": "L7", "weight": 1.0}, {"source": "utils_bx_date_range_current_month_bounds", "target": "datetime", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_date_range.py", "source_location": "L7", "weight": 1.0}, {"source": "utils_bx_date_range_current_month_bounds", "target": "datetime", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_date_range.py", "source_location": "L7", "weight": 1.0}, {"source": "utils_bx_date_range_current_month_bounds", "target": "datetime", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_date_range.py", "source_location": "L7", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_utils_bx_date_range_py", "target": "utils_bx_date_range_parse_create_time_day_bounds", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_date_range.py", "source_location": "L19", "weight": 1.0}, {"source": "utils_bx_date_range_parse_create_time_day_bounds", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_date_range.py", "source_location": "L19", "weight": 1.0}, {"source": "utils_bx_date_range_parse_create_time_day_bounds", "target": "datetime", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_date_range.py", "source_location": "L19", "weight": 1.0}, {"source": "utils_bx_date_range_parse_create_time_day_bounds", "target": "datetime", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_date_range.py", "source_location": "L19", "weight": 1.0}, {"source": "utils_bx_date_range_current_month_bounds", "target": "datetime", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_date_range.py", "source_location": "L13", "weight": 1.0}, {"source": "utils_bx_date_range_rationale_1", "target": "users_zlwu_work_00code_shanxia2_0_backend_app_utils_bx_date_range_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_date_range.py", "source_location": "L1", "weight": 1.0}, {"source": "utils_bx_date_range_rationale_8", "target": "utils_bx_date_range_current_month_bounds", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_date_range.py", "source_location": "L8", "weight": 1.0}], "raw_calls": [{"caller_nid": "utils_bx_date_range_current_month_bounds", "callee": "now", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_date_range.py", "source_location": "L10"}, {"caller_nid": "utils_bx_date_range_current_month_bounds", "callee": "replace", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_date_range.py", "source_location": "L11"}, {"caller_nid": "utils_bx_date_range_parse_create_time_day_bounds", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_date_range.py", "source_location": "L20"}, {"caller_nid": "utils_bx_date_range_parse_create_time_day_bounds", "callee": "strptime", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_date_range.py", "source_location": "L23"}, {"caller_nid": "utils_bx_date_range_parse_create_time_day_bounds", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_date_range.py", "source_location": "L23"}, {"caller_nid": "utils_bx_date_range_parse_create_time_day_bounds", "callee": "timedelta", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_date_range.py", "source_location": "L24"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/308c087d94ac253bfc7e2d5455a06ae8ceac034adda41b5c61dd315dc167efaf.json b/backend/graphify-out/cache/ast/308c087d94ac253bfc7e2d5455a06ae8ceac034adda41b5c61dd315dc167efaf.json new file mode 100644 index 000000000..5c877cff4 --- /dev/null +++ b/backend/graphify-out/cache/ast/308c087d94ac253bfc7e2d5455a06ae8ceac034adda41b5c61dd315dc167efaf.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_approval_cycle_py", "label": "approval_cycle.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/approval_cycle.py", "source_location": "L1"}, {"id": "bx_approval_cycle_filter_current_cycle_approvals", "label": "filter_current_cycle_approvals()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/approval_cycle.py", "source_location": "L10"}, {"id": "t", "label": "T", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/approval_cycle.py", "source_location": "L10"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/approval_cycle.py", "source_location": "L10"}, {"id": "bx_approval_cycle_rationale_1", "label": "\u5ba1\u6279\u8f6e\u6b21\u8fc7\u6ee4 \u2014 \u9a73\u56de\u540e\u91cd\u65b0\u63d0\u4ea4\u65f6\uff0c\u8fdb\u5ea6\u63a5\u53e3\u4ec5\u5c55\u793a\u5f53\u524d\u8f6e\u6b21\u3002", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/approval_cycle.py", "source_location": "L1"}, {"id": "bx_approval_cycle_rationale_17", "label": "\u5ba1\u6279\u8fdb\u5ea6\u4ec5\u5c55\u793a\u5f53\u524d\u8f6e\u6b21\uff1b\u5b8c\u6574\u5386\u53f2\u7531 get_approval_history \u8fd4\u56de\u3002", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/approval_cycle.py", "source_location": "L17"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_approval_cycle_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/approval_cycle.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_approval_cycle_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/approval_cycle.py", "source_location": "L5", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_approval_cycle_py", "target": "bx_approval_cycle_filter_current_cycle_approvals", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/approval_cycle.py", "source_location": "L10", "weight": 1.0}, {"source": "bx_approval_cycle_filter_current_cycle_approvals", "target": "t", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/approval_cycle.py", "source_location": "L10", "weight": 1.0}, {"source": "bx_approval_cycle_filter_current_cycle_approvals", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/approval_cycle.py", "source_location": "L10", "weight": 1.0}, {"source": "bx_approval_cycle_filter_current_cycle_approvals", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/approval_cycle.py", "source_location": "L10", "weight": 1.0}, {"source": "bx_approval_cycle_filter_current_cycle_approvals", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/approval_cycle.py", "source_location": "L10", "weight": 1.0}, {"source": "bx_approval_cycle_filter_current_cycle_approvals", "target": "t", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/approval_cycle.py", "source_location": "L10", "weight": 1.0}, {"source": "bx_approval_cycle_rationale_1", "target": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_approval_cycle_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/approval_cycle.py", "source_location": "L1", "weight": 1.0}, {"source": "bx_approval_cycle_rationale_17", "target": "bx_approval_cycle_filter_current_cycle_approvals", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/approval_cycle.py", "source_location": "L17", "weight": 1.0}], "raw_calls": []} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/3525eb716c238682a07a116818d318b8a494fb24b9cefca5114d30bc50d095a5.json b/backend/graphify-out/cache/ast/3525eb716c238682a07a116818d318b8a494fb24b9cefca5114d30bc50d095a5.json new file mode 100644 index 000000000..aacd63ffa --- /dev/null +++ b/backend/graphify-out/cache/ast/3525eb716c238682a07a116818d318b8a494fb24b9cefca5114d30bc50d095a5.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_init_py", "label": "__init__.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/__init__.py", "source_location": "L1"}, {"id": "bx_init_bx_health", "label": "bx_health()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/__init__.py", "source_location": "L17"}, {"id": "bx_init_rationale_1", "label": "\u62a5\u9500\uff08bx\uff09API \u8def\u7531\u805a\u5408 \u2014 REST \u98ce\u683c\uff0c\u534f\u8bae\u5bf9\u9f50 bx \u539f\u7cfb\u7edf\u3002", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/__init__.py", "source_location": "L1"}, {"id": "bx_init_rationale_18", "label": "P0 \u5065\u5eb7\u68c0\u67e5\uff1a\u9a8c\u8bc1 bx \u8def\u7531\u5df2\u6302\u8f7d\u4e14\u54cd\u5e94\u534f\u8bae\u4e3a code=0\u3002", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/__init__.py", "source_location": "L18"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_init_py", "target": "fastapi", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/__init__.py", "source_location": "L2", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_init_py", "target": "app_api_bx", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/__init__.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_init_py", "target": "app_schemas_bx_common", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/__init__.py", "source_location": "L5", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_init_py", "target": "bx_init_bx_health", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/__init__.py", "source_location": "L17", "weight": 1.0}, {"source": "bx_init_rationale_1", "target": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_init_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/__init__.py", "source_location": "L1", "weight": 1.0}, {"source": "bx_init_rationale_18", "target": "bx_init_bx_health", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/__init__.py", "source_location": "L18", "weight": 1.0}], "raw_calls": [{"caller_nid": "bx_init_bx_health", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/__init__.py", "source_location": "L19"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/3850bc36779f8ea27c7e43155735c7b0eeec5d0b543938bcf92d18cd6bc64763.json b/backend/graphify-out/cache/ast/3850bc36779f8ea27c7e43155735c7b0eeec5d0b543938bcf92d18cd6bc64763.json new file mode 100644 index 000000000..c2bcfb770 --- /dev/null +++ b/backend/graphify-out/cache/ast/3850bc36779f8ea27c7e43155735c7b0eeec5d0b543938bcf92d18cd6bc64763.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "label": "reimburse.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L1"}, {"id": "bx_reimburse_reimburseservice", "label": "ReimburseService", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L30"}, {"id": "bx_reimburse_reimburseservice_tenant_no", "label": "._tenant_no()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L32"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L32"}, {"id": "bxusercontext", "label": "BxUserContext", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L32"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L32"}, {"id": "bx_reimburse_reimburseservice_get_by_id", "label": ".get_by_id()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L36"}, {"id": "bxreimburseapply", "label": "BxReimburseApply", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L36"}, {"id": "bx_reimburse_reimburseservice_get_paged", "label": ".get_paged()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L40"}, {"id": "int", "label": "int", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L40"}, {"id": "any", "label": "Any", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L40"}, {"id": "bx_reimburse_reimburseservice_soft_delete", "label": ".soft_delete()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L50"}, {"id": "bool", "label": "bool", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L50"}, {"id": "bx_reimburse_reimburseservice_workflow_nodes", "label": "._workflow_nodes()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L57"}, {"id": "bxworkflownode", "label": "BxWorkflowNode", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L57"}, {"id": "bx_reimburse_reimburseservice_pending_approval", "label": ".pending_approval()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L70"}, {"id": "bx_reimburse_reimburseservice_approved_by_me", "label": ".approved_by_me()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L126"}, {"id": "bx_reimburse_reimburseservice_submit", "label": ".submit()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L174"}, {"id": "bx_reimburse_reimburseservice_approve", "label": ".approve()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L191"}, {"id": "bx_reimburse_reimburseservice_reject", "label": ".reject()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L236"}, {"id": "bx_reimburse_reimburseservice_get_approvals", "label": ".get_approvals()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L273"}, {"id": "bx_reimburse_reimburseservice_create_with_details", "label": ".create_with_details()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L325"}, {"id": "bx_reimburse_reimburseservice_update_with_details", "label": ".update_with_details()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L371"}, {"id": "bx_reimburse_reimburseservice_get_details", "label": ".get_details()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L424"}, {"id": "bxreimbursedetail", "label": "BxReimburseDetail", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L424"}, {"id": "bx_reimburse_reimburseservice_out_rows_with_attachment_counts", "label": ".out_rows_with_attachment_counts()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L437"}, {"id": "reimburseapplyout", "label": "ReimburseApplyOut", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L437"}, {"id": "bx_reimburse_reimburseservice_out_one_with_attachment_counts", "label": ".out_one_with_attachment_counts()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L454"}, {"id": "bx_reimburse_reimburseservice_build_apply_out_with_details", "label": ".build_apply_out_with_details()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L460"}, {"id": "bx_reimburse_reimburseservice_global_status_counts", "label": ".global_status_counts()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L469"}, {"id": "bx_reimburse_reimburseservice_my_apply_stats", "label": ".my_apply_stats()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L479"}, {"id": "bx_reimburse_reimburseservice_pending_approval_stats", "label": ".pending_approval_stats()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L538"}, {"id": "bx_reimburse_reimburseservice_pay", "label": ".pay()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L569"}, {"id": "float", "label": "float", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L569"}, {"id": "bx_reimburse_reimburseservice_offset", "label": ".offset()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L592"}, {"id": "bx_reimburse_reimburseservice_batch_offset", "label": ".batch_offset()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L623"}, {"id": "bx_reimburse_reimburseservice_finance_payment_stats", "label": ".finance_payment_stats()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L678"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "decimal", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L5", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "sqlalchemy", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L7", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L8", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "app_core_bx_auth", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L10", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "app_core_tenant_context", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L11", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "app_core_utils", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L12", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "app_models_bx_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L13", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "app_schemas_bx_reimburse", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L21", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "app_services_bx_attachment", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L22", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "app_services_bx_base", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L23", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "app_utils_bx_codegen", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L24", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "app_utils_bx_date_range", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L25", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "bx_reimburse_reimburseservice", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L30", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_tenant_no", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L32", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_tenant_no", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L32", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_tenant_no", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L32", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_tenant_no", "target": "str", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L32", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_get_by_id", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L36", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_by_id", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L36", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_by_id", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L36", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_by_id", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L36", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_by_id", "target": "bxreimburseapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L36", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_get_paged", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L40", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_paged", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L40", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_paged", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L40", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_paged", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L40", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_paged", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L40", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_paged", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L40", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_paged", "target": "bxreimburseapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L40", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_paged", "target": "int", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L40", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_soft_delete", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L50", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_soft_delete", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L50", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_soft_delete", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L50", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_soft_delete", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L50", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_soft_delete", "target": "bool", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L50", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_workflow_nodes", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L57", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_workflow_nodes", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L57", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_workflow_nodes", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L57", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_workflow_nodes", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L57", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_workflow_nodes", "target": "bxworkflownode", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L57", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_pending_approval", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L70", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pending_approval", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L70", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pending_approval", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L70", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pending_approval", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L70", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pending_approval", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L70", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pending_approval", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L70", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pending_approval", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L70", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pending_approval", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L70", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pending_approval", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L70", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_approved_by_me", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L126", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approved_by_me", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L126", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approved_by_me", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L126", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approved_by_me", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L126", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approved_by_me", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L126", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approved_by_me", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L126", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approved_by_me", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L126", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approved_by_me", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L126", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approved_by_me", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L126", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_submit", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L174", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_submit", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L174", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_submit", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L174", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_submit", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L174", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_submit", "target": "bxreimburseapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L174", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_approve", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L191", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approve", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L191", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approve", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L191", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approve", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L191", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approve", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L191", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approve", "target": "bxreimburseapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L191", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_reject", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L236", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_reject", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L236", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_reject", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L236", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_reject", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L236", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_reject", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L236", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_reject", "target": "bxreimburseapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L236", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_get_approvals", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L273", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approvals", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L273", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approvals", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L273", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approvals", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L273", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approvals", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L273", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approvals", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L273", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_create_with_details", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L325", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_create_with_details", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L325", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_create_with_details", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L325", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_create_with_details", "target": "bxreimburseapply", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L325", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_update_with_details", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L371", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_update_with_details", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L371", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_update_with_details", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L371", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_update_with_details", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L371", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_update_with_details", "target": "bxreimburseapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L371", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_get_details", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L424", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_details", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L424", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_details", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L424", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_details", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L424", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_details", "target": "bxreimbursedetail", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L424", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_out_rows_with_attachment_counts", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L437", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_out_rows_with_attachment_counts", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L437", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_out_rows_with_attachment_counts", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L437", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_out_rows_with_attachment_counts", "target": "bxreimburseapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L437", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_out_rows_with_attachment_counts", "target": "reimburseapplyout", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L437", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_out_one_with_attachment_counts", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L454", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_out_one_with_attachment_counts", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L454", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_out_one_with_attachment_counts", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L454", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_out_one_with_attachment_counts", "target": "bxreimburseapply", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L454", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_out_one_with_attachment_counts", "target": "reimburseapplyout", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L454", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_build_apply_out_with_details", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L460", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_build_apply_out_with_details", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L460", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_build_apply_out_with_details", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L460", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_build_apply_out_with_details", "target": "bxreimburseapply", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L460", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_build_apply_out_with_details", "target": "reimburseapplyout", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L460", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_global_status_counts", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L469", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_global_status_counts", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L469", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_global_status_counts", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L469", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_global_status_counts", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L469", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_global_status_counts", "target": "int", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L469", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_my_apply_stats", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L479", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_my_apply_stats", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L479", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_my_apply_stats", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L479", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_my_apply_stats", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L479", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_pending_approval_stats", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L538", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pending_approval_stats", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L538", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pending_approval_stats", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L538", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pending_approval_stats", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L538", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_pay", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L569", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pay", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L569", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pay", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L569", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pay", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L569", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pay", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L569", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pay", "target": "float", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L569", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pay", "target": "bxreimburseapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L569", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_offset", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L592", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_offset", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L592", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_offset", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L592", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_offset", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L592", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_offset", "target": "float", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L592", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_offset", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L592", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_offset", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L592", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_offset", "target": "bxreimburseapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L592", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_batch_offset", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L623", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_batch_offset", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L623", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_batch_offset", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L623", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_batch_offset", "target": "float", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L623", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_batch_offset", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L623", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_batch_offset", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L623", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_batch_offset", "target": "bxreimburseapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L623", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_finance_payment_stats", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L678", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_finance_payment_stats", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L678", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_finance_payment_stats", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L678", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_soft_delete", "target": "bx_reimburse_reimburseservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L51", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pending_approval", "target": "bx_reimburse_reimburseservice_offset", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L116", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approved_by_me", "target": "bx_reimburse_reimburseservice_offset", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L166", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_submit", "target": "bx_reimburse_reimburseservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L175", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_submit", "target": "bx_reimburse_reimburseservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L176", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_submit", "target": "bx_reimburse_reimburseservice_workflow_nodes", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L184", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approve", "target": "bx_reimburse_reimburseservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L194", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approve", "target": "bx_reimburse_reimburseservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L195", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approve", "target": "bx_reimburse_reimburseservice_workflow_nodes", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L198", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_reject", "target": "bx_reimburse_reimburseservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L239", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_reject", "target": "bx_reimburse_reimburseservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L240", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_reject", "target": "bx_reimburse_reimburseservice_workflow_nodes", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L243", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approvals", "target": "bx_reimburse_reimburseservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L274", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approvals", "target": "bx_reimburse_reimburseservice_workflow_nodes", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L280", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_create_with_details", "target": "bx_reimburse_reimburseservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L332", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_create_with_details", "target": "bxreimburseapply", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L338", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_create_with_details", "target": "bxreimbursedetail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L355", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_update_with_details", "target": "bx_reimburse_reimburseservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L379", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_update_with_details", "target": "bx_reimburse_reimburseservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L380", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_update_with_details", "target": "bxreimbursedetail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L398", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_out_one_with_attachment_counts", "target": "bx_reimburse_reimburseservice_out_rows_with_attachment_counts", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L457", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_build_apply_out_with_details", "target": "bx_reimburse_reimburseservice_out_one_with_attachment_counts", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L463", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_build_apply_out_with_details", "target": "bx_reimburse_reimburseservice_get_details", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L464", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pay", "target": "bx_reimburse_reimburseservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L576", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pay", "target": "bx_reimburse_reimburseservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L577", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_offset", "target": "bx_reimburse_reimburseservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L600", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_offset", "target": "bx_reimburse_reimburseservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L601", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_batch_offset", "target": "bx_reimburse_reimburseservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L631", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_batch_offset", "target": "bx_reimburse_reimburseservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L632", "weight": 1.0}], "raw_calls": [{"caller_nid": "bx_reimburse_reimburseservice_tenant_no", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L33"}, {"caller_nid": "bx_reimburse_reimburseservice_tenant_no", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L33"}, {"caller_nid": "bx_reimburse_reimburseservice_workflow_nodes", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L59"}, {"caller_nid": "bx_reimburse_reimburseservice_workflow_nodes", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L59"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "join", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L81"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L81"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "and_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L84"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L100"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L101"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L102"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "parse_create_time_day_bounds", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L107"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "subquery", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L113"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L114"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L114"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L114"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L114"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "limit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L116"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L116"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "join", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L116"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L116"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L118"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "subquery", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L137"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "distinct", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L137"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L137"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "join", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L147"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L147"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L153"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L154"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L155"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "parse_create_time_day_bounds", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L160"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L164"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "limit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L166"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L166"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L166"}, {"caller_nid": "bx_reimburse_reimburseservice_submit", "callee": "generate_apply_code", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L181"}, {"caller_nid": "bx_reimburse_reimburseservice_submit", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L187"}, {"caller_nid": "bx_reimburse_reimburseservice_approve", "callee": "BxReimburseApproval", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L211"}, {"caller_nid": "bx_reimburse_reimburseservice_approve", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L212"}, {"caller_nid": "bx_reimburse_reimburseservice_approve", "callee": "now", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L220"}, {"caller_nid": "bx_reimburse_reimburseservice_approve", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L225"}, {"caller_nid": "bx_reimburse_reimburseservice_approve", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L232"}, {"caller_nid": "bx_reimburse_reimburseservice_reject", "callee": "BxReimburseApproval", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L251"}, {"caller_nid": "bx_reimburse_reimburseservice_reject", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L252"}, {"caller_nid": "bx_reimburse_reimburseservice_reject", "callee": "now", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L260"}, {"caller_nid": "bx_reimburse_reimburseservice_reject", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L265"}, {"caller_nid": "bx_reimburse_reimburseservice_reject", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L269"}, {"caller_nid": "bx_reimburse_reimburseservice_get_approvals", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L284"}, {"caller_nid": "bx_reimburse_reimburseservice_get_approvals", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L295"}, {"caller_nid": "bx_reimburse_reimburseservice_get_approvals", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L297"}, {"caller_nid": "bx_reimburse_reimburseservice_get_approvals", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L310"}, {"caller_nid": "bx_reimburse_reimburseservice_create_with_details", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L334"}, {"caller_nid": "bx_reimburse_reimburseservice_create_with_details", "callee": "pop", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L335"}, {"caller_nid": "bx_reimburse_reimburseservice_create_with_details", "callee": "generate_title", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L335"}, {"caller_nid": "bx_reimburse_reimburseservice_create_with_details", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L339"}, {"caller_nid": "bx_reimburse_reimburseservice_create_with_details", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L342"}, {"caller_nid": "bx_reimburse_reimburseservice_create_with_details", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L343"}, {"caller_nid": "bx_reimburse_reimburseservice_create_with_details", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L351"}, {"caller_nid": "bx_reimburse_reimburseservice_create_with_details", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L352"}, {"caller_nid": "bx_reimburse_reimburseservice_create_with_details", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L356"}, {"caller_nid": "bx_reimburse_reimburseservice_create_with_details", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L361"}, {"caller_nid": "bx_reimburse_reimburseservice_create_with_details", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L366"}, {"caller_nid": "bx_reimburse_reimburseservice_create_with_details", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L367"}, {"caller_nid": "bx_reimburse_reimburseservice_update_with_details", "callee": "items", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L384"}, {"caller_nid": "bx_reimburse_reimburseservice_update_with_details", "callee": "update", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L388"}, {"caller_nid": "bx_reimburse_reimburseservice_update_with_details", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L388"}, {"caller_nid": "bx_reimburse_reimburseservice_update_with_details", "callee": "Decimal", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L394"}, {"caller_nid": "bx_reimburse_reimburseservice_update_with_details", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L399"}, {"caller_nid": "bx_reimburse_reimburseservice_update_with_details", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L404"}, {"caller_nid": "bx_reimburse_reimburseservice_update_with_details", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L409"}, {"caller_nid": "bx_reimburse_reimburseservice_update_with_details", "callee": "Decimal", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L410"}, {"caller_nid": "bx_reimburse_reimburseservice_update_with_details", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L420"}, {"caller_nid": "bx_reimburse_reimburseservice_get_details", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L426"}, {"caller_nid": "bx_reimburse_reimburseservice_get_details", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L426"}, {"caller_nid": "bx_reimburse_reimburseservice_out_rows_with_attachment_counts", "callee": "count_invoice_attach_by_biz_ids", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L443"}, {"caller_nid": "bx_reimburse_reimburseservice_out_rows_with_attachment_counts", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L448"}, {"caller_nid": "bx_reimburse_reimburseservice_out_rows_with_attachment_counts", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L449"}, {"caller_nid": "bx_reimburse_reimburseservice_out_rows_with_attachment_counts", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L450"}, {"caller_nid": "bx_reimburse_reimburseservice_out_rows_with_attachment_counts", "callee": "model_copy", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L450"}, {"caller_nid": "bx_reimburse_reimburseservice_build_apply_out_with_details", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L465"}, {"caller_nid": "bx_reimburse_reimburseservice_global_status_counts", "callee": "group_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L471"}, {"caller_nid": "bx_reimburse_reimburseservice_global_status_counts", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L471"}, {"caller_nid": "bx_reimburse_reimburseservice_global_status_counts", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L471"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "and_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L480"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L485"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L485"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L485"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L485"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L487"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L487"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L487"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L487"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L494"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L494"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L494"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L494"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "in_", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L496"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L501"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L501"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L501"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L501"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L508"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L508"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L508"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "in_", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L509"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "current_month_bounds", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L513"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L515"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L515"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L515"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L521"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L521"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L521"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L521"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval_stats", "callee": "subquery", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L539"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval_stats", "callee": "join", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L540"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L540"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval_stats", "callee": "and_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L543"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L557"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L557"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L557"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L557"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval_stats", "callee": "current_month_bounds", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L558"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L560"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval_stats", "callee": "join", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L560"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L560"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval_stats", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L560"}, {"caller_nid": "bx_reimburse_reimburseservice_pay", "callee": "now", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L583"}, {"caller_nid": "bx_reimburse_reimburseservice_pay", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L588"}, {"caller_nid": "bx_reimburse_reimburseservice_offset", "callee": "BxReimburseOffset", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L608"}, {"caller_nid": "bx_reimburse_reimburseservice_offset", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L609"}, {"caller_nid": "bx_reimburse_reimburseservice_offset", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L618"}, {"caller_nid": "bx_reimburse_reimburseservice_offset", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L619"}, {"caller_nid": "bx_reimburse_reimburseservice_batch_offset", "callee": "BxReimburseOffset", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L646"}, {"caller_nid": "bx_reimburse_reimburseservice_batch_offset", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L647"}, {"caller_nid": "bx_reimburse_reimburseservice_batch_offset", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L656"}, {"caller_nid": "bx_reimburse_reimburseservice_batch_offset", "callee": "now", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L664"}, {"caller_nid": "bx_reimburse_reimburseservice_batch_offset", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L674"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "and_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L679"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L681"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L681"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L681"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L681"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "isnot", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L687"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L689"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L689"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L689"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L689"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L691"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "and_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L693"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "is_", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L695"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L696"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L700"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L700"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L700"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L700"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "current_month_bounds", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L702"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L704"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L704"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L704"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L710"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L710"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L710"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/38eb2cb16c0b187b946287ad8d6e0a2b5d008798cf3e99914ce29a6a3b3ab2ce.json b/backend/graphify-out/cache/ast/38eb2cb16c0b187b946287ad8d6e0a2b5d008798cf3e99914ce29a6a3b3ab2ce.json new file mode 100644 index 000000000..dea9052fd --- /dev/null +++ b/backend/graphify-out/cache/ast/38eb2cb16c0b187b946287ad8d6e0a2b5d008798cf3e99914ce29a6a3b3ab2ce.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_core_bx_auth_py", "label": "bx_auth.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/core/bx_auth.py", "source_location": "L1"}, {"id": "core_bx_auth_bxusercontext", "label": "BxUserContext", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/core/bx_auth.py", "source_location": "L13"}, {"id": "core_bx_auth_bxusercontext_to_tenant_user_dict", "label": ".to_tenant_user_dict()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/core/bx_auth.py", "source_location": "L22"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/core/bx_auth.py", "source_location": "L22"}, {"id": "any", "label": "Any", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/core/bx_auth.py", "source_location": "L22"}, {"id": "core_bx_auth_get_bx_current_user", "label": "get_bx_current_user()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/core/bx_auth.py", "source_location": "L31"}, {"id": "core_bx_auth_rationale_1", "label": "\u62a5\u9500\u6a21\u5757\u8ba4\u8bc1\u9002\u914d\uff1a\u95e8\u6237 JWT \u7528\u6237 \u2192 bx \u4e1a\u52a1\u4e0a\u4e0b\u6587\u3002", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/core/bx_auth.py", "source_location": "L1"}, {"id": "core_bx_auth_rationale_14", "label": "bx Service/Router \u4f7f\u7528\u7684\u5f53\u524d\u7528\u6237\u4e0a\u4e0b\u6587\uff08sys_user.id \u4e3a UUID \u5b57\u7b26\u4e32\uff09\u3002", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/core/bx_auth.py", "source_location": "L14"}, {"id": "core_bx_auth_rationale_23", "label": "\u4f9b get_tenant_no \u7b49\u95e8\u6237\u5de5\u5177\u4f7f\u7528\u3002", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/core/bx_auth.py", "source_location": "L23"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_core_bx_auth_py", "target": "dataclasses", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/core/bx_auth.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_core_bx_auth_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/core/bx_auth.py", "source_location": "L5", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_core_bx_auth_py", "target": "fastapi", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/core/bx_auth.py", "source_location": "L7", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_core_bx_auth_py", "target": "app_core_menu_guard", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/core/bx_auth.py", "source_location": "L9", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_core_bx_auth_py", "target": "core_bx_auth_bxusercontext", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/core/bx_auth.py", "source_location": "L13", "weight": 1.0}, {"source": "core_bx_auth_bxusercontext", "target": "core_bx_auth_bxusercontext_to_tenant_user_dict", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/core/bx_auth.py", "source_location": "L22", "weight": 1.0}, {"source": "core_bx_auth_bxusercontext_to_tenant_user_dict", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/core/bx_auth.py", "source_location": "L22", "weight": 1.0}, {"source": "core_bx_auth_bxusercontext_to_tenant_user_dict", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/core/bx_auth.py", "source_location": "L22", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_core_bx_auth_py", "target": "core_bx_auth_get_bx_current_user", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/core/bx_auth.py", "source_location": "L31", "weight": 1.0}, {"source": "core_bx_auth_get_bx_current_user", "target": "core_bx_auth_bxusercontext", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/core/bx_auth.py", "source_location": "L31", "weight": 1.0}, {"source": "core_bx_auth_get_bx_current_user", "target": "core_bx_auth_bxusercontext", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/core/bx_auth.py", "source_location": "L34", "weight": 1.0}, {"source": "core_bx_auth_rationale_1", "target": "users_zlwu_work_00code_shanxia2_0_backend_app_core_bx_auth_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/core/bx_auth.py", "source_location": "L1", "weight": 1.0}, {"source": "core_bx_auth_rationale_14", "target": "core_bx_auth_bxusercontext", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/core/bx_auth.py", "source_location": "L14", "weight": 1.0}, {"source": "core_bx_auth_rationale_23", "target": "core_bx_auth_bxusercontext_to_tenant_user_dict", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/core/bx_auth.py", "source_location": "L23", "weight": 1.0}], "raw_calls": [{"caller_nid": "core_bx_auth_get_bx_current_user", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/core/bx_auth.py", "source_location": "L35"}, {"caller_nid": "core_bx_auth_get_bx_current_user", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/core/bx_auth.py", "source_location": "L35"}, {"caller_nid": "core_bx_auth_get_bx_current_user", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/core/bx_auth.py", "source_location": "L36"}, {"caller_nid": "core_bx_auth_get_bx_current_user", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/core/bx_auth.py", "source_location": "L36"}, {"caller_nid": "core_bx_auth_get_bx_current_user", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/core/bx_auth.py", "source_location": "L36"}, {"caller_nid": "core_bx_auth_get_bx_current_user", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/core/bx_auth.py", "source_location": "L37"}, {"caller_nid": "core_bx_auth_get_bx_current_user", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/core/bx_auth.py", "source_location": "L37"}, {"caller_nid": "core_bx_auth_get_bx_current_user", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/core/bx_auth.py", "source_location": "L38"}, {"caller_nid": "core_bx_auth_get_bx_current_user", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/core/bx_auth.py", "source_location": "L38"}, {"caller_nid": "core_bx_auth_get_bx_current_user", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/core/bx_auth.py", "source_location": "L39"}, {"caller_nid": "core_bx_auth_get_bx_current_user", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/core/bx_auth.py", "source_location": "L39"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/3d3ad114f06247fcff5e1a5c0d9467f4ecd507b3729c29d3bdeb3421300cca01.json b/backend/graphify-out/cache/ast/3d3ad114f06247fcff5e1a5c0d9467f4ecd507b3729c29d3bdeb3421300cca01.json new file mode 100644 index 000000000..15f5e7507 --- /dev/null +++ b/backend/graphify-out/cache/ast/3d3ad114f06247fcff5e1a5c0d9467f4ecd507b3729c29d3bdeb3421300cca01.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_api_init_py", "label": "__init__.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/__init__.py", "source_location": "L1"}, {"id": "api_init_rationale_1", "label": "API \u8def\u7531\u5305 \u2014 \u5c71\u5ce1\u5316\u5de5\u751f\u4ea7\u4e00\u4f53\u5316\u95e8\u6237", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/__init__.py", "source_location": "L1"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_init_py", "target": "app_api_public", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/__init__.py", "source_location": "L2", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_init_py", "target": "app_api_menu", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/__init__.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_init_py", "target": "app_api_admin", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/__init__.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_init_py", "target": "app_api_workflow", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/__init__.py", "source_location": "L5", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_init_py", "target": "app_api_leave", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/__init__.py", "source_location": "L6", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_init_py", "target": "app_api_crm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/__init__.py", "source_location": "L7", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_init_py", "target": "app_api_monitor", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/__init__.py", "source_location": "L8", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_init_py", "target": "app_api_bx", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/__init__.py", "source_location": "L9", "weight": 1.0}, {"source": "api_init_rationale_1", "target": "users_zlwu_work_00code_shanxia2_0_backend_app_api_init_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/__init__.py", "source_location": "L1", "weight": 1.0}], "raw_calls": []} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/3e3dd6accae52b25415f68195e456f37248447fa2230ce18851aa24b6fc5ff80.json b/backend/graphify-out/cache/ast/3e3dd6accae52b25415f68195e456f37248447fa2230ce18851aa24b6fc5ff80.json new file mode 100644 index 000000000..642901131 --- /dev/null +++ b/backend/graphify-out/cache/ast/3e3dd6accae52b25415f68195e456f37248447fa2230ce18851aa24b6fc5ff80.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_advance_py", "label": "advance.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L1"}, {"id": "bx_advance_advanceservice", "label": "AdvanceService", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L24"}, {"id": "bx_advance_advanceservice_tenant_no", "label": "._tenant_no()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L26"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L26"}, {"id": "bxusercontext", "label": "BxUserContext", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L26"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L26"}, {"id": "bx_advance_advanceservice_get_by_id", "label": ".get_by_id()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L30"}, {"id": "bxadvanceapply", "label": "BxAdvanceApply", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L30"}, {"id": "bx_advance_advanceservice_get_paged", "label": ".get_paged()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L34"}, {"id": "int", "label": "int", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L34"}, {"id": "any", "label": "Any", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L34"}, {"id": "bx_advance_advanceservice_create", "label": ".create()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L44"}, {"id": "bx_advance_advanceservice_update", "label": ".update()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L61"}, {"id": "bx_advance_advanceservice_soft_delete", "label": ".soft_delete()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L79"}, {"id": "bool", "label": "bool", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L79"}, {"id": "bx_advance_advanceservice_pending_approval", "label": ".pending_approval()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L86"}, {"id": "bx_advance_advanceservice_approved_by_me", "label": ".approved_by_me()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L142"}, {"id": "bx_advance_advanceservice_workflow_nodes", "label": "._workflow_nodes()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L190"}, {"id": "bxworkflownode", "label": "BxWorkflowNode", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L190"}, {"id": "bx_advance_advanceservice_submit", "label": ".submit()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L203"}, {"id": "bx_advance_advanceservice_approve", "label": ".approve()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L220"}, {"id": "bx_advance_advanceservice_reject", "label": ".reject()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L265"}, {"id": "bx_advance_advanceservice_get_approvals", "label": ".get_approvals()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L302"}, {"id": "bx_advance_advanceservice_global_status_counts", "label": ".global_status_counts()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L354"}, {"id": "bx_advance_advanceservice_my_apply_stats", "label": ".my_apply_stats()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L364"}, {"id": "bx_advance_advanceservice_pending_approval_stats", "label": ".pending_approval_stats()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L447"}, {"id": "bx_advance_advanceservice_offset_amount_map", "label": ".offset_amount_map()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L478"}, {"id": "float", "label": "float", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L478"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_advance_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_advance_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_advance_py", "target": "sqlalchemy", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L6", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_advance_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L7", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_advance_py", "target": "app_core_bx_auth", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L9", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_advance_py", "target": "app_core_tenant_context", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L10", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_advance_py", "target": "app_core_utils", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L11", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_advance_py", "target": "app_models_bx_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L12", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_advance_py", "target": "app_services_bx_base", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L19", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_advance_py", "target": "app_utils_bx_codegen", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L20", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_advance_py", "target": "app_utils_bx_date_range", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L21", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_advance_py", "target": "bx_advance_advanceservice", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L24", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_tenant_no", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L26", "weight": 1.0}, {"source": "bx_advance_advanceservice_tenant_no", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L26", "weight": 1.0}, {"source": "bx_advance_advanceservice_tenant_no", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L26", "weight": 1.0}, {"source": "bx_advance_advanceservice_tenant_no", "target": "str", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L26", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_get_by_id", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L30", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_by_id", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L30", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_by_id", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L30", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_by_id", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L30", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_by_id", "target": "bxadvanceapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L30", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_get_paged", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L34", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_paged", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L34", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_paged", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L34", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_paged", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L34", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_paged", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L34", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_paged", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L34", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_paged", "target": "bxadvanceapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L34", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_paged", "target": "int", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L34", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_create", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L44", "weight": 1.0}, {"source": "bx_advance_advanceservice_create", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L44", "weight": 1.0}, {"source": "bx_advance_advanceservice_create", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L44", "weight": 1.0}, {"source": "bx_advance_advanceservice_create", "target": "bxadvanceapply", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L44", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_update", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L61", "weight": 1.0}, {"source": "bx_advance_advanceservice_update", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L61", "weight": 1.0}, {"source": "bx_advance_advanceservice_update", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L61", "weight": 1.0}, {"source": "bx_advance_advanceservice_update", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L61", "weight": 1.0}, {"source": "bx_advance_advanceservice_update", "target": "bxadvanceapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L61", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_soft_delete", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L79", "weight": 1.0}, {"source": "bx_advance_advanceservice_soft_delete", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L79", "weight": 1.0}, {"source": "bx_advance_advanceservice_soft_delete", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L79", "weight": 1.0}, {"source": "bx_advance_advanceservice_soft_delete", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L79", "weight": 1.0}, {"source": "bx_advance_advanceservice_soft_delete", "target": "bool", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L79", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_pending_approval", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L86", "weight": 1.0}, {"source": "bx_advance_advanceservice_pending_approval", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L86", "weight": 1.0}, {"source": "bx_advance_advanceservice_pending_approval", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L86", "weight": 1.0}, {"source": "bx_advance_advanceservice_pending_approval", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L86", "weight": 1.0}, {"source": "bx_advance_advanceservice_pending_approval", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L86", "weight": 1.0}, {"source": "bx_advance_advanceservice_pending_approval", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L86", "weight": 1.0}, {"source": "bx_advance_advanceservice_pending_approval", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L86", "weight": 1.0}, {"source": "bx_advance_advanceservice_pending_approval", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L86", "weight": 1.0}, {"source": "bx_advance_advanceservice_pending_approval", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L86", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_approved_by_me", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L142", "weight": 1.0}, {"source": "bx_advance_advanceservice_approved_by_me", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L142", "weight": 1.0}, {"source": "bx_advance_advanceservice_approved_by_me", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L142", "weight": 1.0}, {"source": "bx_advance_advanceservice_approved_by_me", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L142", "weight": 1.0}, {"source": "bx_advance_advanceservice_approved_by_me", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L142", "weight": 1.0}, {"source": "bx_advance_advanceservice_approved_by_me", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L142", "weight": 1.0}, {"source": "bx_advance_advanceservice_approved_by_me", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L142", "weight": 1.0}, {"source": "bx_advance_advanceservice_approved_by_me", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L142", "weight": 1.0}, {"source": "bx_advance_advanceservice_approved_by_me", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L142", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_workflow_nodes", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L190", "weight": 1.0}, {"source": "bx_advance_advanceservice_workflow_nodes", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L190", "weight": 1.0}, {"source": "bx_advance_advanceservice_workflow_nodes", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L190", "weight": 1.0}, {"source": "bx_advance_advanceservice_workflow_nodes", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L190", "weight": 1.0}, {"source": "bx_advance_advanceservice_workflow_nodes", "target": "bxworkflownode", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L190", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_submit", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L203", "weight": 1.0}, {"source": "bx_advance_advanceservice_submit", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L203", "weight": 1.0}, {"source": "bx_advance_advanceservice_submit", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L203", "weight": 1.0}, {"source": "bx_advance_advanceservice_submit", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L203", "weight": 1.0}, {"source": "bx_advance_advanceservice_submit", "target": "bxadvanceapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L203", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_approve", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L220", "weight": 1.0}, {"source": "bx_advance_advanceservice_approve", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L220", "weight": 1.0}, {"source": "bx_advance_advanceservice_approve", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L220", "weight": 1.0}, {"source": "bx_advance_advanceservice_approve", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L220", "weight": 1.0}, {"source": "bx_advance_advanceservice_approve", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L220", "weight": 1.0}, {"source": "bx_advance_advanceservice_approve", "target": "bxadvanceapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L220", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_reject", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L265", "weight": 1.0}, {"source": "bx_advance_advanceservice_reject", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L265", "weight": 1.0}, {"source": "bx_advance_advanceservice_reject", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L265", "weight": 1.0}, {"source": "bx_advance_advanceservice_reject", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L265", "weight": 1.0}, {"source": "bx_advance_advanceservice_reject", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L265", "weight": 1.0}, {"source": "bx_advance_advanceservice_reject", "target": "bxadvanceapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L265", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_get_approvals", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L302", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_approvals", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L302", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_approvals", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L302", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_approvals", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L302", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_approvals", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L302", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_approvals", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L302", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_global_status_counts", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L354", "weight": 1.0}, {"source": "bx_advance_advanceservice_global_status_counts", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L354", "weight": 1.0}, {"source": "bx_advance_advanceservice_global_status_counts", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L354", "weight": 1.0}, {"source": "bx_advance_advanceservice_global_status_counts", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L354", "weight": 1.0}, {"source": "bx_advance_advanceservice_global_status_counts", "target": "int", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L354", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_my_apply_stats", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L364", "weight": 1.0}, {"source": "bx_advance_advanceservice_my_apply_stats", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L364", "weight": 1.0}, {"source": "bx_advance_advanceservice_my_apply_stats", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L364", "weight": 1.0}, {"source": "bx_advance_advanceservice_my_apply_stats", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L364", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_pending_approval_stats", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L447", "weight": 1.0}, {"source": "bx_advance_advanceservice_pending_approval_stats", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L447", "weight": 1.0}, {"source": "bx_advance_advanceservice_pending_approval_stats", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L447", "weight": 1.0}, {"source": "bx_advance_advanceservice_pending_approval_stats", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L447", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_offset_amount_map", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L478", "weight": 1.0}, {"source": "bx_advance_advanceservice_offset_amount_map", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L478", "weight": 1.0}, {"source": "bx_advance_advanceservice_offset_amount_map", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L478", "weight": 1.0}, {"source": "bx_advance_advanceservice_offset_amount_map", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L478", "weight": 1.0}, {"source": "bx_advance_advanceservice_offset_amount_map", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L478", "weight": 1.0}, {"source": "bx_advance_advanceservice_offset_amount_map", "target": "float", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L478", "weight": 1.0}, {"source": "bx_advance_advanceservice_create", "target": "bx_advance_advanceservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L50", "weight": 1.0}, {"source": "bx_advance_advanceservice_update", "target": "bx_advance_advanceservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L68", "weight": 1.0}, {"source": "bx_advance_advanceservice_soft_delete", "target": "bx_advance_advanceservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L80", "weight": 1.0}, {"source": "bx_advance_advanceservice_submit", "target": "bx_advance_advanceservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L204", "weight": 1.0}, {"source": "bx_advance_advanceservice_submit", "target": "bx_advance_advanceservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L205", "weight": 1.0}, {"source": "bx_advance_advanceservice_submit", "target": "bx_advance_advanceservice_workflow_nodes", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L213", "weight": 1.0}, {"source": "bx_advance_advanceservice_approve", "target": "bx_advance_advanceservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L223", "weight": 1.0}, {"source": "bx_advance_advanceservice_approve", "target": "bx_advance_advanceservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L224", "weight": 1.0}, {"source": "bx_advance_advanceservice_approve", "target": "bx_advance_advanceservice_workflow_nodes", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L227", "weight": 1.0}, {"source": "bx_advance_advanceservice_reject", "target": "bx_advance_advanceservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L268", "weight": 1.0}, {"source": "bx_advance_advanceservice_reject", "target": "bx_advance_advanceservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L269", "weight": 1.0}, {"source": "bx_advance_advanceservice_reject", "target": "bx_advance_advanceservice_workflow_nodes", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L272", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_approvals", "target": "bx_advance_advanceservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L303", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_approvals", "target": "bx_advance_advanceservice_workflow_nodes", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L309", "weight": 1.0}], "raw_calls": [{"caller_nid": "bx_advance_advanceservice_tenant_no", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L27"}, {"caller_nid": "bx_advance_advanceservice_tenant_no", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L27"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "join", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L97"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L97"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "and_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L100"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L116"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L117"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L118"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "parse_create_time_day_bounds", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L123"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "subquery", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L129"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L130"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L130"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L130"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L130"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "limit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L132"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "offset", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L132"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L132"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "join", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L132"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L132"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L134"}, {"caller_nid": "bx_advance_advanceservice_approved_by_me", "callee": "subquery", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L153"}, {"caller_nid": "bx_advance_advanceservice_approved_by_me", "callee": "distinct", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L153"}, {"caller_nid": "bx_advance_advanceservice_approved_by_me", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L153"}, {"caller_nid": "bx_advance_advanceservice_approved_by_me", "callee": "join", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L163"}, {"caller_nid": "bx_advance_advanceservice_approved_by_me", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L163"}, {"caller_nid": "bx_advance_advanceservice_approved_by_me", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L169"}, {"caller_nid": "bx_advance_advanceservice_approved_by_me", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L170"}, {"caller_nid": "bx_advance_advanceservice_approved_by_me", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L171"}, {"caller_nid": "bx_advance_advanceservice_approved_by_me", "callee": "parse_create_time_day_bounds", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L176"}, {"caller_nid": "bx_advance_advanceservice_approved_by_me", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L180"}, {"caller_nid": "bx_advance_advanceservice_approved_by_me", "callee": "limit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L182"}, {"caller_nid": "bx_advance_advanceservice_approved_by_me", "callee": "offset", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L182"}, {"caller_nid": "bx_advance_advanceservice_approved_by_me", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L182"}, {"caller_nid": "bx_advance_advanceservice_approved_by_me", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L182"}, {"caller_nid": "bx_advance_advanceservice_workflow_nodes", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L192"}, {"caller_nid": "bx_advance_advanceservice_workflow_nodes", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L192"}, {"caller_nid": "bx_advance_advanceservice_submit", "callee": "generate_apply_code", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L210"}, {"caller_nid": "bx_advance_advanceservice_submit", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L216"}, {"caller_nid": "bx_advance_advanceservice_approve", "callee": "BxAdvanceApproval", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L240"}, {"caller_nid": "bx_advance_advanceservice_approve", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L241"}, {"caller_nid": "bx_advance_advanceservice_approve", "callee": "now", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L249"}, {"caller_nid": "bx_advance_advanceservice_approve", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L254"}, {"caller_nid": "bx_advance_advanceservice_approve", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L261"}, {"caller_nid": "bx_advance_advanceservice_reject", "callee": "BxAdvanceApproval", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L280"}, {"caller_nid": "bx_advance_advanceservice_reject", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L281"}, {"caller_nid": "bx_advance_advanceservice_reject", "callee": "now", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L289"}, {"caller_nid": "bx_advance_advanceservice_reject", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L294"}, {"caller_nid": "bx_advance_advanceservice_reject", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L298"}, {"caller_nid": "bx_advance_advanceservice_get_approvals", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L313"}, {"caller_nid": "bx_advance_advanceservice_get_approvals", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L324"}, {"caller_nid": "bx_advance_advanceservice_get_approvals", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L326"}, {"caller_nid": "bx_advance_advanceservice_get_approvals", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L339"}, {"caller_nid": "bx_advance_advanceservice_global_status_counts", "callee": "group_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L356"}, {"caller_nid": "bx_advance_advanceservice_global_status_counts", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L356"}, {"caller_nid": "bx_advance_advanceservice_global_status_counts", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L356"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "and_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L365"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L370"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L370"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L370"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L370"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L372"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L372"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L372"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L372"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L379"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L379"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L379"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L379"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L386"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L386"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L386"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L386"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L394"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L394"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L394"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L394"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L401"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L401"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L401"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "current_month_bounds", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L406"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L408"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L408"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L408"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L414"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L414"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L414"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L414"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L421"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "join", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L421"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L421"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L421"}, {"caller_nid": "bx_advance_advanceservice_pending_approval_stats", "callee": "subquery", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L448"}, {"caller_nid": "bx_advance_advanceservice_pending_approval_stats", "callee": "join", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L449"}, {"caller_nid": "bx_advance_advanceservice_pending_approval_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L449"}, {"caller_nid": "bx_advance_advanceservice_pending_approval_stats", "callee": "and_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L452"}, {"caller_nid": "bx_advance_advanceservice_pending_approval_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L466"}, {"caller_nid": "bx_advance_advanceservice_pending_approval_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L466"}, {"caller_nid": "bx_advance_advanceservice_pending_approval_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L466"}, {"caller_nid": "bx_advance_advanceservice_pending_approval_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L466"}, {"caller_nid": "bx_advance_advanceservice_pending_approval_stats", "callee": "current_month_bounds", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L467"}, {"caller_nid": "bx_advance_advanceservice_pending_approval_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L469"}, {"caller_nid": "bx_advance_advanceservice_pending_approval_stats", "callee": "join", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L469"}, {"caller_nid": "bx_advance_advanceservice_pending_approval_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L469"}, {"caller_nid": "bx_advance_advanceservice_pending_approval_stats", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L469"}, {"caller_nid": "bx_advance_advanceservice_offset_amount_map", "callee": "group_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L482"}, {"caller_nid": "bx_advance_advanceservice_offset_amount_map", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L482"}, {"caller_nid": "bx_advance_advanceservice_offset_amount_map", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L484"}, {"caller_nid": "bx_advance_advanceservice_offset_amount_map", "callee": "in_", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L487"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/3f2e8a41f3acc0832a6554dac6a1afc8a589a915c289679f1cc553504894f609.json b/backend/graphify-out/cache/ast/3f2e8a41f3acc0832a6554dac6a1afc8a589a915c289679f1cc553504894f609.json new file mode 100644 index 000000000..09791fad9 --- /dev/null +++ b/backend/graphify-out/cache/ast/3f2e8a41f3acc0832a6554dac6a1afc8a589a915c289679f1cc553504894f609.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_init_py", "label": "__init__.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/__init__.py", "source_location": "L1"}, {"id": "bx_init_bx_health", "label": "bx_health()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/__init__.py", "source_location": "L15"}, {"id": "bx_init_rationale_1", "label": "\u62a5\u9500\uff08bx\uff09API \u8def\u7531\u805a\u5408 \u2014 REST \u98ce\u683c\uff0c\u534f\u8bae\u5bf9\u9f50 bx \u539f\u7cfb\u7edf\u3002", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/__init__.py", "source_location": "L1"}, {"id": "bx_init_rationale_16", "label": "P0 \u5065\u5eb7\u68c0\u67e5\uff1a\u9a8c\u8bc1 bx \u8def\u7531\u5df2\u6302\u8f7d\u4e14\u54cd\u5e94\u534f\u8bae\u4e3a code=0\u3002", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/__init__.py", "source_location": "L16"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_init_py", "target": "fastapi", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/__init__.py", "source_location": "L2", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_init_py", "target": "app_api_bx", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/__init__.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_init_py", "target": "app_schemas_bx_common", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/__init__.py", "source_location": "L5", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_init_py", "target": "bx_init_bx_health", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/__init__.py", "source_location": "L15", "weight": 1.0}, {"source": "bx_init_rationale_1", "target": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_init_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/__init__.py", "source_location": "L1", "weight": 1.0}, {"source": "bx_init_rationale_16", "target": "bx_init_bx_health", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/__init__.py", "source_location": "L16", "weight": 1.0}], "raw_calls": [{"caller_nid": "bx_init_bx_health", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/__init__.py", "source_location": "L17"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/42a9f75f58ed58881c277f489764089d77a76117b63c3a64644efb082f8599fe.json b/backend/graphify-out/cache/ast/42a9f75f58ed58881c277f489764089d77a76117b63c3a64644efb082f8599fe.json new file mode 100644 index 000000000..ea00aefce --- /dev/null +++ b/backend/graphify-out/cache/ast/42a9f75f58ed58881c277f489764089d77a76117b63c3a64644efb082f8599fe.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "label": "reimburse.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L1"}, {"id": "bx_reimburse_reimburseservice", "label": "ReimburseService", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L31"}, {"id": "bx_reimburse_reimburseservice_tenant_no", "label": "._tenant_no()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L33"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L33"}, {"id": "bxusercontext", "label": "BxUserContext", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L33"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L33"}, {"id": "bx_reimburse_reimburseservice_get_by_id", "label": ".get_by_id()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L37"}, {"id": "bxreimburseapply", "label": "BxReimburseApply", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L37"}, {"id": "bx_reimburse_reimburseservice_get_paged", "label": ".get_paged()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L41"}, {"id": "int", "label": "int", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L41"}, {"id": "any", "label": "Any", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L41"}, {"id": "bx_reimburse_reimburseservice_soft_delete", "label": ".soft_delete()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L51"}, {"id": "bool", "label": "bool", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L51"}, {"id": "bx_reimburse_reimburseservice_workflow_nodes", "label": "._workflow_nodes()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L58"}, {"id": "bxworkflownode", "label": "BxWorkflowNode", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L58"}, {"id": "bx_reimburse_reimburseservice_pending_approval", "label": ".pending_approval()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L71"}, {"id": "bx_reimburse_reimburseservice_approved_by_me", "label": ".approved_by_me()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L127"}, {"id": "bx_reimburse_reimburseservice_submit", "label": ".submit()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L175"}, {"id": "bx_reimburse_reimburseservice_approve", "label": ".approve()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L192"}, {"id": "bx_reimburse_reimburseservice_reject", "label": ".reject()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L237"}, {"id": "bx_reimburse_reimburseservice_approval_record_dict", "label": "._approval_record_dict()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L274"}, {"id": "bxreimburseapproval", "label": "BxReimburseApproval", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L274"}, {"id": "bx_reimburse_reimburseservice_latest_approval_per_node", "label": "._latest_approval_per_node()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L287"}, {"id": "bx_reimburse_reimburseservice_query_approvals", "label": "._query_approvals()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L304"}, {"id": "bx_reimburse_reimburseservice_get_approvals", "label": ".get_approvals()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L316"}, {"id": "bx_reimburse_reimburseservice_get_approval_history", "label": ".get_approval_history()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L350"}, {"id": "bx_reimburse_reimburseservice_create_with_details", "label": ".create_with_details()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L367"}, {"id": "bx_reimburse_reimburseservice_update_with_details", "label": ".update_with_details()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L413"}, {"id": "bx_reimburse_reimburseservice_get_details", "label": ".get_details()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L466"}, {"id": "bxreimbursedetail", "label": "BxReimburseDetail", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L466"}, {"id": "bx_reimburse_reimburseservice_out_rows_with_attachment_counts", "label": ".out_rows_with_attachment_counts()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L479"}, {"id": "reimburseapplyout", "label": "ReimburseApplyOut", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L479"}, {"id": "bx_reimburse_reimburseservice_out_one_with_attachment_counts", "label": ".out_one_with_attachment_counts()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L496"}, {"id": "bx_reimburse_reimburseservice_build_apply_out_with_details", "label": ".build_apply_out_with_details()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L502"}, {"id": "bx_reimburse_reimburseservice_global_status_counts", "label": ".global_status_counts()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L511"}, {"id": "bx_reimburse_reimburseservice_my_apply_stats", "label": ".my_apply_stats()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L521"}, {"id": "bx_reimburse_reimburseservice_pending_approval_stats", "label": ".pending_approval_stats()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L580"}, {"id": "bx_reimburse_reimburseservice_pay", "label": ".pay()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L611"}, {"id": "float", "label": "float", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L611"}, {"id": "bx_reimburse_reimburseservice_offset", "label": ".offset()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L634"}, {"id": "bx_reimburse_reimburseservice_batch_offset", "label": ".batch_offset()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L665"}, {"id": "bx_reimburse_reimburseservice_finance_payment_stats", "label": ".finance_payment_stats()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L720"}, {"id": "bx_reimburse_rationale_290", "label": "\u540c\u4e00\u8282\u70b9\u591a\u6b21\u5ba1\u6279\u65f6\uff0c\u53d6 approval_time \u6700\u65b0\u7684\u4e00\u6761\u4f5c\u4e3a\u5f53\u524d\u8282\u70b9\u72b6\u6001\u3002", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L290"}, {"id": "bx_reimburse_rationale_351", "label": "\u8fd4\u56de\u5168\u90e8\u5ba1\u6279\u52a8\u4f5c\uff0c\u6309\u65f6\u95f4\u6b63\u5e8f\u6392\u5217\uff0c\u7528\u4e8e\u5c55\u793a\u5b8c\u6574\u5ba1\u6279\u5386\u53f2\u3002", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L351"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "decimal", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L5", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "sqlalchemy", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L7", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L8", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "app_core_bx_auth", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L10", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "app_core_tenant_context", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L11", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "app_core_utils", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L12", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "app_models_bx_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L13", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "app_schemas_bx_reimburse", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L21", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "app_services_bx_approval_cycle", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L22", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "app_services_bx_attachment", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L23", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "app_services_bx_base", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L24", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "app_utils_bx_codegen", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L25", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "app_utils_bx_date_range", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L26", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "bx_reimburse_reimburseservice", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L31", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_tenant_no", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L33", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_tenant_no", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L33", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_tenant_no", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L33", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_tenant_no", "target": "str", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L33", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_get_by_id", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L37", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_by_id", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L37", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_by_id", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L37", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_by_id", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L37", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_by_id", "target": "bxreimburseapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L37", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_get_paged", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L41", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_paged", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L41", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_paged", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L41", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_paged", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L41", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_paged", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L41", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_paged", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L41", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_paged", "target": "bxreimburseapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L41", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_paged", "target": "int", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L41", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_soft_delete", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L51", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_soft_delete", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L51", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_soft_delete", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L51", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_soft_delete", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L51", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_soft_delete", "target": "bool", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L51", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_workflow_nodes", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L58", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_workflow_nodes", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L58", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_workflow_nodes", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L58", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_workflow_nodes", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L58", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_workflow_nodes", "target": "bxworkflownode", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L58", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_pending_approval", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L71", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pending_approval", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L71", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pending_approval", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L71", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pending_approval", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L71", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pending_approval", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L71", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pending_approval", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L71", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pending_approval", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L71", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pending_approval", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L71", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pending_approval", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L71", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_approved_by_me", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L127", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approved_by_me", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L127", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approved_by_me", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L127", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approved_by_me", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L127", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approved_by_me", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L127", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approved_by_me", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L127", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approved_by_me", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L127", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approved_by_me", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L127", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approved_by_me", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L127", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_submit", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L175", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_submit", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L175", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_submit", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L175", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_submit", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L175", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_submit", "target": "bxreimburseapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L175", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_approve", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L192", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approve", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L192", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approve", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L192", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approve", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L192", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approve", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L192", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approve", "target": "bxreimburseapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L192", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_reject", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L237", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_reject", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L237", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_reject", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L237", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_reject", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L237", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_reject", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L237", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_reject", "target": "bxreimburseapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L237", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_approval_record_dict", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L274", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approval_record_dict", "target": "bxreimburseapproval", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L274", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approval_record_dict", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L274", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approval_record_dict", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L274", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approval_record_dict", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L274", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_latest_approval_per_node", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L287", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_latest_approval_per_node", "target": "bxreimburseapproval", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L287", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_latest_approval_per_node", "target": "int", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L287", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_latest_approval_per_node", "target": "bxreimburseapproval", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L287", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_query_approvals", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L304", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_query_approvals", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L304", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_query_approvals", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L304", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_query_approvals", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L304", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_query_approvals", "target": "bxreimburseapproval", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L304", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_get_approvals", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L316", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approvals", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L316", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approvals", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L316", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approvals", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L316", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approvals", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L316", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approvals", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L316", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_get_approval_history", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L350", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approval_history", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L350", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approval_history", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L350", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approval_history", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L350", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approval_history", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L350", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approval_history", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L350", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_create_with_details", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L367", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_create_with_details", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L367", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_create_with_details", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L367", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_create_with_details", "target": "bxreimburseapply", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L367", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_update_with_details", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L413", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_update_with_details", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L413", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_update_with_details", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L413", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_update_with_details", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L413", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_update_with_details", "target": "bxreimburseapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L413", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_get_details", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L466", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_details", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L466", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_details", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L466", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_details", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L466", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_details", "target": "bxreimbursedetail", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L466", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_out_rows_with_attachment_counts", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L479", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_out_rows_with_attachment_counts", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L479", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_out_rows_with_attachment_counts", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L479", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_out_rows_with_attachment_counts", "target": "bxreimburseapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L479", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_out_rows_with_attachment_counts", "target": "reimburseapplyout", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L479", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_out_one_with_attachment_counts", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L496", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_out_one_with_attachment_counts", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L496", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_out_one_with_attachment_counts", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L496", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_out_one_with_attachment_counts", "target": "bxreimburseapply", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L496", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_out_one_with_attachment_counts", "target": "reimburseapplyout", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L496", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_build_apply_out_with_details", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L502", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_build_apply_out_with_details", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L502", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_build_apply_out_with_details", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L502", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_build_apply_out_with_details", "target": "bxreimburseapply", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L502", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_build_apply_out_with_details", "target": "reimburseapplyout", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L502", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_global_status_counts", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L511", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_global_status_counts", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L511", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_global_status_counts", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L511", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_global_status_counts", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L511", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_global_status_counts", "target": "int", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L511", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_my_apply_stats", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L521", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_my_apply_stats", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L521", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_my_apply_stats", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L521", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_my_apply_stats", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L521", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_pending_approval_stats", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L580", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pending_approval_stats", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L580", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pending_approval_stats", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L580", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pending_approval_stats", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L580", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_pay", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L611", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pay", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L611", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pay", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L611", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pay", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L611", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pay", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L611", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pay", "target": "float", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L611", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pay", "target": "bxreimburseapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L611", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_offset", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L634", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_offset", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L634", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_offset", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L634", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_offset", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L634", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_offset", "target": "float", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L634", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_offset", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L634", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_offset", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L634", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_offset", "target": "bxreimburseapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L634", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_batch_offset", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L665", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_batch_offset", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L665", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_batch_offset", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L665", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_batch_offset", "target": "float", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L665", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_batch_offset", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L665", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_batch_offset", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L665", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_batch_offset", "target": "bxreimburseapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L665", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_finance_payment_stats", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L720", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_finance_payment_stats", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L720", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_finance_payment_stats", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L720", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_soft_delete", "target": "bx_reimburse_reimburseservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L52", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pending_approval", "target": "bx_reimburse_reimburseservice_offset", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L117", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approved_by_me", "target": "bx_reimburse_reimburseservice_offset", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L167", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_submit", "target": "bx_reimburse_reimburseservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L176", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_submit", "target": "bx_reimburse_reimburseservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L177", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_submit", "target": "bx_reimburse_reimburseservice_workflow_nodes", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L185", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approve", "target": "bx_reimburse_reimburseservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L195", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approve", "target": "bx_reimburse_reimburseservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L196", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approve", "target": "bx_reimburse_reimburseservice_workflow_nodes", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L199", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approve", "target": "bxreimburseapproval", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L212", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_reject", "target": "bx_reimburse_reimburseservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L240", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_reject", "target": "bx_reimburse_reimburseservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L241", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_reject", "target": "bx_reimburse_reimburseservice_workflow_nodes", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L244", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_reject", "target": "bxreimburseapproval", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L252", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approvals", "target": "bx_reimburse_reimburseservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L317", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approvals", "target": "bx_reimburse_reimburseservice_workflow_nodes", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L323", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approvals", "target": "bx_reimburse_reimburseservice_query_approvals", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L326", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approvals", "target": "bx_reimburse_reimburseservice_latest_approval_per_node", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L328", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approvals", "target": "bx_reimburse_reimburseservice_approval_record_dict", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L333", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approval_history", "target": "bx_reimburse_reimburseservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L352", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approval_history", "target": "bx_reimburse_reimburseservice_approval_record_dict", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L364", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_create_with_details", "target": "bx_reimburse_reimburseservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L374", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_create_with_details", "target": "bxreimburseapply", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L380", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_create_with_details", "target": "bxreimbursedetail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L397", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_update_with_details", "target": "bx_reimburse_reimburseservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L421", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_update_with_details", "target": "bx_reimburse_reimburseservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L422", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_update_with_details", "target": "bxreimbursedetail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L440", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_out_one_with_attachment_counts", "target": "bx_reimburse_reimburseservice_out_rows_with_attachment_counts", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L499", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_build_apply_out_with_details", "target": "bx_reimburse_reimburseservice_out_one_with_attachment_counts", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L505", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_build_apply_out_with_details", "target": "bx_reimburse_reimburseservice_get_details", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L506", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pay", "target": "bx_reimburse_reimburseservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L618", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pay", "target": "bx_reimburse_reimburseservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L619", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_offset", "target": "bx_reimburse_reimburseservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L642", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_offset", "target": "bx_reimburse_reimburseservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L643", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_batch_offset", "target": "bx_reimburse_reimburseservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L673", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_batch_offset", "target": "bx_reimburse_reimburseservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L674", "weight": 1.0}, {"source": "bx_reimburse_rationale_290", "target": "bx_reimburse_reimburseservice_latest_approval_per_node", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L290", "weight": 1.0}, {"source": "bx_reimburse_rationale_351", "target": "bx_reimburse_reimburseservice_get_approval_history", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L351", "weight": 1.0}], "raw_calls": [{"caller_nid": "bx_reimburse_reimburseservice_tenant_no", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L34"}, {"caller_nid": "bx_reimburse_reimburseservice_tenant_no", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L34"}, {"caller_nid": "bx_reimburse_reimburseservice_workflow_nodes", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L60"}, {"caller_nid": "bx_reimburse_reimburseservice_workflow_nodes", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L60"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "join", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L82"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L82"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "and_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L85"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L101"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L102"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L103"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "parse_create_time_day_bounds", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L108"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "subquery", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L114"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L115"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L115"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L115"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L115"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "limit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L117"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L117"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "join", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L117"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L117"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L119"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "subquery", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L138"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "distinct", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L138"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L138"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "join", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L148"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L148"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L154"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L155"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L156"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "parse_create_time_day_bounds", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L161"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L165"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "limit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L167"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L167"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L167"}, {"caller_nid": "bx_reimburse_reimburseservice_submit", "callee": "generate_apply_code", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L182"}, {"caller_nid": "bx_reimburse_reimburseservice_submit", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L188"}, {"caller_nid": "bx_reimburse_reimburseservice_approve", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L213"}, {"caller_nid": "bx_reimburse_reimburseservice_approve", "callee": "now", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L221"}, {"caller_nid": "bx_reimburse_reimburseservice_approve", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L226"}, {"caller_nid": "bx_reimburse_reimburseservice_approve", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L233"}, {"caller_nid": "bx_reimburse_reimburseservice_reject", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L253"}, {"caller_nid": "bx_reimburse_reimburseservice_reject", "callee": "now", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L261"}, {"caller_nid": "bx_reimburse_reimburseservice_reject", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L266"}, {"caller_nid": "bx_reimburse_reimburseservice_reject", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L270"}, {"caller_nid": "bx_reimburse_reimburseservice_latest_approval_per_node", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L293"}, {"caller_nid": "bx_reimburse_reimburseservice_query_approvals", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L306"}, {"caller_nid": "bx_reimburse_reimburseservice_get_approvals", "callee": "filter_current_cycle_approvals", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L327"}, {"caller_nid": "bx_reimburse_reimburseservice_get_approvals", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L331"}, {"caller_nid": "bx_reimburse_reimburseservice_get_approvals", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L333"}, {"caller_nid": "bx_reimburse_reimburseservice_get_approvals", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L335"}, {"caller_nid": "bx_reimburse_reimburseservice_get_approval_history", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L355"}, {"caller_nid": "bx_reimburse_reimburseservice_get_approval_history", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L355"}, {"caller_nid": "bx_reimburse_reimburseservice_get_approval_history", "callee": "asc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L361"}, {"caller_nid": "bx_reimburse_reimburseservice_get_approval_history", "callee": "asc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L361"}, {"caller_nid": "bx_reimburse_reimburseservice_create_with_details", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L376"}, {"caller_nid": "bx_reimburse_reimburseservice_create_with_details", "callee": "pop", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L377"}, {"caller_nid": "bx_reimburse_reimburseservice_create_with_details", "callee": "generate_title", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L377"}, {"caller_nid": "bx_reimburse_reimburseservice_create_with_details", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L381"}, {"caller_nid": "bx_reimburse_reimburseservice_create_with_details", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L384"}, {"caller_nid": "bx_reimburse_reimburseservice_create_with_details", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L385"}, {"caller_nid": "bx_reimburse_reimburseservice_create_with_details", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L393"}, {"caller_nid": "bx_reimburse_reimburseservice_create_with_details", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L394"}, {"caller_nid": "bx_reimburse_reimburseservice_create_with_details", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L398"}, {"caller_nid": "bx_reimburse_reimburseservice_create_with_details", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L403"}, {"caller_nid": "bx_reimburse_reimburseservice_create_with_details", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L408"}, {"caller_nid": "bx_reimburse_reimburseservice_create_with_details", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L409"}, {"caller_nid": "bx_reimburse_reimburseservice_update_with_details", "callee": "items", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L426"}, {"caller_nid": "bx_reimburse_reimburseservice_update_with_details", "callee": "update", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L430"}, {"caller_nid": "bx_reimburse_reimburseservice_update_with_details", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L430"}, {"caller_nid": "bx_reimburse_reimburseservice_update_with_details", "callee": "Decimal", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L436"}, {"caller_nid": "bx_reimburse_reimburseservice_update_with_details", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L441"}, {"caller_nid": "bx_reimburse_reimburseservice_update_with_details", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L446"}, {"caller_nid": "bx_reimburse_reimburseservice_update_with_details", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L451"}, {"caller_nid": "bx_reimburse_reimburseservice_update_with_details", "callee": "Decimal", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L452"}, {"caller_nid": "bx_reimburse_reimburseservice_update_with_details", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L462"}, {"caller_nid": "bx_reimburse_reimburseservice_get_details", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L468"}, {"caller_nid": "bx_reimburse_reimburseservice_get_details", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L468"}, {"caller_nid": "bx_reimburse_reimburseservice_out_rows_with_attachment_counts", "callee": "count_invoice_attach_by_biz_ids", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L485"}, {"caller_nid": "bx_reimburse_reimburseservice_out_rows_with_attachment_counts", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L490"}, {"caller_nid": "bx_reimburse_reimburseservice_out_rows_with_attachment_counts", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L491"}, {"caller_nid": "bx_reimburse_reimburseservice_out_rows_with_attachment_counts", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L492"}, {"caller_nid": "bx_reimburse_reimburseservice_out_rows_with_attachment_counts", "callee": "model_copy", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L492"}, {"caller_nid": "bx_reimburse_reimburseservice_build_apply_out_with_details", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L507"}, {"caller_nid": "bx_reimburse_reimburseservice_global_status_counts", "callee": "group_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L513"}, {"caller_nid": "bx_reimburse_reimburseservice_global_status_counts", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L513"}, {"caller_nid": "bx_reimburse_reimburseservice_global_status_counts", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L513"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "and_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L522"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L527"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L527"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L527"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L527"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L529"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L529"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L529"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L529"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L536"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L536"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L536"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L536"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "in_", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L538"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L543"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L543"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L543"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L543"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L550"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L550"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L550"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "in_", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L551"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "current_month_bounds", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L555"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L557"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L557"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L557"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L563"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L563"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L563"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L563"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval_stats", "callee": "subquery", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L581"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval_stats", "callee": "join", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L582"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L582"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval_stats", "callee": "and_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L585"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L599"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L599"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L599"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L599"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval_stats", "callee": "current_month_bounds", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L600"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L602"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval_stats", "callee": "join", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L602"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L602"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval_stats", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L602"}, {"caller_nid": "bx_reimburse_reimburseservice_pay", "callee": "now", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L625"}, {"caller_nid": "bx_reimburse_reimburseservice_pay", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L630"}, {"caller_nid": "bx_reimburse_reimburseservice_offset", "callee": "BxReimburseOffset", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L650"}, {"caller_nid": "bx_reimburse_reimburseservice_offset", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L651"}, {"caller_nid": "bx_reimburse_reimburseservice_offset", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L660"}, {"caller_nid": "bx_reimburse_reimburseservice_offset", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L661"}, {"caller_nid": "bx_reimburse_reimburseservice_batch_offset", "callee": "BxReimburseOffset", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L688"}, {"caller_nid": "bx_reimburse_reimburseservice_batch_offset", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L689"}, {"caller_nid": "bx_reimburse_reimburseservice_batch_offset", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L698"}, {"caller_nid": "bx_reimburse_reimburseservice_batch_offset", "callee": "now", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L706"}, {"caller_nid": "bx_reimburse_reimburseservice_batch_offset", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L716"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "and_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L721"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L723"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L723"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L723"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L723"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "isnot", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L729"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L731"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L731"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L731"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L731"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L733"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "and_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L735"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "is_", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L737"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L738"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L742"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L742"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L742"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L742"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "current_month_bounds", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L744"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L746"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L746"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L746"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L752"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L752"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L752"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/4b280dc87c34ea2fea473469ec47c4ac00e6ab9c89fb74ecdfb89a730dd40f0a.json b/backend/graphify-out/cache/ast/4b280dc87c34ea2fea473469ec47c4ac00e6ab9c89fb74ecdfb89a730dd40f0a.json new file mode 100644 index 000000000..443f21103 --- /dev/null +++ b/backend/graphify-out/cache/ast/4b280dc87c34ea2fea473469ec47c4ac00e6ab9c89fb74ecdfb89a730dd40f0a.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "label": "reimburse.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L1"}, {"id": "bx_reimburse_tenant", "label": "_tenant()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L29"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L29"}, {"id": "bxusercontext", "label": "BxUserContext", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L29"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L29"}, {"id": "bx_reimburse_build_details_data", "label": "_build_details_data()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L33"}, {"id": "bx_reimburse_get_generated_title", "label": "get_generated_title()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L54"}, {"id": "bx_reimburse_list_reimburses", "label": "list_reimburses()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L64"}, {"id": "int", "label": "int", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L64"}, {"id": "bx_reimburse_my_reimburses", "label": "my_reimburses()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L101"}, {"id": "bx_reimburse_my_reimburse_stats", "label": "my_reimburse_stats()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L132"}, {"id": "bx_reimburse_reimburse_status_counts", "label": "reimburse_status_counts()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L142"}, {"id": "bx_reimburse_pending_approval", "label": "pending_approval()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L151"}, {"id": "bx_reimburse_pending_approval_stats", "label": "pending_approval_stats()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L177"}, {"id": "bx_reimburse_approved_by_me", "label": "approved_by_me()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L187"}, {"id": "bx_reimburse_get_reimburse", "label": "get_reimburse()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L213"}, {"id": "bx_reimburse_get_approvals", "label": "get_approvals()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L227"}, {"id": "bx_reimburse_create_reimburse", "label": "create_reimburse()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L240"}, {"id": "reimburseapplycreate", "label": "ReimburseApplyCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L240"}, {"id": "bx_reimburse_update_reimburse", "label": "update_reimburse()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L273"}, {"id": "reimburseapplyupdate", "label": "ReimburseApplyUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L273"}, {"id": "bx_reimburse_submit_reimburse", "label": "submit_reimburse()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L298"}, {"id": "bx_reimburse_approve_reimburse", "label": "approve_reimburse()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L313"}, {"id": "reimburseapprovalcreate", "label": "ReimburseApprovalCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L313"}, {"id": "bx_reimburse_reject_reimburse", "label": "reject_reimburse()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L329"}, {"id": "bx_reimburse_delete_reimburse", "label": "delete_reimburse()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L345"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L1", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "fastapi", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "sqlalchemy", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L5", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "app_core_bx_auth", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L7", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "app_core_database", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L8", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "app_core_tenant_context", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L9", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "app_models_bx_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L10", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "app_schemas_bx_common", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L11", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "app_schemas_bx_reimburse", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L12", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "app_services_bx_expense_item", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L21", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "app_services_bx_reimburse", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L22", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "app_utils_bx_codegen", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L23", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "app_utils_bx_date_range", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L24", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "bx_reimburse_tenant", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L29", "weight": 1.0}, {"source": "bx_reimburse_tenant", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L29", "weight": 1.0}, {"source": "bx_reimburse_tenant", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L29", "weight": 1.0}, {"source": "bx_reimburse_tenant", "target": "str", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L29", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "bx_reimburse_build_details_data", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L33", "weight": 1.0}, {"source": "bx_reimburse_build_details_data", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L33", "weight": 1.0}, {"source": "bx_reimburse_build_details_data", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L33", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "bx_reimburse_get_generated_title", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L54", "weight": 1.0}, {"source": "bx_reimburse_get_generated_title", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L54", "weight": 1.0}, {"source": "bx_reimburse_get_generated_title", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L54", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "bx_reimburse_list_reimburses", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L64", "weight": 1.0}, {"source": "bx_reimburse_list_reimburses", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L64", "weight": 1.0}, {"source": "bx_reimburse_list_reimburses", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L64", "weight": 1.0}, {"source": "bx_reimburse_list_reimburses", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L64", "weight": 1.0}, {"source": "bx_reimburse_list_reimburses", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L64", "weight": 1.0}, {"source": "bx_reimburse_list_reimburses", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L64", "weight": 1.0}, {"source": "bx_reimburse_list_reimburses", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L64", "weight": 1.0}, {"source": "bx_reimburse_list_reimburses", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L64", "weight": 1.0}, {"source": "bx_reimburse_list_reimburses", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L64", "weight": 1.0}, {"source": "bx_reimburse_list_reimburses", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L64", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "bx_reimburse_my_reimburses", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L101", "weight": 1.0}, {"source": "bx_reimburse_my_reimburses", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L101", "weight": 1.0}, {"source": "bx_reimburse_my_reimburses", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L101", "weight": 1.0}, {"source": "bx_reimburse_my_reimburses", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L101", "weight": 1.0}, {"source": "bx_reimburse_my_reimburses", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L101", "weight": 1.0}, {"source": "bx_reimburse_my_reimburses", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L101", "weight": 1.0}, {"source": "bx_reimburse_my_reimburses", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L101", "weight": 1.0}, {"source": "bx_reimburse_my_reimburses", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L101", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "bx_reimburse_my_reimburse_stats", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L132", "weight": 1.0}, {"source": "bx_reimburse_my_reimburse_stats", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L132", "weight": 1.0}, {"source": "bx_reimburse_my_reimburse_stats", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L132", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "bx_reimburse_reimburse_status_counts", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L142", "weight": 1.0}, {"source": "bx_reimburse_reimburse_status_counts", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L142", "weight": 1.0}, {"source": "bx_reimburse_reimburse_status_counts", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L142", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "bx_reimburse_pending_approval", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L151", "weight": 1.0}, {"source": "bx_reimburse_pending_approval", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L151", "weight": 1.0}, {"source": "bx_reimburse_pending_approval", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L151", "weight": 1.0}, {"source": "bx_reimburse_pending_approval", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L151", "weight": 1.0}, {"source": "bx_reimburse_pending_approval", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L151", "weight": 1.0}, {"source": "bx_reimburse_pending_approval", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L151", "weight": 1.0}, {"source": "bx_reimburse_pending_approval", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L151", "weight": 1.0}, {"source": "bx_reimburse_pending_approval", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L151", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "bx_reimburse_pending_approval_stats", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L177", "weight": 1.0}, {"source": "bx_reimburse_pending_approval_stats", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L177", "weight": 1.0}, {"source": "bx_reimburse_pending_approval_stats", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L177", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "bx_reimburse_approved_by_me", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L187", "weight": 1.0}, {"source": "bx_reimburse_approved_by_me", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L187", "weight": 1.0}, {"source": "bx_reimburse_approved_by_me", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L187", "weight": 1.0}, {"source": "bx_reimburse_approved_by_me", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L187", "weight": 1.0}, {"source": "bx_reimburse_approved_by_me", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L187", "weight": 1.0}, {"source": "bx_reimburse_approved_by_me", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L187", "weight": 1.0}, {"source": "bx_reimburse_approved_by_me", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L187", "weight": 1.0}, {"source": "bx_reimburse_approved_by_me", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L187", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "bx_reimburse_get_reimburse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L213", "weight": 1.0}, {"source": "bx_reimburse_get_reimburse", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L213", "weight": 1.0}, {"source": "bx_reimburse_get_reimburse", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L213", "weight": 1.0}, {"source": "bx_reimburse_get_reimburse", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L213", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "bx_reimburse_get_approvals", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L227", "weight": 1.0}, {"source": "bx_reimburse_get_approvals", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L227", "weight": 1.0}, {"source": "bx_reimburse_get_approvals", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L227", "weight": 1.0}, {"source": "bx_reimburse_get_approvals", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L227", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "bx_reimburse_create_reimburse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L240", "weight": 1.0}, {"source": "bx_reimburse_create_reimburse", "target": "reimburseapplycreate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L240", "weight": 1.0}, {"source": "bx_reimburse_create_reimburse", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L240", "weight": 1.0}, {"source": "bx_reimburse_create_reimburse", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L240", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "bx_reimburse_update_reimburse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L273", "weight": 1.0}, {"source": "bx_reimburse_update_reimburse", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L273", "weight": 1.0}, {"source": "bx_reimburse_update_reimburse", "target": "reimburseapplyupdate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L273", "weight": 1.0}, {"source": "bx_reimburse_update_reimburse", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L273", "weight": 1.0}, {"source": "bx_reimburse_update_reimburse", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L273", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "bx_reimburse_submit_reimburse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L298", "weight": 1.0}, {"source": "bx_reimburse_submit_reimburse", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L298", "weight": 1.0}, {"source": "bx_reimburse_submit_reimburse", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L298", "weight": 1.0}, {"source": "bx_reimburse_submit_reimburse", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L298", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "bx_reimburse_approve_reimburse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L313", "weight": 1.0}, {"source": "bx_reimburse_approve_reimburse", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L313", "weight": 1.0}, {"source": "bx_reimburse_approve_reimburse", "target": "reimburseapprovalcreate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L313", "weight": 1.0}, {"source": "bx_reimburse_approve_reimburse", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L313", "weight": 1.0}, {"source": "bx_reimburse_approve_reimburse", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L313", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "bx_reimburse_reject_reimburse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L329", "weight": 1.0}, {"source": "bx_reimburse_reject_reimburse", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L329", "weight": 1.0}, {"source": "bx_reimburse_reject_reimburse", "target": "reimburseapprovalcreate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L329", "weight": 1.0}, {"source": "bx_reimburse_reject_reimburse", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L329", "weight": 1.0}, {"source": "bx_reimburse_reject_reimburse", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L329", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "bx_reimburse_delete_reimburse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L345", "weight": 1.0}, {"source": "bx_reimburse_delete_reimburse", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L345", "weight": 1.0}, {"source": "bx_reimburse_delete_reimburse", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L345", "weight": 1.0}, {"source": "bx_reimburse_delete_reimburse", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L345", "weight": 1.0}, {"source": "bx_reimburse_get_generated_title", "target": "bx_reimburse_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L58", "weight": 1.0}, {"source": "bx_reimburse_list_reimburses", "target": "bx_reimburse_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L75", "weight": 1.0}, {"source": "bx_reimburse_my_reimburses", "target": "bx_reimburse_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L110", "weight": 1.0}, {"source": "bx_reimburse_my_reimburse_stats", "target": "bx_reimburse_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L136", "weight": 1.0}, {"source": "bx_reimburse_reimburse_status_counts", "target": "bx_reimburse_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L146", "weight": 1.0}, {"source": "bx_reimburse_pending_approval", "target": "bx_reimburse_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L160", "weight": 1.0}, {"source": "bx_reimburse_pending_approval_stats", "target": "bx_reimburse_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L181", "weight": 1.0}, {"source": "bx_reimburse_approved_by_me", "target": "bx_reimburse_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L196", "weight": 1.0}, {"source": "bx_reimburse_get_reimburse", "target": "bx_reimburse_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L218", "weight": 1.0}, {"source": "bx_reimburse_get_approvals", "target": "bx_reimburse_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L232", "weight": 1.0}, {"source": "bx_reimburse_create_reimburse", "target": "bx_reimburse_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L245", "weight": 1.0}, {"source": "bx_reimburse_create_reimburse", "target": "bx_reimburse_build_details_data", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L246", "weight": 1.0}, {"source": "bx_reimburse_update_reimburse", "target": "bx_reimburse_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L279", "weight": 1.0}, {"source": "bx_reimburse_update_reimburse", "target": "bx_reimburse_build_details_data", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L282", "weight": 1.0}, {"source": "bx_reimburse_submit_reimburse", "target": "bx_reimburse_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L303", "weight": 1.0}, {"source": "bx_reimburse_approve_reimburse", "target": "bx_reimburse_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L319", "weight": 1.0}, {"source": "bx_reimburse_reject_reimburse", "target": "bx_reimburse_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L335", "weight": 1.0}, {"source": "bx_reimburse_delete_reimburse", "target": "bx_reimburse_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L350", "weight": 1.0}], "raw_calls": [{"caller_nid": "bx_reimburse_tenant", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L30"}, {"caller_nid": "bx_reimburse_tenant", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L30"}, {"caller_nid": "bx_reimburse_build_details_data", "callee": "get_by_id", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L36"}, {"caller_nid": "bx_reimburse_build_details_data", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L38"}, {"caller_nid": "bx_reimburse_build_details_data", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L42"}, {"caller_nid": "bx_reimburse_get_generated_title", "callee": "generate_title", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L59"}, {"caller_nid": "bx_reimburse_get_generated_title", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L60"}, {"caller_nid": "bx_reimburse_list_reimburses", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L78"}, {"caller_nid": "bx_reimburse_list_reimburses", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L80"}, {"caller_nid": "bx_reimburse_list_reimburses", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L81"}, {"caller_nid": "bx_reimburse_list_reimburses", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L82"}, {"caller_nid": "bx_reimburse_list_reimburses", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L83"}, {"caller_nid": "bx_reimburse_list_reimburses", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L87"}, {"caller_nid": "bx_reimburse_list_reimburses", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L87"}, {"caller_nid": "bx_reimburse_list_reimburses", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L89"}, {"caller_nid": "bx_reimburse_list_reimburses", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L89"}, {"caller_nid": "bx_reimburse_list_reimburses", "callee": "parse_create_time_day_bounds", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L90"}, {"caller_nid": "bx_reimburse_list_reimburses", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L93"}, {"caller_nid": "bx_reimburse_list_reimburses", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L94"}, {"caller_nid": "bx_reimburse_list_reimburses", "callee": "get_paged", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L95"}, {"caller_nid": "bx_reimburse_list_reimburses", "callee": "out_rows_with_attachment_counts", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L96"}, {"caller_nid": "bx_reimburse_list_reimburses", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L97"}, {"caller_nid": "bx_reimburse_list_reimburses", "callee": "PagedData", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L97"}, {"caller_nid": "bx_reimburse_my_reimburses", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L113"}, {"caller_nid": "bx_reimburse_my_reimburses", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L115"}, {"caller_nid": "bx_reimburse_my_reimburses", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L116"}, {"caller_nid": "bx_reimburse_my_reimburses", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L117"}, {"caller_nid": "bx_reimburse_my_reimburses", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L118"}, {"caller_nid": "bx_reimburse_my_reimburses", "callee": "parse_create_time_day_bounds", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L121"}, {"caller_nid": "bx_reimburse_my_reimburses", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L124"}, {"caller_nid": "bx_reimburse_my_reimburses", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L125"}, {"caller_nid": "bx_reimburse_my_reimburses", "callee": "get_paged", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L126"}, {"caller_nid": "bx_reimburse_my_reimburses", "callee": "out_rows_with_attachment_counts", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L127"}, {"caller_nid": "bx_reimburse_my_reimburses", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L128"}, {"caller_nid": "bx_reimburse_my_reimburses", "callee": "PagedData", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L128"}, {"caller_nid": "bx_reimburse_my_reimburse_stats", "callee": "my_apply_stats", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L137"}, {"caller_nid": "bx_reimburse_my_reimburse_stats", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L138"}, {"caller_nid": "bx_reimburse_my_reimburse_stats", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L138"}, {"caller_nid": "bx_reimburse_reimburse_status_counts", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L147"}, {"caller_nid": "bx_reimburse_reimburse_status_counts", "callee": "global_status_counts", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L147"}, {"caller_nid": "bx_reimburse_pending_approval", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L161"}, {"caller_nid": "bx_reimburse_pending_approval", "callee": "out_rows_with_attachment_counts", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L172"}, {"caller_nid": "bx_reimburse_pending_approval", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L173"}, {"caller_nid": "bx_reimburse_pending_approval", "callee": "PagedData", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L173"}, {"caller_nid": "bx_reimburse_pending_approval_stats", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L183"}, {"caller_nid": "bx_reimburse_pending_approval_stats", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L183"}, {"caller_nid": "bx_reimburse_approved_by_me", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L197"}, {"caller_nid": "bx_reimburse_approved_by_me", "callee": "out_rows_with_attachment_counts", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L208"}, {"caller_nid": "bx_reimburse_approved_by_me", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L209"}, {"caller_nid": "bx_reimburse_approved_by_me", "callee": "PagedData", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L209"}, {"caller_nid": "bx_reimburse_get_reimburse", "callee": "get_by_id", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L219"}, {"caller_nid": "bx_reimburse_get_reimburse", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L221"}, {"caller_nid": "bx_reimburse_get_reimburse", "callee": "build_apply_out_with_details", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L222"}, {"caller_nid": "bx_reimburse_get_reimburse", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L223"}, {"caller_nid": "bx_reimburse_get_approvals", "callee": "get_by_id", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L233"}, {"caller_nid": "bx_reimburse_get_approvals", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L234"}, {"caller_nid": "bx_reimburse_get_approvals", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L236"}, {"caller_nid": "bx_reimburse_get_approvals", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L236"}, {"caller_nid": "bx_reimburse_create_reimburse", "callee": "generate_apply_code", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L248"}, {"caller_nid": "bx_reimburse_create_reimburse", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L255"}, {"caller_nid": "bx_reimburse_create_reimburse", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L255"}, {"caller_nid": "bx_reimburse_create_reimburse", "callee": "create_with_details", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L265"}, {"caller_nid": "bx_reimburse_create_reimburse", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L266"}, {"caller_nid": "bx_reimburse_create_reimburse", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L267"}, {"caller_nid": "bx_reimburse_create_reimburse", "callee": "build_apply_out_with_details", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L268"}, {"caller_nid": "bx_reimburse_create_reimburse", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L269"}, {"caller_nid": "bx_reimburse_update_reimburse", "callee": "update_with_details", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L286"}, {"caller_nid": "bx_reimburse_update_reimburse", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L290"}, {"caller_nid": "bx_reimburse_update_reimburse", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L291"}, {"caller_nid": "bx_reimburse_update_reimburse", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L292"}, {"caller_nid": "bx_reimburse_update_reimburse", "callee": "build_apply_out_with_details", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L293"}, {"caller_nid": "bx_reimburse_update_reimburse", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L294"}, {"caller_nid": "bx_reimburse_submit_reimburse", "callee": "submit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L304"}, {"caller_nid": "bx_reimburse_submit_reimburse", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L306"}, {"caller_nid": "bx_reimburse_submit_reimburse", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L307"}, {"caller_nid": "bx_reimburse_submit_reimburse", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L308"}, {"caller_nid": "bx_reimburse_submit_reimburse", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L309"}, {"caller_nid": "bx_reimburse_submit_reimburse", "callee": "out_one_with_attachment_counts", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L309"}, {"caller_nid": "bx_reimburse_approve_reimburse", "callee": "approve", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L320"}, {"caller_nid": "bx_reimburse_approve_reimburse", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L322"}, {"caller_nid": "bx_reimburse_approve_reimburse", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L323"}, {"caller_nid": "bx_reimburse_approve_reimburse", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L324"}, {"caller_nid": "bx_reimburse_approve_reimburse", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L325"}, {"caller_nid": "bx_reimburse_approve_reimburse", "callee": "out_one_with_attachment_counts", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L325"}, {"caller_nid": "bx_reimburse_reject_reimburse", "callee": "reject", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L336"}, {"caller_nid": "bx_reimburse_reject_reimburse", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L338"}, {"caller_nid": "bx_reimburse_reject_reimburse", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L339"}, {"caller_nid": "bx_reimburse_reject_reimburse", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L340"}, {"caller_nid": "bx_reimburse_reject_reimburse", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L341"}, {"caller_nid": "bx_reimburse_reject_reimburse", "callee": "out_one_with_attachment_counts", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L341"}, {"caller_nid": "bx_reimburse_delete_reimburse", "callee": "get_by_id", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L351"}, {"caller_nid": "bx_reimburse_delete_reimburse", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L352"}, {"caller_nid": "bx_reimburse_delete_reimburse", "callee": "soft_delete", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L353"}, {"caller_nid": "bx_reimburse_delete_reimburse", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L354"}, {"caller_nid": "bx_reimburse_delete_reimburse", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L355"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/4ce019794ff4400778e2353be879bd40ed03ed91072c9b8521e9eeaddb272905.json b/backend/graphify-out/cache/ast/4ce019794ff4400778e2353be879bd40ed03ed91072c9b8521e9eeaddb272905.json new file mode 100644 index 000000000..9ffc71d64 --- /dev/null +++ b/backend/graphify-out/cache/ast/4ce019794ff4400778e2353be879bd40ed03ed91072c9b8521e9eeaddb272905.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_models_bx_models_py", "label": "bx_models.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L1"}, {"id": "models_bx_models_bxexpenseitem", "label": "BxExpenseItem", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L9"}, {"id": "base", "label": "Base", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "models_bx_models_bxworkflowdef", "label": "BxWorkflowDef", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L32"}, {"id": "models_bx_models_bxworkflownode", "label": "BxWorkflowNode", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L52"}, {"id": "models_bx_models_bxadvanceapply", "label": "BxAdvanceApply", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L74"}, {"id": "models_bx_models_bxadvanceapproval", "label": "BxAdvanceApproval", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L107"}, {"id": "models_bx_models_bxreimburseapply", "label": "BxReimburseApply", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L130"}, {"id": "models_bx_models_bxreimbursedetail", "label": "BxReimburseDetail", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L166"}, {"id": "models_bx_models_bxreimburseapproval", "label": "BxReimburseApproval", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L187"}, {"id": "models_bx_models_bxreimburseoffset", "label": "BxReimburseOffset", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L210"}, {"id": "models_bx_models_bxattachment", "label": "BxAttachment", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L228"}, {"id": "models_bx_models_rationale_1", "label": "\u62a5\u9500\uff08bx\uff09\u6a21\u5757\u6570\u636e\u6a21\u578b \u2014 \u5bf9\u9f50 docs/sql/20260606_bx_tables.sql", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L1"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_bx_models_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L2", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_bx_models_py", "target": "sqlalchemy", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_bx_models_py", "target": "app_core_database", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L6", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_bx_models_py", "target": "models_bx_models_bxexpenseitem", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L9", "weight": 1.0}, {"source": "models_bx_models_bxexpenseitem", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L9", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_bx_models_py", "target": "models_bx_models_bxworkflowdef", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L32", "weight": 1.0}, {"source": "models_bx_models_bxworkflowdef", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L32", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_bx_models_py", "target": "models_bx_models_bxworkflownode", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L52", "weight": 1.0}, {"source": "models_bx_models_bxworkflownode", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L52", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_bx_models_py", "target": "models_bx_models_bxadvanceapply", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L74", "weight": 1.0}, {"source": "models_bx_models_bxadvanceapply", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L74", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_bx_models_py", "target": "models_bx_models_bxadvanceapproval", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L107", "weight": 1.0}, {"source": "models_bx_models_bxadvanceapproval", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L107", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_bx_models_py", "target": "models_bx_models_bxreimburseapply", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L130", "weight": 1.0}, {"source": "models_bx_models_bxreimburseapply", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L130", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_bx_models_py", "target": "models_bx_models_bxreimbursedetail", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L166", "weight": 1.0}, {"source": "models_bx_models_bxreimbursedetail", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L166", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_bx_models_py", "target": "models_bx_models_bxreimburseapproval", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L187", "weight": 1.0}, {"source": "models_bx_models_bxreimburseapproval", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L187", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_bx_models_py", "target": "models_bx_models_bxreimburseoffset", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L210", "weight": 1.0}, {"source": "models_bx_models_bxreimburseoffset", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L210", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_bx_models_py", "target": "models_bx_models_bxattachment", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L228", "weight": 1.0}, {"source": "models_bx_models_bxattachment", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L228", "weight": 1.0}, {"source": "models_bx_models_rationale_1", "target": "users_zlwu_work_00code_shanxia2_0_backend_app_models_bx_models_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L1", "weight": 1.0}], "raw_calls": []} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/4dcc1c902bd56c5ad6cc5144093afcf2e3776c1d4a0cd416d4186b9c35c49dae.json b/backend/graphify-out/cache/ast/4dcc1c902bd56c5ad6cc5144093afcf2e3776c1d4a0cd416d4186b9c35c49dae.json new file mode 100644 index 000000000..9819a5acd --- /dev/null +++ b/backend/graphify-out/cache/ast/4dcc1c902bd56c5ad6cc5144093afcf2e3776c1d4a0cd416d4186b9c35c49dae.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_payment_py", "label": "payment.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L1"}, {"id": "bx_payment_tenant", "label": "_tenant()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L39"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L39"}, {"id": "bxusercontext", "label": "BxUserContext", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L39"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L39"}, {"id": "bx_payment_wrap_reimburse_rows", "label": "_wrap_reimburse_rows()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L43"}, {"id": "reimburseapplyout", "label": "ReimburseApplyOut", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L43"}, {"id": "bx_payment_list_pending_payments", "label": "list_pending_payments()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L48"}, {"id": "int", "label": "int", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L48"}, {"id": "bx_payment_payment_finance_stats", "label": "payment_finance_stats()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L81"}, {"id": "bx_payment_list_processed_payments", "label": "list_processed_payments()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L91"}, {"id": "bx_payment_pay", "label": "pay()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L124"}, {"id": "payrequest", "label": "PayRequest", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L124"}, {"id": "bx_payment_offset", "label": "offset()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L144"}, {"id": "offsetrequest", "label": "OffsetRequest", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L144"}, {"id": "bx_payment_batch_offset", "label": "batch_offset()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L167"}, {"id": "batchoffsetrequest", "label": "BatchOffsetRequest", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L167"}, {"id": "bx_payment_list_advance_issues", "label": "list_advance_issues()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L190"}, {"id": "bx_payment_advance_issue_stats", "label": "advance_issue_stats()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L233"}, {"id": "bx_payment_export_advance_issues", "label": "export_advance_issues()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L243"}, {"id": "bx_payment_issue_advance", "label": "issue_advance()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L319"}, {"id": "advanceissuerequest", "label": "AdvanceIssueRequest", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L319"}, {"id": "bx_payment_list_advance_offset_records", "label": "list_advance_offset_records()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L343"}, {"id": "bx_payment_list_reimburse_offset_records", "label": "list_reimburse_offset_records()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L382"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_payment_py", "target": "csv", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L1", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_payment_py", "target": "io", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L2", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_payment_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_payment_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_payment_py", "target": "urllib_parse", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L5", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_payment_py", "target": "fastapi", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L7", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_payment_py", "target": "fastapi_responses", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L8", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_payment_py", "target": "sqlalchemy", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L9", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_payment_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L10", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_payment_py", "target": "app_core_bx_auth", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L12", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_payment_py", "target": "app_core_database", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L13", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_payment_py", "target": "app_core_tenant_context", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L14", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_payment_py", "target": "app_models_bx_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L15", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_payment_py", "target": "app_schemas_bx_advance", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L16", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_payment_py", "target": "app_schemas_bx_common", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L22", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_payment_py", "target": "app_schemas_bx_reimburse", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L23", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_payment_py", "target": "app_services_bx_advance", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L31", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_payment_py", "target": "app_services_bx_attachment", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L32", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_payment_py", "target": "app_services_bx_reimburse", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L33", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_payment_py", "target": "app_utils_bx_date_range", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L34", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_payment_py", "target": "bx_payment_tenant", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L39", "weight": 1.0}, {"source": "bx_payment_tenant", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L39", "weight": 1.0}, {"source": "bx_payment_tenant", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L39", "weight": 1.0}, {"source": "bx_payment_tenant", "target": "str", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L39", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_payment_py", "target": "bx_payment_wrap_reimburse_rows", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L43", "weight": 1.0}, {"source": "bx_payment_wrap_reimburse_rows", "target": "reimburseapplyout", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L43", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_payment_py", "target": "bx_payment_list_pending_payments", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L48", "weight": 1.0}, {"source": "bx_payment_list_pending_payments", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L48", "weight": 1.0}, {"source": "bx_payment_list_pending_payments", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L48", "weight": 1.0}, {"source": "bx_payment_list_pending_payments", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L48", "weight": 1.0}, {"source": "bx_payment_list_pending_payments", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L48", "weight": 1.0}, {"source": "bx_payment_list_pending_payments", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L48", "weight": 1.0}, {"source": "bx_payment_list_pending_payments", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L48", "weight": 1.0}, {"source": "bx_payment_list_pending_payments", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L48", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_payment_py", "target": "bx_payment_payment_finance_stats", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L81", "weight": 1.0}, {"source": "bx_payment_payment_finance_stats", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L81", "weight": 1.0}, {"source": "bx_payment_payment_finance_stats", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L81", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_payment_py", "target": "bx_payment_list_processed_payments", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L91", "weight": 1.0}, {"source": "bx_payment_list_processed_payments", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L91", "weight": 1.0}, {"source": "bx_payment_list_processed_payments", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L91", "weight": 1.0}, {"source": "bx_payment_list_processed_payments", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L91", "weight": 1.0}, {"source": "bx_payment_list_processed_payments", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L91", "weight": 1.0}, {"source": "bx_payment_list_processed_payments", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L91", "weight": 1.0}, {"source": "bx_payment_list_processed_payments", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L91", "weight": 1.0}, {"source": "bx_payment_list_processed_payments", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L91", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_payment_py", "target": "bx_payment_pay", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L124", "weight": 1.0}, {"source": "bx_payment_pay", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L124", "weight": 1.0}, {"source": "bx_payment_pay", "target": "payrequest", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L124", "weight": 1.0}, {"source": "bx_payment_pay", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L124", "weight": 1.0}, {"source": "bx_payment_pay", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L124", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_payment_py", "target": "bx_payment_offset", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L144", "weight": 1.0}, {"source": "bx_payment_offset", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L144", "weight": 1.0}, {"source": "bx_payment_offset", "target": "offsetrequest", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L144", "weight": 1.0}, {"source": "bx_payment_offset", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L144", "weight": 1.0}, {"source": "bx_payment_offset", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L144", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_payment_py", "target": "bx_payment_batch_offset", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L167", "weight": 1.0}, {"source": "bx_payment_batch_offset", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L167", "weight": 1.0}, {"source": "bx_payment_batch_offset", "target": "batchoffsetrequest", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L167", "weight": 1.0}, {"source": "bx_payment_batch_offset", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L167", "weight": 1.0}, {"source": "bx_payment_batch_offset", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L167", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_payment_py", "target": "bx_payment_list_advance_issues", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L190", "weight": 1.0}, {"source": "bx_payment_list_advance_issues", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L190", "weight": 1.0}, {"source": "bx_payment_list_advance_issues", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L190", "weight": 1.0}, {"source": "bx_payment_list_advance_issues", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L190", "weight": 1.0}, {"source": "bx_payment_list_advance_issues", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L190", "weight": 1.0}, {"source": "bx_payment_list_advance_issues", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L190", "weight": 1.0}, {"source": "bx_payment_list_advance_issues", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L190", "weight": 1.0}, {"source": "bx_payment_list_advance_issues", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L190", "weight": 1.0}, {"source": "bx_payment_list_advance_issues", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L190", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_payment_py", "target": "bx_payment_advance_issue_stats", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L233", "weight": 1.0}, {"source": "bx_payment_advance_issue_stats", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L233", "weight": 1.0}, {"source": "bx_payment_advance_issue_stats", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L233", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_payment_py", "target": "bx_payment_export_advance_issues", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L243", "weight": 1.0}, {"source": "bx_payment_export_advance_issues", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L243", "weight": 1.0}, {"source": "bx_payment_export_advance_issues", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L243", "weight": 1.0}, {"source": "bx_payment_export_advance_issues", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L243", "weight": 1.0}, {"source": "bx_payment_export_advance_issues", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L243", "weight": 1.0}, {"source": "bx_payment_export_advance_issues", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L243", "weight": 1.0}, {"source": "bx_payment_export_advance_issues", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L243", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_payment_py", "target": "bx_payment_issue_advance", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L319", "weight": 1.0}, {"source": "bx_payment_issue_advance", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L319", "weight": 1.0}, {"source": "bx_payment_issue_advance", "target": "advanceissuerequest", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L319", "weight": 1.0}, {"source": "bx_payment_issue_advance", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L319", "weight": 1.0}, {"source": "bx_payment_issue_advance", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L319", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_payment_py", "target": "bx_payment_list_advance_offset_records", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L343", "weight": 1.0}, {"source": "bx_payment_list_advance_offset_records", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L343", "weight": 1.0}, {"source": "bx_payment_list_advance_offset_records", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L343", "weight": 1.0}, {"source": "bx_payment_list_advance_offset_records", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L343", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_payment_py", "target": "bx_payment_list_reimburse_offset_records", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L382", "weight": 1.0}, {"source": "bx_payment_list_reimburse_offset_records", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L382", "weight": 1.0}, {"source": "bx_payment_list_reimburse_offset_records", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L382", "weight": 1.0}, {"source": "bx_payment_list_reimburse_offset_records", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L382", "weight": 1.0}, {"source": "bx_payment_list_pending_payments", "target": "bx_payment_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L57", "weight": 1.0}, {"source": "bx_payment_list_pending_payments", "target": "bx_payment_wrap_reimburse_rows", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L76", "weight": 1.0}, {"source": "bx_payment_payment_finance_stats", "target": "bx_payment_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L85", "weight": 1.0}, {"source": "bx_payment_list_processed_payments", "target": "bx_payment_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L100", "weight": 1.0}, {"source": "bx_payment_list_processed_payments", "target": "bx_payment_wrap_reimburse_rows", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L119", "weight": 1.0}, {"source": "bx_payment_pay", "target": "bx_payment_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L130", "weight": 1.0}, {"source": "bx_payment_offset", "target": "bx_payment_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L150", "weight": 1.0}, {"source": "bx_payment_batch_offset", "target": "bx_payment_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L173", "weight": 1.0}, {"source": "bx_payment_list_advance_issues", "target": "bx_payment_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L200", "weight": 1.0}, {"source": "bx_payment_advance_issue_stats", "target": "bx_payment_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L237", "weight": 1.0}, {"source": "bx_payment_export_advance_issues", "target": "bx_payment_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L251", "weight": 1.0}, {"source": "bx_payment_issue_advance", "target": "bx_payment_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L325", "weight": 1.0}, {"source": "bx_payment_list_advance_offset_records", "target": "bx_payment_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L348", "weight": 1.0}, {"source": "bx_payment_list_reimburse_offset_records", "target": "bx_payment_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L387", "weight": 1.0}], "raw_calls": [{"caller_nid": "bx_payment_tenant", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L40"}, {"caller_nid": "bx_payment_tenant", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L40"}, {"caller_nid": "bx_payment_wrap_reimburse_rows", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L44"}, {"caller_nid": "bx_payment_list_pending_payments", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L60"}, {"caller_nid": "bx_payment_list_pending_payments", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L61"}, {"caller_nid": "bx_payment_list_pending_payments", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L62"}, {"caller_nid": "bx_payment_list_pending_payments", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L63"}, {"caller_nid": "bx_payment_list_pending_payments", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L67"}, {"caller_nid": "bx_payment_list_pending_payments", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L67"}, {"caller_nid": "bx_payment_list_pending_payments", "callee": "parse_create_time_day_bounds", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L68"}, {"caller_nid": "bx_payment_list_pending_payments", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L71"}, {"caller_nid": "bx_payment_list_pending_payments", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L72"}, {"caller_nid": "bx_payment_list_pending_payments", "callee": "get_paged", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L73"}, {"caller_nid": "bx_payment_list_pending_payments", "callee": "out_rows_with_attachment_counts", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L74"}, {"caller_nid": "bx_payment_list_pending_payments", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L75"}, {"caller_nid": "bx_payment_list_pending_payments", "callee": "PagedData", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L76"}, {"caller_nid": "bx_payment_payment_finance_stats", "callee": "finance_payment_stats", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L86"}, {"caller_nid": "bx_payment_payment_finance_stats", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L87"}, {"caller_nid": "bx_payment_payment_finance_stats", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L87"}, {"caller_nid": "bx_payment_list_processed_payments", "callee": "in_", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L101"}, {"caller_nid": "bx_payment_list_processed_payments", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L103"}, {"caller_nid": "bx_payment_list_processed_payments", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L104"}, {"caller_nid": "bx_payment_list_processed_payments", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L105"}, {"caller_nid": "bx_payment_list_processed_payments", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L106"}, {"caller_nid": "bx_payment_list_processed_payments", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L110"}, {"caller_nid": "bx_payment_list_processed_payments", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L110"}, {"caller_nid": "bx_payment_list_processed_payments", "callee": "parse_create_time_day_bounds", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L111"}, {"caller_nid": "bx_payment_list_processed_payments", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L114"}, {"caller_nid": "bx_payment_list_processed_payments", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L115"}, {"caller_nid": "bx_payment_list_processed_payments", "callee": "get_paged", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L116"}, {"caller_nid": "bx_payment_list_processed_payments", "callee": "out_rows_with_attachment_counts", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L117"}, {"caller_nid": "bx_payment_list_processed_payments", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L118"}, {"caller_nid": "bx_payment_list_processed_payments", "callee": "PagedData", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L119"}, {"caller_nid": "bx_payment_pay", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L137"}, {"caller_nid": "bx_payment_pay", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L138"}, {"caller_nid": "bx_payment_pay", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L139"}, {"caller_nid": "bx_payment_pay", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L140"}, {"caller_nid": "bx_payment_pay", "callee": "out_one_with_attachment_counts", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L140"}, {"caller_nid": "bx_payment_offset", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L160"}, {"caller_nid": "bx_payment_offset", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L161"}, {"caller_nid": "bx_payment_offset", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L162"}, {"caller_nid": "bx_payment_offset", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L163"}, {"caller_nid": "bx_payment_offset", "callee": "out_one_with_attachment_counts", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L163"}, {"caller_nid": "bx_payment_batch_offset", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L177"}, {"caller_nid": "bx_payment_batch_offset", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L183"}, {"caller_nid": "bx_payment_batch_offset", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L184"}, {"caller_nid": "bx_payment_batch_offset", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L185"}, {"caller_nid": "bx_payment_batch_offset", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L186"}, {"caller_nid": "bx_payment_batch_offset", "callee": "out_one_with_attachment_counts", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L186"}, {"caller_nid": "bx_payment_list_advance_issues", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L203"}, {"caller_nid": "bx_payment_list_advance_issues", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L204"}, {"caller_nid": "bx_payment_list_advance_issues", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L204"}, {"caller_nid": "bx_payment_list_advance_issues", "callee": "is_", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L204"}, {"caller_nid": "bx_payment_list_advance_issues", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L206"}, {"caller_nid": "bx_payment_list_advance_issues", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L208"}, {"caller_nid": "bx_payment_list_advance_issues", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L208"}, {"caller_nid": "bx_payment_list_advance_issues", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L210"}, {"caller_nid": "bx_payment_list_advance_issues", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L211"}, {"caller_nid": "bx_payment_list_advance_issues", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L212"}, {"caller_nid": "bx_payment_list_advance_issues", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L213"}, {"caller_nid": "bx_payment_list_advance_issues", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L217"}, {"caller_nid": "bx_payment_list_advance_issues", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L217"}, {"caller_nid": "bx_payment_list_advance_issues", "callee": "parse_create_time_day_bounds", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L218"}, {"caller_nid": "bx_payment_list_advance_issues", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L221"}, {"caller_nid": "bx_payment_list_advance_issues", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L222"}, {"caller_nid": "bx_payment_list_advance_issues", "callee": "get_paged", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L223"}, {"caller_nid": "bx_payment_list_advance_issues", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L224"}, {"caller_nid": "bx_payment_list_advance_issues", "callee": "offset_amount_map", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L226"}, {"caller_nid": "bx_payment_list_advance_issues", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L228"}, {"caller_nid": "bx_payment_list_advance_issues", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L229"}, {"caller_nid": "bx_payment_list_advance_issues", "callee": "PagedData", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L229"}, {"caller_nid": "bx_payment_advance_issue_stats", "callee": "finance_issue_stats", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L238"}, {"caller_nid": "bx_payment_advance_issue_stats", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L239"}, {"caller_nid": "bx_payment_advance_issue_stats", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L239"}, {"caller_nid": "bx_payment_export_advance_issues", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L254"}, {"caller_nid": "bx_payment_export_advance_issues", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L255"}, {"caller_nid": "bx_payment_export_advance_issues", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L255"}, {"caller_nid": "bx_payment_export_advance_issues", "callee": "is_", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L255"}, {"caller_nid": "bx_payment_export_advance_issues", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L257"}, {"caller_nid": "bx_payment_export_advance_issues", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L259"}, {"caller_nid": "bx_payment_export_advance_issues", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L259"}, {"caller_nid": "bx_payment_export_advance_issues", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L261"}, {"caller_nid": "bx_payment_export_advance_issues", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L262"}, {"caller_nid": "bx_payment_export_advance_issues", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L263"}, {"caller_nid": "bx_payment_export_advance_issues", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L264"}, {"caller_nid": "bx_payment_export_advance_issues", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L268"}, {"caller_nid": "bx_payment_export_advance_issues", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L268"}, {"caller_nid": "bx_payment_export_advance_issues", "callee": "parse_create_time_day_bounds", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L269"}, {"caller_nid": "bx_payment_export_advance_issues", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L272"}, {"caller_nid": "bx_payment_export_advance_issues", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L273"}, {"caller_nid": "bx_payment_export_advance_issues", "callee": "get_paged", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L274"}, {"caller_nid": "bx_payment_export_advance_issues", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L275"}, {"caller_nid": "bx_payment_export_advance_issues", "callee": "StringIO", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L277"}, {"caller_nid": "bx_payment_export_advance_issues", "callee": "writer", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L278"}, {"caller_nid": "bx_payment_export_advance_issues", "callee": "writerow", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L279"}, {"caller_nid": "bx_payment_export_advance_issues", "callee": "writerow", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L294"}, {"caller_nid": "bx_payment_export_advance_issues", "callee": "seek", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L308"}, {"caller_nid": "bx_payment_export_advance_issues", "callee": "strftime", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L309"}, {"caller_nid": "bx_payment_export_advance_issues", "callee": "now", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L309"}, {"caller_nid": "bx_payment_export_advance_issues", "callee": "quote", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L310"}, {"caller_nid": "bx_payment_export_advance_issues", "callee": "StreamingResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L311"}, {"caller_nid": "bx_payment_export_advance_issues", "callee": "getvalue", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L312"}, {"caller_nid": "bx_payment_issue_advance", "callee": "get_by_biz", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L326"}, {"caller_nid": "bx_payment_issue_advance", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L328"}, {"caller_nid": "bx_payment_issue_advance", "callee": "issue", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L329"}, {"caller_nid": "bx_payment_issue_advance", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L333"}, {"caller_nid": "bx_payment_issue_advance", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L334"}, {"caller_nid": "bx_payment_issue_advance", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L335"}, {"caller_nid": "bx_payment_issue_advance", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L336"}, {"caller_nid": "bx_payment_issue_advance", "callee": "offset_amount_map", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L337"}, {"caller_nid": "bx_payment_issue_advance", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L338"}, {"caller_nid": "bx_payment_issue_advance", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L339"}, {"caller_nid": "bx_payment_list_advance_offset_records", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L350"}, {"caller_nid": "bx_payment_list_advance_offset_records", "callee": "join", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L350"}, {"caller_nid": "bx_payment_list_advance_offset_records", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L350"}, {"caller_nid": "bx_payment_list_advance_offset_records", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L362"}, {"caller_nid": "bx_payment_list_advance_offset_records", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L362"}, {"caller_nid": "bx_payment_list_advance_offset_records", "callee": "AdvanceOffsetRecordOut", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L366"}, {"caller_nid": "bx_payment_list_advance_offset_records", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L378"}, {"caller_nid": "bx_payment_list_reimburse_offset_records", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L389"}, {"caller_nid": "bx_payment_list_reimburse_offset_records", "callee": "join", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L389"}, {"caller_nid": "bx_payment_list_reimburse_offset_records", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L389"}, {"caller_nid": "bx_payment_list_reimburse_offset_records", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L398"}, {"caller_nid": "bx_payment_list_reimburse_offset_records", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L398"}, {"caller_nid": "bx_payment_list_reimburse_offset_records", "callee": "ReimburseOffsetRecordOut", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L402"}, {"caller_nid": "bx_payment_list_reimburse_offset_records", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py", "source_location": "L414"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/56cb093e7cb58d7cea68412eeccf619a3db93267e3d3e82f5da6db5fb12b0ede.json b/backend/graphify-out/cache/ast/56cb093e7cb58d7cea68412eeccf619a3db93267e3d3e82f5da6db5fb12b0ede.json new file mode 100644 index 000000000..a1ab1bdee --- /dev/null +++ b/backend/graphify-out/cache/ast/56cb093e7cb58d7cea68412eeccf619a3db93267e3d3e82f5da6db5fb12b0ede.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "label": "advance.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L1"}, {"id": "bx_advance_tenant", "label": "_tenant()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L29"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L29"}, {"id": "bxusercontext", "label": "BxUserContext", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L29"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L29"}, {"id": "bx_advance_fill_offset_amounts", "label": "_fill_offset_amounts()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L33"}, {"id": "advanceapplyout", "label": "AdvanceApplyOut", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L33"}, {"id": "bx_advance_list_advances", "label": "list_advances()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L42"}, {"id": "int", "label": "int", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L42"}, {"id": "bx_advance_my_advances", "label": "my_advances()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L77"}, {"id": "bx_advance_my_advance_stats", "label": "my_advance_stats()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L109"}, {"id": "bx_advance_advance_status_counts", "label": "advance_status_counts()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L119"}, {"id": "bx_advance_pending_approval", "label": "pending_approval()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L128"}, {"id": "bx_advance_advance_pending_approval_stats", "label": "advance_pending_approval_stats()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L154"}, {"id": "bx_advance_approved_by_me", "label": "approved_by_me()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L164"}, {"id": "bx_advance_get_advance", "label": "get_advance()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L190"}, {"id": "bx_advance_get_approvals", "label": "get_approvals()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L206"}, {"id": "bx_advance_create_advance", "label": "create_advance()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L219"}, {"id": "advanceapplycreate", "label": "AdvanceApplyCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L219"}, {"id": "bx_advance_update_advance", "label": "update_advance()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L252"}, {"id": "advanceapplyupdate", "label": "AdvanceApplyUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L252"}, {"id": "bx_advance_submit_advance", "label": "submit_advance()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L273"}, {"id": "bx_advance_approve_advance", "label": "approve_advance()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L287"}, {"id": "advanceapprovalcreate", "label": "AdvanceApprovalCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L287"}, {"id": "bx_advance_reject_advance", "label": "reject_advance()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L302"}, {"id": "bx_advance_delete_advance", "label": "delete_advance()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L317"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L1", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "fastapi", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "sqlalchemy", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L5", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "app_core_bx_auth", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L7", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "app_core_database", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L8", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "app_core_tenant_context", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L9", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "app_models_bx_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L10", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "app_schemas_bx_advance", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L11", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "app_schemas_bx_common", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L20", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "app_services_bx_advance", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L21", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "app_services_bx_expense_item", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L22", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "app_utils_bx_codegen", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L23", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "app_utils_bx_date_range", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L24", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "bx_advance_tenant", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L29", "weight": 1.0}, {"source": "bx_advance_tenant", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L29", "weight": 1.0}, {"source": "bx_advance_tenant", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L29", "weight": 1.0}, {"source": "bx_advance_tenant", "target": "str", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L29", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "bx_advance_fill_offset_amounts", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L33", "weight": 1.0}, {"source": "bx_advance_fill_offset_amounts", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L33", "weight": 1.0}, {"source": "bx_advance_fill_offset_amounts", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L33", "weight": 1.0}, {"source": "bx_advance_fill_offset_amounts", "target": "advanceapplyout", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L33", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "bx_advance_list_advances", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L42", "weight": 1.0}, {"source": "bx_advance_list_advances", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L42", "weight": 1.0}, {"source": "bx_advance_list_advances", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L42", "weight": 1.0}, {"source": "bx_advance_list_advances", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L42", "weight": 1.0}, {"source": "bx_advance_list_advances", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L42", "weight": 1.0}, {"source": "bx_advance_list_advances", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L42", "weight": 1.0}, {"source": "bx_advance_list_advances", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L42", "weight": 1.0}, {"source": "bx_advance_list_advances", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L42", "weight": 1.0}, {"source": "bx_advance_list_advances", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L42", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "bx_advance_my_advances", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L77", "weight": 1.0}, {"source": "bx_advance_my_advances", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L77", "weight": 1.0}, {"source": "bx_advance_my_advances", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L77", "weight": 1.0}, {"source": "bx_advance_my_advances", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L77", "weight": 1.0}, {"source": "bx_advance_my_advances", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L77", "weight": 1.0}, {"source": "bx_advance_my_advances", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L77", "weight": 1.0}, {"source": "bx_advance_my_advances", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L77", "weight": 1.0}, {"source": "bx_advance_my_advances", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L77", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "bx_advance_my_advance_stats", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L109", "weight": 1.0}, {"source": "bx_advance_my_advance_stats", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L109", "weight": 1.0}, {"source": "bx_advance_my_advance_stats", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L109", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "bx_advance_advance_status_counts", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L119", "weight": 1.0}, {"source": "bx_advance_advance_status_counts", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L119", "weight": 1.0}, {"source": "bx_advance_advance_status_counts", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L119", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "bx_advance_pending_approval", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L128", "weight": 1.0}, {"source": "bx_advance_pending_approval", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L128", "weight": 1.0}, {"source": "bx_advance_pending_approval", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L128", "weight": 1.0}, {"source": "bx_advance_pending_approval", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L128", "weight": 1.0}, {"source": "bx_advance_pending_approval", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L128", "weight": 1.0}, {"source": "bx_advance_pending_approval", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L128", "weight": 1.0}, {"source": "bx_advance_pending_approval", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L128", "weight": 1.0}, {"source": "bx_advance_pending_approval", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L128", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "bx_advance_advance_pending_approval_stats", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L154", "weight": 1.0}, {"source": "bx_advance_advance_pending_approval_stats", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L154", "weight": 1.0}, {"source": "bx_advance_advance_pending_approval_stats", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L154", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "bx_advance_approved_by_me", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L164", "weight": 1.0}, {"source": "bx_advance_approved_by_me", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L164", "weight": 1.0}, {"source": "bx_advance_approved_by_me", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L164", "weight": 1.0}, {"source": "bx_advance_approved_by_me", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L164", "weight": 1.0}, {"source": "bx_advance_approved_by_me", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L164", "weight": 1.0}, {"source": "bx_advance_approved_by_me", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L164", "weight": 1.0}, {"source": "bx_advance_approved_by_me", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L164", "weight": 1.0}, {"source": "bx_advance_approved_by_me", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L164", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "bx_advance_get_advance", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L190", "weight": 1.0}, {"source": "bx_advance_get_advance", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L190", "weight": 1.0}, {"source": "bx_advance_get_advance", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L190", "weight": 1.0}, {"source": "bx_advance_get_advance", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L190", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "bx_advance_get_approvals", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L206", "weight": 1.0}, {"source": "bx_advance_get_approvals", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L206", "weight": 1.0}, {"source": "bx_advance_get_approvals", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L206", "weight": 1.0}, {"source": "bx_advance_get_approvals", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L206", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "bx_advance_create_advance", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L219", "weight": 1.0}, {"source": "bx_advance_create_advance", "target": "advanceapplycreate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L219", "weight": 1.0}, {"source": "bx_advance_create_advance", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L219", "weight": 1.0}, {"source": "bx_advance_create_advance", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L219", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "bx_advance_update_advance", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L252", "weight": 1.0}, {"source": "bx_advance_update_advance", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L252", "weight": 1.0}, {"source": "bx_advance_update_advance", "target": "advanceapplyupdate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L252", "weight": 1.0}, {"source": "bx_advance_update_advance", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L252", "weight": 1.0}, {"source": "bx_advance_update_advance", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L252", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "bx_advance_submit_advance", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L273", "weight": 1.0}, {"source": "bx_advance_submit_advance", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L273", "weight": 1.0}, {"source": "bx_advance_submit_advance", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L273", "weight": 1.0}, {"source": "bx_advance_submit_advance", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L273", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "bx_advance_approve_advance", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L287", "weight": 1.0}, {"source": "bx_advance_approve_advance", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L287", "weight": 1.0}, {"source": "bx_advance_approve_advance", "target": "advanceapprovalcreate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L287", "weight": 1.0}, {"source": "bx_advance_approve_advance", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L287", "weight": 1.0}, {"source": "bx_advance_approve_advance", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L287", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "bx_advance_reject_advance", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L302", "weight": 1.0}, {"source": "bx_advance_reject_advance", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L302", "weight": 1.0}, {"source": "bx_advance_reject_advance", "target": "advanceapprovalcreate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L302", "weight": 1.0}, {"source": "bx_advance_reject_advance", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L302", "weight": 1.0}, {"source": "bx_advance_reject_advance", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L302", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "bx_advance_delete_advance", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L317", "weight": 1.0}, {"source": "bx_advance_delete_advance", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L317", "weight": 1.0}, {"source": "bx_advance_delete_advance", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L317", "weight": 1.0}, {"source": "bx_advance_delete_advance", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L317", "weight": 1.0}, {"source": "bx_advance_list_advances", "target": "bx_advance_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L52", "weight": 1.0}, {"source": "bx_advance_list_advances", "target": "bx_advance_fill_offset_amounts", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L72", "weight": 1.0}, {"source": "bx_advance_my_advances", "target": "bx_advance_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L86", "weight": 1.0}, {"source": "bx_advance_my_advances", "target": "bx_advance_fill_offset_amounts", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L104", "weight": 1.0}, {"source": "bx_advance_my_advance_stats", "target": "bx_advance_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L113", "weight": 1.0}, {"source": "bx_advance_advance_status_counts", "target": "bx_advance_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L123", "weight": 1.0}, {"source": "bx_advance_pending_approval", "target": "bx_advance_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L137", "weight": 1.0}, {"source": "bx_advance_advance_pending_approval_stats", "target": "bx_advance_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L158", "weight": 1.0}, {"source": "bx_advance_approved_by_me", "target": "bx_advance_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L173", "weight": 1.0}, {"source": "bx_advance_get_advance", "target": "bx_advance_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L195", "weight": 1.0}, {"source": "bx_advance_get_approvals", "target": "bx_advance_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L211", "weight": 1.0}, {"source": "bx_advance_create_advance", "target": "bx_advance_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L224", "weight": 1.0}, {"source": "bx_advance_update_advance", "target": "bx_advance_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L258", "weight": 1.0}, {"source": "bx_advance_delete_advance", "target": "bx_advance_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L322", "weight": 1.0}], "raw_calls": [{"caller_nid": "bx_advance_tenant", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L30"}, {"caller_nid": "bx_advance_tenant", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L30"}, {"caller_nid": "bx_advance_fill_offset_amounts", "callee": "offset_amount_map", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L36"}, {"caller_nid": "bx_advance_fill_offset_amounts", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L38"}, {"caller_nid": "bx_advance_list_advances", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L55"}, {"caller_nid": "bx_advance_list_advances", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L57"}, {"caller_nid": "bx_advance_list_advances", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L58"}, {"caller_nid": "bx_advance_list_advances", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L59"}, {"caller_nid": "bx_advance_list_advances", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L60"}, {"caller_nid": "bx_advance_list_advances", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L64"}, {"caller_nid": "bx_advance_list_advances", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L64"}, {"caller_nid": "bx_advance_list_advances", "callee": "parse_create_time_day_bounds", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L65"}, {"caller_nid": "bx_advance_list_advances", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L68"}, {"caller_nid": "bx_advance_list_advances", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L69"}, {"caller_nid": "bx_advance_list_advances", "callee": "get_paged", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L70"}, {"caller_nid": "bx_advance_list_advances", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L71"}, {"caller_nid": "bx_advance_list_advances", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L73"}, {"caller_nid": "bx_advance_list_advances", "callee": "PagedData", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L73"}, {"caller_nid": "bx_advance_my_advances", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L89"}, {"caller_nid": "bx_advance_my_advances", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L91"}, {"caller_nid": "bx_advance_my_advances", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L92"}, {"caller_nid": "bx_advance_my_advances", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L93"}, {"caller_nid": "bx_advance_my_advances", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L94"}, {"caller_nid": "bx_advance_my_advances", "callee": "parse_create_time_day_bounds", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L97"}, {"caller_nid": "bx_advance_my_advances", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L100"}, {"caller_nid": "bx_advance_my_advances", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L101"}, {"caller_nid": "bx_advance_my_advances", "callee": "get_paged", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L102"}, {"caller_nid": "bx_advance_my_advances", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L103"}, {"caller_nid": "bx_advance_my_advances", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L105"}, {"caller_nid": "bx_advance_my_advances", "callee": "PagedData", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L105"}, {"caller_nid": "bx_advance_my_advance_stats", "callee": "my_apply_stats", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L114"}, {"caller_nid": "bx_advance_my_advance_stats", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L115"}, {"caller_nid": "bx_advance_my_advance_stats", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L115"}, {"caller_nid": "bx_advance_advance_status_counts", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L124"}, {"caller_nid": "bx_advance_advance_status_counts", "callee": "global_status_counts", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L124"}, {"caller_nid": "bx_advance_pending_approval", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L138"}, {"caller_nid": "bx_advance_pending_approval", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L149"}, {"caller_nid": "bx_advance_pending_approval", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L150"}, {"caller_nid": "bx_advance_pending_approval", "callee": "PagedData", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L150"}, {"caller_nid": "bx_advance_advance_pending_approval_stats", "callee": "pending_approval_stats", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L159"}, {"caller_nid": "bx_advance_advance_pending_approval_stats", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L160"}, {"caller_nid": "bx_advance_advance_pending_approval_stats", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L160"}, {"caller_nid": "bx_advance_approved_by_me", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L174"}, {"caller_nid": "bx_advance_approved_by_me", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L185"}, {"caller_nid": "bx_advance_approved_by_me", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L186"}, {"caller_nid": "bx_advance_approved_by_me", "callee": "PagedData", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L186"}, {"caller_nid": "bx_advance_get_advance", "callee": "get_by_id", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L196"}, {"caller_nid": "bx_advance_get_advance", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L198"}, {"caller_nid": "bx_advance_get_advance", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L199"}, {"caller_nid": "bx_advance_get_advance", "callee": "offset_amount_map", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L200"}, {"caller_nid": "bx_advance_get_advance", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L201"}, {"caller_nid": "bx_advance_get_advance", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L202"}, {"caller_nid": "bx_advance_get_approvals", "callee": "get_by_id", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L212"}, {"caller_nid": "bx_advance_get_approvals", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L213"}, {"caller_nid": "bx_advance_get_approvals", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L215"}, {"caller_nid": "bx_advance_get_approvals", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L215"}, {"caller_nid": "bx_advance_create_advance", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L225"}, {"caller_nid": "bx_advance_create_advance", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L226"}, {"caller_nid": "bx_advance_create_advance", "callee": "get_by_id", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L228"}, {"caller_nid": "bx_advance_create_advance", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L229"}, {"caller_nid": "bx_advance_create_advance", "callee": "generate_apply_code", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L232"}, {"caller_nid": "bx_advance_create_advance", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L235"}, {"caller_nid": "bx_advance_create_advance", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L235"}, {"caller_nid": "bx_advance_create_advance", "callee": "create", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L245"}, {"caller_nid": "bx_advance_create_advance", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L246"}, {"caller_nid": "bx_advance_create_advance", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L247"}, {"caller_nid": "bx_advance_create_advance", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L248"}, {"caller_nid": "bx_advance_create_advance", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L248"}, {"caller_nid": "bx_advance_update_advance", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L259"}, {"caller_nid": "bx_advance_update_advance", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L260"}, {"caller_nid": "bx_advance_update_advance", "callee": "get_by_id", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L262"}, {"caller_nid": "bx_advance_update_advance", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L263"}, {"caller_nid": "bx_advance_update_advance", "callee": "update", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L264"}, {"caller_nid": "bx_advance_update_advance", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L266"}, {"caller_nid": "bx_advance_update_advance", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L267"}, {"caller_nid": "bx_advance_update_advance", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L268"}, {"caller_nid": "bx_advance_update_advance", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L269"}, {"caller_nid": "bx_advance_update_advance", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L269"}, {"caller_nid": "bx_advance_submit_advance", "callee": "submit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L278"}, {"caller_nid": "bx_advance_submit_advance", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L280"}, {"caller_nid": "bx_advance_submit_advance", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L281"}, {"caller_nid": "bx_advance_submit_advance", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L282"}, {"caller_nid": "bx_advance_submit_advance", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L283"}, {"caller_nid": "bx_advance_submit_advance", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L283"}, {"caller_nid": "bx_advance_approve_advance", "callee": "approve", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L293"}, {"caller_nid": "bx_advance_approve_advance", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L295"}, {"caller_nid": "bx_advance_approve_advance", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L296"}, {"caller_nid": "bx_advance_approve_advance", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L297"}, {"caller_nid": "bx_advance_approve_advance", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L298"}, {"caller_nid": "bx_advance_approve_advance", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L298"}, {"caller_nid": "bx_advance_reject_advance", "callee": "reject", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L308"}, {"caller_nid": "bx_advance_reject_advance", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L310"}, {"caller_nid": "bx_advance_reject_advance", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L311"}, {"caller_nid": "bx_advance_reject_advance", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L312"}, {"caller_nid": "bx_advance_reject_advance", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L313"}, {"caller_nid": "bx_advance_reject_advance", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L313"}, {"caller_nid": "bx_advance_delete_advance", "callee": "get_by_id", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L323"}, {"caller_nid": "bx_advance_delete_advance", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L324"}, {"caller_nid": "bx_advance_delete_advance", "callee": "soft_delete", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L325"}, {"caller_nid": "bx_advance_delete_advance", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L326"}, {"caller_nid": "bx_advance_delete_advance", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L327"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/583b12a6d2c9fd4411b652741e73324df9256138946ee873a0ed03169f8dae2a.json b/backend/graphify-out/cache/ast/583b12a6d2c9fd4411b652741e73324df9256138946ee873a0ed03169f8dae2a.json new file mode 100644 index 000000000..36329a465 --- /dev/null +++ b/backend/graphify-out/cache/ast/583b12a6d2c9fd4411b652741e73324df9256138946ee873a0ed03169f8dae2a.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_init_py", "label": "__init__.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/__init__.py", "source_location": "L1"}], "edges": [], "raw_calls": []} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/5906745ed3a9a4a62ccfec436a8fac62e8c6cb5c5a61715bb1979a7e5bef804a.json b/backend/graphify-out/cache/ast/5906745ed3a9a4a62ccfec436a8fac62e8c6cb5c5a61715bb1979a7e5bef804a.json new file mode 100644 index 000000000..f2ab1805e --- /dev/null +++ b/backend/graphify-out/cache/ast/5906745ed3a9a4a62ccfec436a8fac62e8c6cb5c5a61715bb1979a7e5bef804a.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_main_py", "label": "main.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L1"}, {"id": "app_main_lifespan", "label": "lifespan()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L30"}, {"id": "fastapi", "label": "FastAPI", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L30"}, {"id": "app_main_error_json", "label": "_error_json()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L77"}, {"id": "int", "label": "int", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L77"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L77"}, {"id": "jsonresponse", "label": "JSONResponse", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L77"}, {"id": "app_main_sqlalchemy_exception_handler", "label": "sqlalchemy_exception_handler()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L90"}, {"id": "request", "label": "Request", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L90"}, {"id": "sqlalchemyerror", "label": "SQLAlchemyError", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L90"}, {"id": "app_main_unhandled_exception_handler", "label": "unhandled_exception_handler()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L101"}, {"id": "exception", "label": "Exception", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L101"}, {"id": "app_main_mask_secret", "label": "_mask_secret()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L121"}, {"id": "app_main_root", "label": "root()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L143"}, {"id": "app_main_health_check", "label": "health_check()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L148"}, {"id": "app_main_rationale_91", "label": "\u6570\u636e\u5e93\u5f02\u5e38\uff1a\u8fd4\u56de JSON \u5e76\u4fdd\u7559 CORS \u5934\uff0c\u907f\u514d\u6d4f\u89c8\u5668\u53ea\u62a5\u8de8\u57df\u9519\u8bef", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L91"}, {"id": "app_main_rationale_102", "label": "\u672a\u6355\u83b7\u5f02\u5e38\uff1a\u7edf\u4e00 JSON 500\uff0c\u786e\u4fdd\u8de8\u57df\u573a\u666f\u4e0b\u4ecd\u6709 Access-Control-Allow-Origin", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L102"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_main_py", "target": "contextlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L2", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_main_py", "target": "logging", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_main_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_main_py", "target": "fastapi", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L6", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_main_py", "target": "fastapi_middleware_cors", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L7", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_main_py", "target": "fastapi_responses", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L8", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_main_py", "target": "sqlalchemy_exc", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L9", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_main_py", "target": "app_core_config", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L11", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_main_py", "target": "app_core_database", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L12", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_main_py", "target": "app_core_api_request_log_middleware", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L13", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_main_py", "target": "app_core_api_crypto_middleware", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L14", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_main_py", "target": "app_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L15", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_main_py", "target": "app_models_bx_models", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L16", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_main_py", "target": "app_api", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L17", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_main_py", "target": "app_main_lifespan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L30", "weight": 1.0}, {"source": "app_main_lifespan", "target": "fastapi", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L30", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_main_py", "target": "app_main_error_json", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L77", "weight": 1.0}, {"source": "app_main_error_json", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L77", "weight": 1.0}, {"source": "app_main_error_json", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L77", "weight": 1.0}, {"source": "app_main_error_json", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L77", "weight": 1.0}, {"source": "app_main_error_json", "target": "jsonresponse", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L77", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_main_py", "target": "app_main_sqlalchemy_exception_handler", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L90", "weight": 1.0}, {"source": "app_main_sqlalchemy_exception_handler", "target": "request", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L90", "weight": 1.0}, {"source": "app_main_sqlalchemy_exception_handler", "target": "sqlalchemyerror", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L90", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_main_py", "target": "app_main_unhandled_exception_handler", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L101", "weight": 1.0}, {"source": "app_main_unhandled_exception_handler", "target": "request", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L101", "weight": 1.0}, {"source": "app_main_unhandled_exception_handler", "target": "exception", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L101", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_main_py", "target": "app_main_mask_secret", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L121", "weight": 1.0}, {"source": "app_main_mask_secret", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L121", "weight": 1.0}, {"source": "app_main_mask_secret", "target": "str", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L121", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_main_py", "target": "app_main_root", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L143", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_main_py", "target": "app_main_health_check", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L148", "weight": 1.0}, {"source": "app_main_error_json", "target": "jsonresponse", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L78", "weight": 1.0}, {"source": "app_main_sqlalchemy_exception_handler", "target": "app_main_error_json", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L97", "weight": 1.0}, {"source": "app_main_unhandled_exception_handler", "target": "app_main_error_json", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L108", "weight": 1.0}, {"source": "app_main_rationale_91", "target": "app_main_sqlalchemy_exception_handler", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L91", "weight": 1.0}, {"source": "app_main_rationale_102", "target": "app_main_unhandled_exception_handler", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L102", "weight": 1.0}], "raw_calls": [{"caller_nid": "app_main_lifespan", "callee": "ensure_initialized", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L34"}, {"caller_nid": "app_main_lifespan", "callee": "init_scheduled_tasks", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L39"}, {"caller_nid": "app_main_lifespan", "callee": "warning", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L41"}, {"caller_nid": "app_main_lifespan", "callee": "shutdown_scheduler", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L48"}, {"caller_nid": "app_main_error_json", "callee": "timestamp", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L84"}, {"caller_nid": "app_main_error_json", "callee": "now", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L84"}, {"caller_nid": "app_main_sqlalchemy_exception_handler", "callee": "exception", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L92"}, {"caller_nid": "app_main_unhandled_exception_handler", "callee": "exception", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L103"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/59572b469529962b623accad7a5e21f5a5299a69285977acfa93af8c12ec7703.json b/backend/graphify-out/cache/ast/59572b469529962b623accad7a5e21f5a5299a69285977acfa93af8c12ec7703.json new file mode 100644 index 000000000..fd9639a59 --- /dev/null +++ b/backend/graphify-out/cache/ast/59572b469529962b623accad7a5e21f5a5299a69285977acfa93af8c12ec7703.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_attachment_py", "label": "attachment.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L1"}, {"id": "bx_attachment_tenant", "label": "_tenant()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L24"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L24"}, {"id": "bxusercontext", "label": "BxUserContext", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L24"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L24"}, {"id": "bx_attachment_parse_id_list", "label": "_parse_id_list()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L28"}, {"id": "bx_attachment_upload_file", "label": "upload_file()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L33"}, {"id": "uploadfile", "label": "UploadFile", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L33"}, {"id": "bx_attachment_download_file", "label": "download_file()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L67"}, {"id": "bx_attachment_delete_attachment", "label": "delete_attachment()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L89"}, {"id": "bx_attachment_preview_attachment", "label": "preview_attachment()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L103"}, {"id": "bx_attachment_list_by_biz", "label": "list_by_biz()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L127"}, {"id": "bx_attachment_bind_biz", "label": "bind_biz()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L140"}, {"id": "bx_attachment_rationale_108", "label": "\u8fd4\u56de\u56fe\u7247/\u9644\u4ef6\u9884\u89c8 URL\uff08MinIO \u9884\u7b7e\u540d\u6216\u672c\u5730\u516c\u5f00\u5730\u5740\uff0c\u5bf9\u9f50\u95e8\u6237 storage \u80fd\u529b\uff09\u3002", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L108"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_attachment_py", "target": "mimetypes", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L1", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_attachment_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L2", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_attachment_py", "target": "urllib_parse", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_attachment_py", "target": "fastapi", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L5", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_attachment_py", "target": "fastapi_responses", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L6", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_attachment_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L7", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_attachment_py", "target": "app_core_bx_auth", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L9", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_attachment_py", "target": "app_core_database", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L10", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_attachment_py", "target": "app_core_tenant_context", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L11", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_attachment_py", "target": "app_schemas_bx_attachment", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L12", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_attachment_py", "target": "app_schemas_bx_common", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L13", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_attachment_py", "target": "app_services_bx_attachment", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L14", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_attachment_py", "target": "app_services_bx_storage", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L15", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_attachment_py", "target": "bx_attachment_tenant", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L24", "weight": 1.0}, {"source": "bx_attachment_tenant", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L24", "weight": 1.0}, {"source": "bx_attachment_tenant", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L24", "weight": 1.0}, {"source": "bx_attachment_tenant", "target": "str", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L24", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_attachment_py", "target": "bx_attachment_parse_id_list", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L28", "weight": 1.0}, {"source": "bx_attachment_parse_id_list", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L28", "weight": 1.0}, {"source": "bx_attachment_parse_id_list", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L28", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_attachment_py", "target": "bx_attachment_upload_file", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L33", "weight": 1.0}, {"source": "bx_attachment_upload_file", "target": "uploadfile", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L33", "weight": 1.0}, {"source": "bx_attachment_upload_file", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L33", "weight": 1.0}, {"source": "bx_attachment_upload_file", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L33", "weight": 1.0}, {"source": "bx_attachment_upload_file", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L33", "weight": 1.0}, {"source": "bx_attachment_upload_file", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L33", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_attachment_py", "target": "bx_attachment_download_file", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L67", "weight": 1.0}, {"source": "bx_attachment_download_file", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L67", "weight": 1.0}, {"source": "bx_attachment_download_file", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L67", "weight": 1.0}, {"source": "bx_attachment_download_file", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L67", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_attachment_py", "target": "bx_attachment_delete_attachment", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L89", "weight": 1.0}, {"source": "bx_attachment_delete_attachment", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L89", "weight": 1.0}, {"source": "bx_attachment_delete_attachment", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L89", "weight": 1.0}, {"source": "bx_attachment_delete_attachment", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L89", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_attachment_py", "target": "bx_attachment_preview_attachment", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L103", "weight": 1.0}, {"source": "bx_attachment_preview_attachment", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L103", "weight": 1.0}, {"source": "bx_attachment_preview_attachment", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L103", "weight": 1.0}, {"source": "bx_attachment_preview_attachment", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L103", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_attachment_py", "target": "bx_attachment_list_by_biz", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L127", "weight": 1.0}, {"source": "bx_attachment_list_by_biz", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L127", "weight": 1.0}, {"source": "bx_attachment_list_by_biz", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L127", "weight": 1.0}, {"source": "bx_attachment_list_by_biz", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L127", "weight": 1.0}, {"source": "bx_attachment_list_by_biz", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L127", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_attachment_py", "target": "bx_attachment_bind_biz", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L140", "weight": 1.0}, {"source": "bx_attachment_bind_biz", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L140", "weight": 1.0}, {"source": "bx_attachment_bind_biz", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L140", "weight": 1.0}, {"source": "bx_attachment_bind_biz", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L140", "weight": 1.0}, {"source": "bx_attachment_bind_biz", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L140", "weight": 1.0}, {"source": "bx_attachment_bind_biz", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L140", "weight": 1.0}, {"source": "bx_attachment_download_file", "target": "bx_attachment_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L72", "weight": 1.0}, {"source": "bx_attachment_delete_attachment", "target": "bx_attachment_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L94", "weight": 1.0}, {"source": "bx_attachment_preview_attachment", "target": "bx_attachment_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L109", "weight": 1.0}, {"source": "bx_attachment_list_by_biz", "target": "bx_attachment_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L133", "weight": 1.0}, {"source": "bx_attachment_bind_biz", "target": "bx_attachment_parse_id_list", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L147", "weight": 1.0}, {"source": "bx_attachment_rationale_108", "target": "bx_attachment_preview_attachment", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L108", "weight": 1.0}], "raw_calls": [{"caller_nid": "bx_attachment_tenant", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L25"}, {"caller_nid": "bx_attachment_tenant", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L25"}, {"caller_nid": "bx_attachment_parse_id_list", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L29"}, {"caller_nid": "bx_attachment_parse_id_list", "callee": "split", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L29"}, {"caller_nid": "bx_attachment_parse_id_list", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L29"}, {"caller_nid": "bx_attachment_upload_file", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L41"}, {"caller_nid": "bx_attachment_upload_file", "callee": "read", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L42"}, {"caller_nid": "bx_attachment_upload_file", "callee": "guess_type", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L45"}, {"caller_nid": "bx_attachment_upload_file", "callee": "upload_bx_file", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L48"}, {"caller_nid": "bx_attachment_upload_file", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L51"}, {"caller_nid": "bx_attachment_upload_file", "callee": "create", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L60"}, {"caller_nid": "bx_attachment_upload_file", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L61"}, {"caller_nid": "bx_attachment_upload_file", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L62"}, {"caller_nid": "bx_attachment_upload_file", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L63"}, {"caller_nid": "bx_attachment_upload_file", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L63"}, {"caller_nid": "bx_attachment_download_file", "callee": "get_by_id", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L73"}, {"caller_nid": "bx_attachment_download_file", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L75"}, {"caller_nid": "bx_attachment_download_file", "callee": "download_file_bytes", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L77"}, {"caller_nid": "bx_attachment_download_file", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L79"}, {"caller_nid": "bx_attachment_download_file", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L81"}, {"caller_nid": "bx_attachment_download_file", "callee": "quote", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L82"}, {"caller_nid": "bx_attachment_download_file", "callee": "StreamingResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L85"}, {"caller_nid": "bx_attachment_delete_attachment", "callee": "get_by_id", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L95"}, {"caller_nid": "bx_attachment_delete_attachment", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L96"}, {"caller_nid": "bx_attachment_delete_attachment", "callee": "soft_delete", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L97"}, {"caller_nid": "bx_attachment_delete_attachment", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L98"}, {"caller_nid": "bx_attachment_delete_attachment", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L99"}, {"caller_nid": "bx_attachment_preview_attachment", "callee": "get_by_id", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L110"}, {"caller_nid": "bx_attachment_preview_attachment", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L112"}, {"caller_nid": "bx_attachment_preview_attachment", "callee": "get_preview_url", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L114"}, {"caller_nid": "bx_attachment_preview_attachment", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L116"}, {"caller_nid": "bx_attachment_preview_attachment", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L117"}, {"caller_nid": "bx_attachment_list_by_biz", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L134"}, {"caller_nid": "bx_attachment_list_by_biz", "callee": "get_by_biz", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L135"}, {"caller_nid": "bx_attachment_list_by_biz", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L136"}, {"caller_nid": "bx_attachment_list_by_biz", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L136"}, {"caller_nid": "bx_attachment_bind_biz", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L148"}, {"caller_nid": "bx_attachment_bind_biz", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L150"}, {"caller_nid": "bx_attachment_bind_biz", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py", "source_location": "L151"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/5cbe170d19fdb5f5abf34d2e87709430e9dd89f2fd5cb13314af556dd0867582.json b/backend/graphify-out/cache/ast/5cbe170d19fdb5f5abf34d2e87709430e9dd89f2fd5cb13314af556dd0867582.json new file mode 100644 index 000000000..c126f8b74 --- /dev/null +++ b/backend/graphify-out/cache/ast/5cbe170d19fdb5f5abf34d2e87709430e9dd89f2fd5cb13314af556dd0867582.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_models_bx_models_py", "label": "bx_models.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L1"}, {"id": "models_bx_models_bxexpenseitem", "label": "BxExpenseItem", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L10"}, {"id": "base", "label": "Base", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "models_bx_models_bxworkflowdef", "label": "BxWorkflowDef", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L33"}, {"id": "models_bx_models_bxworkflownode", "label": "BxWorkflowNode", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L62"}, {"id": "models_bx_models_bxadvanceapply", "label": "BxAdvanceApply", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L95"}, {"id": "models_bx_models_bxadvanceapproval", "label": "BxAdvanceApproval", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L128"}, {"id": "models_bx_models_bxreimburseapply", "label": "BxReimburseApply", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L151"}, {"id": "models_bx_models_bxreimbursedetail", "label": "BxReimburseDetail", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L187"}, {"id": "models_bx_models_bxreimburseapproval", "label": "BxReimburseApproval", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L208"}, {"id": "models_bx_models_bxreimburseoffset", "label": "BxReimburseOffset", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L231"}, {"id": "models_bx_models_bxattachment", "label": "BxAttachment", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L249"}, {"id": "models_bx_models_rationale_1", "label": "\u62a5\u9500\uff08bx\uff09\u6a21\u5757\u6570\u636e\u6a21\u578b \u2014 \u5bf9\u9f50 docs/sql/20260606_bx_tables.sql", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L1"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_bx_models_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L2", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_bx_models_py", "target": "sqlalchemy", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_bx_models_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L5", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_bx_models_py", "target": "app_core_database", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L7", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_bx_models_py", "target": "models_bx_models_bxexpenseitem", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L10", "weight": 1.0}, {"source": "models_bx_models_bxexpenseitem", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L10", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_bx_models_py", "target": "models_bx_models_bxworkflowdef", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L33", "weight": 1.0}, {"source": "models_bx_models_bxworkflowdef", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L33", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_bx_models_py", "target": "models_bx_models_bxworkflownode", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L62", "weight": 1.0}, {"source": "models_bx_models_bxworkflownode", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L62", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_bx_models_py", "target": "models_bx_models_bxadvanceapply", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L95", "weight": 1.0}, {"source": "models_bx_models_bxadvanceapply", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L95", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_bx_models_py", "target": "models_bx_models_bxadvanceapproval", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L128", "weight": 1.0}, {"source": "models_bx_models_bxadvanceapproval", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L128", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_bx_models_py", "target": "models_bx_models_bxreimburseapply", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L151", "weight": 1.0}, {"source": "models_bx_models_bxreimburseapply", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L151", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_bx_models_py", "target": "models_bx_models_bxreimbursedetail", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L187", "weight": 1.0}, {"source": "models_bx_models_bxreimbursedetail", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L187", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_bx_models_py", "target": "models_bx_models_bxreimburseapproval", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L208", "weight": 1.0}, {"source": "models_bx_models_bxreimburseapproval", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L208", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_bx_models_py", "target": "models_bx_models_bxreimburseoffset", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L231", "weight": 1.0}, {"source": "models_bx_models_bxreimburseoffset", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L231", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_bx_models_py", "target": "models_bx_models_bxattachment", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L249", "weight": 1.0}, {"source": "models_bx_models_bxattachment", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L249", "weight": 1.0}, {"source": "models_bx_models_rationale_1", "target": "users_zlwu_work_00code_shanxia2_0_backend_app_models_bx_models_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L1", "weight": 1.0}], "raw_calls": []} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/5cc369f743c5955e362553c65866cacfb9c8f33a4c4d293d9f74a35b1950867f.json b/backend/graphify-out/cache/ast/5cc369f743c5955e362553c65866cacfb9c8f33a4c4d293d9f74a35b1950867f.json new file mode 100644 index 000000000..c24da6d8a --- /dev/null +++ b/backend/graphify-out/cache/ast/5cc369f743c5955e362553c65866cacfb9c8f33a4c4d293d9f74a35b1950867f.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_reimburse_py", "label": "reimburse.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L1"}, {"id": "bx_reimburse_coerce_id", "label": "_coerce_id()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L9"}, {"id": "bx_reimburse_reimbursedetailcreate", "label": "ReimburseDetailCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L15"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "bx_reimburse_reimbursedetailcreate_validate_expense_item_id", "label": ".validate_expense_item_id()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L24"}, {"id": "bx_reimburse_reimbursedetailout", "label": "ReimburseDetailOut", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L31"}, {"id": "bx_reimburse_reimburseapplycreate", "label": "ReimburseApplyCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L41"}, {"id": "bx_reimburse_reimburseapplycreate_details_must_not_be_empty", "label": ".details_must_not_be_empty()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L50"}, {"id": "bx_reimburse_reimburseapplyupdate", "label": "ReimburseApplyUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L56"}, {"id": "bx_reimburse_reimburseapplyout", "label": "ReimburseApplyOut", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L63"}, {"id": "bx_reimburse_reimburseapprovalcreate", "label": "ReimburseApprovalCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L89"}, {"id": "bx_reimburse_reimburseapprovalout", "label": "ReimburseApprovalOut", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L96"}, {"id": "bx_reimburse_reimbursemystatsout", "label": "ReimburseMyStatsOut", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L109"}, {"id": "bx_reimburse_reimburseapproverpendingstatsout", "label": "ReimburseApproverPendingStatsOut", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L121"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_reimburse_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L1", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_reimburse_py", "target": "pydantic", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_reimburse_py", "target": "pydantic_alias_generators", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_reimburse_py", "target": "app_schemas_bx_common", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L6", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_reimburse_py", "target": "bx_reimburse_coerce_id", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L9", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_reimburse_py", "target": "bx_reimburse_reimbursedetailcreate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L15", "weight": 1.0}, {"source": "bx_reimburse_reimbursedetailcreate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L15", "weight": 1.0}, {"source": "bx_reimburse_reimbursedetailcreate", "target": "bx_reimburse_reimbursedetailcreate_validate_expense_item_id", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L24", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_reimburse_py", "target": "bx_reimburse_reimbursedetailout", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L31", "weight": 1.0}, {"source": "bx_reimburse_reimbursedetailout", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L31", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_reimburse_py", "target": "bx_reimburse_reimburseapplycreate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L41", "weight": 1.0}, {"source": "bx_reimburse_reimburseapplycreate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L41", "weight": 1.0}, {"source": "bx_reimburse_reimburseapplycreate", "target": "bx_reimburse_reimburseapplycreate_details_must_not_be_empty", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L50", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_reimburse_py", "target": "bx_reimburse_reimburseapplyupdate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L56", "weight": 1.0}, {"source": "bx_reimburse_reimburseapplyupdate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L56", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_reimburse_py", "target": "bx_reimburse_reimburseapplyout", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L63", "weight": 1.0}, {"source": "bx_reimburse_reimburseapplyout", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L63", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_reimburse_py", "target": "bx_reimburse_reimburseapprovalcreate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L89", "weight": 1.0}, {"source": "bx_reimburse_reimburseapprovalcreate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L89", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_reimburse_py", "target": "bx_reimburse_reimburseapprovalout", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L96", "weight": 1.0}, {"source": "bx_reimburse_reimburseapprovalout", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L96", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_reimburse_py", "target": "bx_reimburse_reimbursemystatsout", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L109", "weight": 1.0}, {"source": "bx_reimburse_reimbursemystatsout", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L109", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_reimburse_py", "target": "bx_reimburse_reimburseapproverpendingstatsout", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L121", "weight": 1.0}, {"source": "bx_reimburse_reimburseapproverpendingstatsout", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L121", "weight": 1.0}, {"source": "bx_reimburse_reimbursedetailcreate_validate_expense_item_id", "target": "bx_reimburse_coerce_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L25", "weight": 1.0}], "raw_calls": [{"caller_nid": "bx_reimburse_coerce_id", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L12"}, {"caller_nid": "bx_reimburse_reimbursedetailcreate_validate_expense_item_id", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L27"}, {"caller_nid": "bx_reimburse_reimburseapplycreate_details_must_not_be_empty", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L52"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/6705c068242c66ac0ad917e925935ee615e87ecccddcc948c4a4bfc87e90eb28.json b/backend/graphify-out/cache/ast/6705c068242c66ac0ad917e925935ee615e87ecccddcc948c4a4bfc87e90eb28.json new file mode 100644 index 000000000..1d08c4919 --- /dev/null +++ b/backend/graphify-out/cache/ast/6705c068242c66ac0ad917e925935ee615e87ecccddcc948c4a4bfc87e90eb28.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_advance_py", "label": "advance.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L1"}, {"id": "bx_advance_advanceservice", "label": "AdvanceService", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L25"}, {"id": "bx_advance_advanceservice_tenant_no", "label": "._tenant_no()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L27"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L27"}, {"id": "bxusercontext", "label": "BxUserContext", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L27"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L27"}, {"id": "bx_advance_advanceservice_get_by_id", "label": ".get_by_id()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L31"}, {"id": "bxadvanceapply", "label": "BxAdvanceApply", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L31"}, {"id": "bx_advance_advanceservice_get_paged", "label": ".get_paged()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L35"}, {"id": "int", "label": "int", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L35"}, {"id": "any", "label": "Any", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L35"}, {"id": "bx_advance_advanceservice_create", "label": ".create()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L45"}, {"id": "bx_advance_advanceservice_update", "label": ".update()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L62"}, {"id": "bx_advance_advanceservice_soft_delete", "label": ".soft_delete()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L80"}, {"id": "bool", "label": "bool", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L80"}, {"id": "bx_advance_advanceservice_pending_approval", "label": ".pending_approval()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L87"}, {"id": "bx_advance_advanceservice_approved_by_me", "label": ".approved_by_me()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L143"}, {"id": "bx_advance_advanceservice_workflow_nodes", "label": "._workflow_nodes()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L191"}, {"id": "bxworkflownode", "label": "BxWorkflowNode", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L191"}, {"id": "bx_advance_advanceservice_submit", "label": ".submit()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L204"}, {"id": "bx_advance_advanceservice_approve", "label": ".approve()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L221"}, {"id": "bx_advance_advanceservice_reject", "label": ".reject()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L266"}, {"id": "bx_advance_advanceservice_approval_record_dict", "label": "._approval_record_dict()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L303"}, {"id": "bxadvanceapproval", "label": "BxAdvanceApproval", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L303"}, {"id": "bx_advance_advanceservice_latest_approval_per_node", "label": "._latest_approval_per_node()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L316"}, {"id": "bx_advance_advanceservice_query_approvals", "label": "._query_approvals()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L333"}, {"id": "bx_advance_advanceservice_get_approvals", "label": ".get_approvals()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L345"}, {"id": "bx_advance_advanceservice_get_approval_history", "label": ".get_approval_history()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L379"}, {"id": "bx_advance_advanceservice_global_status_counts", "label": ".global_status_counts()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L396"}, {"id": "bx_advance_advanceservice_my_apply_stats", "label": ".my_apply_stats()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L406"}, {"id": "bx_advance_advanceservice_pending_approval_stats", "label": ".pending_approval_stats()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L492"}, {"id": "bx_advance_advanceservice_offset_amount_map", "label": ".offset_amount_map()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L523"}, {"id": "float", "label": "float", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L523"}, {"id": "bx_advance_advanceservice_issue", "label": ".issue()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L542"}, {"id": "bx_advance_advanceservice_finance_issue_stats", "label": ".finance_issue_stats()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L567"}, {"id": "bx_advance_rationale_319", "label": "\u540c\u4e00\u8282\u70b9\u591a\u6b21\u5ba1\u6279\u65f6\uff0c\u53d6 approval_time \u6700\u65b0\u7684\u4e00\u6761\u4f5c\u4e3a\u5f53\u524d\u8282\u70b9\u72b6\u6001\u3002", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L319"}, {"id": "bx_advance_rationale_380", "label": "\u8fd4\u56de\u5168\u90e8\u5ba1\u6279\u52a8\u4f5c\uff0c\u6309\u65f6\u95f4\u6b63\u5e8f\u6392\u5217\uff0c\u7528\u4e8e\u5c55\u793a\u5b8c\u6574\u5ba1\u6279\u5386\u53f2\u3002", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L380"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_advance_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_advance_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_advance_py", "target": "sqlalchemy", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L6", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_advance_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L7", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_advance_py", "target": "app_core_bx_auth", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L9", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_advance_py", "target": "app_core_tenant_context", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L10", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_advance_py", "target": "app_core_utils", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L11", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_advance_py", "target": "app_models_bx_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L12", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_advance_py", "target": "app_services_bx_approval_cycle", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L19", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_advance_py", "target": "app_services_bx_base", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L20", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_advance_py", "target": "app_utils_bx_codegen", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L21", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_advance_py", "target": "app_utils_bx_date_range", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L22", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_advance_py", "target": "bx_advance_advanceservice", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L25", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_tenant_no", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L27", "weight": 1.0}, {"source": "bx_advance_advanceservice_tenant_no", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L27", "weight": 1.0}, {"source": "bx_advance_advanceservice_tenant_no", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L27", "weight": 1.0}, {"source": "bx_advance_advanceservice_tenant_no", "target": "str", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L27", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_get_by_id", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L31", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_by_id", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L31", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_by_id", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L31", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_by_id", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L31", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_by_id", "target": "bxadvanceapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L31", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_get_paged", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L35", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_paged", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L35", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_paged", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L35", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_paged", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L35", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_paged", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L35", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_paged", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L35", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_paged", "target": "bxadvanceapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L35", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_paged", "target": "int", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L35", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_create", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L45", "weight": 1.0}, {"source": "bx_advance_advanceservice_create", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L45", "weight": 1.0}, {"source": "bx_advance_advanceservice_create", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L45", "weight": 1.0}, {"source": "bx_advance_advanceservice_create", "target": "bxadvanceapply", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L45", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_update", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L62", "weight": 1.0}, {"source": "bx_advance_advanceservice_update", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L62", "weight": 1.0}, {"source": "bx_advance_advanceservice_update", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L62", "weight": 1.0}, {"source": "bx_advance_advanceservice_update", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L62", "weight": 1.0}, {"source": "bx_advance_advanceservice_update", "target": "bxadvanceapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L62", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_soft_delete", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L80", "weight": 1.0}, {"source": "bx_advance_advanceservice_soft_delete", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L80", "weight": 1.0}, {"source": "bx_advance_advanceservice_soft_delete", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L80", "weight": 1.0}, {"source": "bx_advance_advanceservice_soft_delete", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L80", "weight": 1.0}, {"source": "bx_advance_advanceservice_soft_delete", "target": "bool", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L80", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_pending_approval", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L87", "weight": 1.0}, {"source": "bx_advance_advanceservice_pending_approval", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L87", "weight": 1.0}, {"source": "bx_advance_advanceservice_pending_approval", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L87", "weight": 1.0}, {"source": "bx_advance_advanceservice_pending_approval", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L87", "weight": 1.0}, {"source": "bx_advance_advanceservice_pending_approval", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L87", "weight": 1.0}, {"source": "bx_advance_advanceservice_pending_approval", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L87", "weight": 1.0}, {"source": "bx_advance_advanceservice_pending_approval", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L87", "weight": 1.0}, {"source": "bx_advance_advanceservice_pending_approval", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L87", "weight": 1.0}, {"source": "bx_advance_advanceservice_pending_approval", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L87", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_approved_by_me", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L143", "weight": 1.0}, {"source": "bx_advance_advanceservice_approved_by_me", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L143", "weight": 1.0}, {"source": "bx_advance_advanceservice_approved_by_me", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L143", "weight": 1.0}, {"source": "bx_advance_advanceservice_approved_by_me", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L143", "weight": 1.0}, {"source": "bx_advance_advanceservice_approved_by_me", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L143", "weight": 1.0}, {"source": "bx_advance_advanceservice_approved_by_me", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L143", "weight": 1.0}, {"source": "bx_advance_advanceservice_approved_by_me", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L143", "weight": 1.0}, {"source": "bx_advance_advanceservice_approved_by_me", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L143", "weight": 1.0}, {"source": "bx_advance_advanceservice_approved_by_me", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L143", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_workflow_nodes", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L191", "weight": 1.0}, {"source": "bx_advance_advanceservice_workflow_nodes", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L191", "weight": 1.0}, {"source": "bx_advance_advanceservice_workflow_nodes", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L191", "weight": 1.0}, {"source": "bx_advance_advanceservice_workflow_nodes", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L191", "weight": 1.0}, {"source": "bx_advance_advanceservice_workflow_nodes", "target": "bxworkflownode", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L191", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_submit", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L204", "weight": 1.0}, {"source": "bx_advance_advanceservice_submit", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L204", "weight": 1.0}, {"source": "bx_advance_advanceservice_submit", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L204", "weight": 1.0}, {"source": "bx_advance_advanceservice_submit", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L204", "weight": 1.0}, {"source": "bx_advance_advanceservice_submit", "target": "bxadvanceapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L204", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_approve", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L221", "weight": 1.0}, {"source": "bx_advance_advanceservice_approve", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L221", "weight": 1.0}, {"source": "bx_advance_advanceservice_approve", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L221", "weight": 1.0}, {"source": "bx_advance_advanceservice_approve", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L221", "weight": 1.0}, {"source": "bx_advance_advanceservice_approve", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L221", "weight": 1.0}, {"source": "bx_advance_advanceservice_approve", "target": "bxadvanceapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L221", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_reject", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L266", "weight": 1.0}, {"source": "bx_advance_advanceservice_reject", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L266", "weight": 1.0}, {"source": "bx_advance_advanceservice_reject", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L266", "weight": 1.0}, {"source": "bx_advance_advanceservice_reject", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L266", "weight": 1.0}, {"source": "bx_advance_advanceservice_reject", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L266", "weight": 1.0}, {"source": "bx_advance_advanceservice_reject", "target": "bxadvanceapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L266", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_approval_record_dict", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L303", "weight": 1.0}, {"source": "bx_advance_advanceservice_approval_record_dict", "target": "bxadvanceapproval", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L303", "weight": 1.0}, {"source": "bx_advance_advanceservice_approval_record_dict", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L303", "weight": 1.0}, {"source": "bx_advance_advanceservice_approval_record_dict", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L303", "weight": 1.0}, {"source": "bx_advance_advanceservice_approval_record_dict", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L303", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_latest_approval_per_node", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L316", "weight": 1.0}, {"source": "bx_advance_advanceservice_latest_approval_per_node", "target": "bxadvanceapproval", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L316", "weight": 1.0}, {"source": "bx_advance_advanceservice_latest_approval_per_node", "target": "int", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L316", "weight": 1.0}, {"source": "bx_advance_advanceservice_latest_approval_per_node", "target": "bxadvanceapproval", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L316", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_query_approvals", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L333", "weight": 1.0}, {"source": "bx_advance_advanceservice_query_approvals", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L333", "weight": 1.0}, {"source": "bx_advance_advanceservice_query_approvals", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L333", "weight": 1.0}, {"source": "bx_advance_advanceservice_query_approvals", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L333", "weight": 1.0}, {"source": "bx_advance_advanceservice_query_approvals", "target": "bxadvanceapproval", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L333", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_get_approvals", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L345", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_approvals", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L345", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_approvals", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L345", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_approvals", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L345", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_approvals", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L345", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_approvals", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L345", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_get_approval_history", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L379", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_approval_history", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L379", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_approval_history", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L379", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_approval_history", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L379", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_approval_history", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L379", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_approval_history", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L379", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_global_status_counts", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L396", "weight": 1.0}, {"source": "bx_advance_advanceservice_global_status_counts", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L396", "weight": 1.0}, {"source": "bx_advance_advanceservice_global_status_counts", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L396", "weight": 1.0}, {"source": "bx_advance_advanceservice_global_status_counts", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L396", "weight": 1.0}, {"source": "bx_advance_advanceservice_global_status_counts", "target": "int", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L396", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_my_apply_stats", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L406", "weight": 1.0}, {"source": "bx_advance_advanceservice_my_apply_stats", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L406", "weight": 1.0}, {"source": "bx_advance_advanceservice_my_apply_stats", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L406", "weight": 1.0}, {"source": "bx_advance_advanceservice_my_apply_stats", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L406", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_pending_approval_stats", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L492", "weight": 1.0}, {"source": "bx_advance_advanceservice_pending_approval_stats", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L492", "weight": 1.0}, {"source": "bx_advance_advanceservice_pending_approval_stats", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L492", "weight": 1.0}, {"source": "bx_advance_advanceservice_pending_approval_stats", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L492", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_offset_amount_map", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L523", "weight": 1.0}, {"source": "bx_advance_advanceservice_offset_amount_map", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L523", "weight": 1.0}, {"source": "bx_advance_advanceservice_offset_amount_map", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L523", "weight": 1.0}, {"source": "bx_advance_advanceservice_offset_amount_map", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L523", "weight": 1.0}, {"source": "bx_advance_advanceservice_offset_amount_map", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L523", "weight": 1.0}, {"source": "bx_advance_advanceservice_offset_amount_map", "target": "float", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L523", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_issue", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L542", "weight": 1.0}, {"source": "bx_advance_advanceservice_issue", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L542", "weight": 1.0}, {"source": "bx_advance_advanceservice_issue", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L542", "weight": 1.0}, {"source": "bx_advance_advanceservice_issue", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L542", "weight": 1.0}, {"source": "bx_advance_advanceservice_issue", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L542", "weight": 1.0}, {"source": "bx_advance_advanceservice_issue", "target": "float", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L542", "weight": 1.0}, {"source": "bx_advance_advanceservice_issue", "target": "bxadvanceapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L542", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_finance_issue_stats", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L567", "weight": 1.0}, {"source": "bx_advance_advanceservice_finance_issue_stats", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L567", "weight": 1.0}, {"source": "bx_advance_advanceservice_finance_issue_stats", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L567", "weight": 1.0}, {"source": "bx_advance_advanceservice_create", "target": "bx_advance_advanceservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L51", "weight": 1.0}, {"source": "bx_advance_advanceservice_update", "target": "bx_advance_advanceservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L69", "weight": 1.0}, {"source": "bx_advance_advanceservice_soft_delete", "target": "bx_advance_advanceservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L81", "weight": 1.0}, {"source": "bx_advance_advanceservice_submit", "target": "bx_advance_advanceservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L205", "weight": 1.0}, {"source": "bx_advance_advanceservice_submit", "target": "bx_advance_advanceservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L206", "weight": 1.0}, {"source": "bx_advance_advanceservice_submit", "target": "bx_advance_advanceservice_workflow_nodes", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L214", "weight": 1.0}, {"source": "bx_advance_advanceservice_approve", "target": "bx_advance_advanceservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L224", "weight": 1.0}, {"source": "bx_advance_advanceservice_approve", "target": "bx_advance_advanceservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L225", "weight": 1.0}, {"source": "bx_advance_advanceservice_approve", "target": "bx_advance_advanceservice_workflow_nodes", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L228", "weight": 1.0}, {"source": "bx_advance_advanceservice_approve", "target": "bxadvanceapproval", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L241", "weight": 1.0}, {"source": "bx_advance_advanceservice_reject", "target": "bx_advance_advanceservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L269", "weight": 1.0}, {"source": "bx_advance_advanceservice_reject", "target": "bx_advance_advanceservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L270", "weight": 1.0}, {"source": "bx_advance_advanceservice_reject", "target": "bx_advance_advanceservice_workflow_nodes", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L273", "weight": 1.0}, {"source": "bx_advance_advanceservice_reject", "target": "bxadvanceapproval", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L281", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_approvals", "target": "bx_advance_advanceservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L346", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_approvals", "target": "bx_advance_advanceservice_workflow_nodes", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L352", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_approvals", "target": "bx_advance_advanceservice_query_approvals", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L355", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_approvals", "target": "bx_advance_advanceservice_latest_approval_per_node", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L357", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_approvals", "target": "bx_advance_advanceservice_approval_record_dict", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L362", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_approval_history", "target": "bx_advance_advanceservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L381", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_approval_history", "target": "bx_advance_advanceservice_approval_record_dict", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L393", "weight": 1.0}, {"source": "bx_advance_advanceservice_issue", "target": "bx_advance_advanceservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L549", "weight": 1.0}, {"source": "bx_advance_advanceservice_issue", "target": "bx_advance_advanceservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L550", "weight": 1.0}, {"source": "bx_advance_rationale_319", "target": "bx_advance_advanceservice_latest_approval_per_node", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L319", "weight": 1.0}, {"source": "bx_advance_rationale_380", "target": "bx_advance_advanceservice_get_approval_history", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L380", "weight": 1.0}], "raw_calls": [{"caller_nid": "bx_advance_advanceservice_tenant_no", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L28"}, {"caller_nid": "bx_advance_advanceservice_tenant_no", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L28"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "join", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L98"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L98"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "and_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L101"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L117"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L118"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L119"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "parse_create_time_day_bounds", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L124"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "subquery", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L130"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L131"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L131"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L131"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L131"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "limit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L133"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "offset", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L133"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L133"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "join", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L133"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L133"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L135"}, {"caller_nid": "bx_advance_advanceservice_approved_by_me", "callee": "subquery", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L154"}, {"caller_nid": "bx_advance_advanceservice_approved_by_me", "callee": "distinct", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L154"}, {"caller_nid": "bx_advance_advanceservice_approved_by_me", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L154"}, {"caller_nid": "bx_advance_advanceservice_approved_by_me", "callee": "join", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L164"}, {"caller_nid": "bx_advance_advanceservice_approved_by_me", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L164"}, {"caller_nid": "bx_advance_advanceservice_approved_by_me", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L170"}, {"caller_nid": "bx_advance_advanceservice_approved_by_me", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L171"}, {"caller_nid": "bx_advance_advanceservice_approved_by_me", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L172"}, {"caller_nid": "bx_advance_advanceservice_approved_by_me", "callee": "parse_create_time_day_bounds", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L177"}, {"caller_nid": "bx_advance_advanceservice_approved_by_me", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L181"}, {"caller_nid": "bx_advance_advanceservice_approved_by_me", "callee": "limit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L183"}, {"caller_nid": "bx_advance_advanceservice_approved_by_me", "callee": "offset", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L183"}, {"caller_nid": "bx_advance_advanceservice_approved_by_me", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L183"}, {"caller_nid": "bx_advance_advanceservice_approved_by_me", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L183"}, {"caller_nid": "bx_advance_advanceservice_workflow_nodes", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L193"}, {"caller_nid": "bx_advance_advanceservice_workflow_nodes", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L193"}, {"caller_nid": "bx_advance_advanceservice_submit", "callee": "generate_apply_code", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L211"}, {"caller_nid": "bx_advance_advanceservice_submit", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L217"}, {"caller_nid": "bx_advance_advanceservice_approve", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L242"}, {"caller_nid": "bx_advance_advanceservice_approve", "callee": "now", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L250"}, {"caller_nid": "bx_advance_advanceservice_approve", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L255"}, {"caller_nid": "bx_advance_advanceservice_approve", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L262"}, {"caller_nid": "bx_advance_advanceservice_reject", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L282"}, {"caller_nid": "bx_advance_advanceservice_reject", "callee": "now", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L290"}, {"caller_nid": "bx_advance_advanceservice_reject", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L295"}, {"caller_nid": "bx_advance_advanceservice_reject", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L299"}, {"caller_nid": "bx_advance_advanceservice_latest_approval_per_node", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L322"}, {"caller_nid": "bx_advance_advanceservice_query_approvals", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L335"}, {"caller_nid": "bx_advance_advanceservice_get_approvals", "callee": "filter_current_cycle_approvals", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L356"}, {"caller_nid": "bx_advance_advanceservice_get_approvals", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L360"}, {"caller_nid": "bx_advance_advanceservice_get_approvals", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L362"}, {"caller_nid": "bx_advance_advanceservice_get_approvals", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L364"}, {"caller_nid": "bx_advance_advanceservice_get_approval_history", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L384"}, {"caller_nid": "bx_advance_advanceservice_get_approval_history", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L384"}, {"caller_nid": "bx_advance_advanceservice_get_approval_history", "callee": "asc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L390"}, {"caller_nid": "bx_advance_advanceservice_get_approval_history", "callee": "asc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L390"}, {"caller_nid": "bx_advance_advanceservice_global_status_counts", "callee": "group_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L398"}, {"caller_nid": "bx_advance_advanceservice_global_status_counts", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L398"}, {"caller_nid": "bx_advance_advanceservice_global_status_counts", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L398"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "and_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L407"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L410"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L415"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L415"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L415"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L415"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L417"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L417"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L417"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L417"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L424"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L424"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L424"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L424"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L431"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L431"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L431"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L431"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L439"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L439"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L439"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L439"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L446"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L446"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L446"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "current_month_bounds", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L451"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L453"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L453"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L453"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L459"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L459"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L459"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L459"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L466"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "join", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L466"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L466"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L466"}, {"caller_nid": "bx_advance_advanceservice_pending_approval_stats", "callee": "subquery", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L493"}, {"caller_nid": "bx_advance_advanceservice_pending_approval_stats", "callee": "join", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L494"}, {"caller_nid": "bx_advance_advanceservice_pending_approval_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L494"}, {"caller_nid": "bx_advance_advanceservice_pending_approval_stats", "callee": "and_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L497"}, {"caller_nid": "bx_advance_advanceservice_pending_approval_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L511"}, {"caller_nid": "bx_advance_advanceservice_pending_approval_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L511"}, {"caller_nid": "bx_advance_advanceservice_pending_approval_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L511"}, {"caller_nid": "bx_advance_advanceservice_pending_approval_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L511"}, {"caller_nid": "bx_advance_advanceservice_pending_approval_stats", "callee": "current_month_bounds", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L512"}, {"caller_nid": "bx_advance_advanceservice_pending_approval_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L514"}, {"caller_nid": "bx_advance_advanceservice_pending_approval_stats", "callee": "join", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L514"}, {"caller_nid": "bx_advance_advanceservice_pending_approval_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L514"}, {"caller_nid": "bx_advance_advanceservice_pending_approval_stats", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L514"}, {"caller_nid": "bx_advance_advanceservice_offset_amount_map", "callee": "group_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L527"}, {"caller_nid": "bx_advance_advanceservice_offset_amount_map", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L527"}, {"caller_nid": "bx_advance_advanceservice_offset_amount_map", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L529"}, {"caller_nid": "bx_advance_advanceservice_offset_amount_map", "callee": "in_", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L532"}, {"caller_nid": "bx_advance_advanceservice_issue", "callee": "now", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L556"}, {"caller_nid": "bx_advance_advanceservice_issue", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L563"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "and_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L568"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "and_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L569"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L571"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "is_", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L571"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L573"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L573"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L573"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L573"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L575"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L575"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L575"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L575"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L582"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L582"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L582"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "current_month_bounds", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L587"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L588"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L590"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L590"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L590"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "isnot", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L594"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/680cf05a952f4069441e8fe432c96d2feb6cb9e8cddd24ca1109d5f89f5fb06c.json b/backend/graphify-out/cache/ast/680cf05a952f4069441e8fe432c96d2feb6cb9e8cddd24ca1109d5f89f5fb06c.json new file mode 100644 index 000000000..a974e7ef6 --- /dev/null +++ b/backend/graphify-out/cache/ast/680cf05a952f4069441e8fe432c96d2feb6cb9e8cddd24ca1109d5f89f5fb06c.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_advance_py", "label": "advance.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L1"}, {"id": "bx_advance_coerce_optional_id", "label": "_coerce_optional_id()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L9"}, {"id": "bx_advance_advanceapplycreate", "label": "AdvanceApplyCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L16"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "bx_advance_advanceapplycreate_validate_expense_item_id", "label": ".validate_expense_item_id()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L27"}, {"id": "bx_advance_advanceapplyupdate", "label": "AdvanceApplyUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L31"}, {"id": "bx_advance_advanceapplyupdate_validate_expense_item_id", "label": ".validate_expense_item_id()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L42"}, {"id": "bx_advance_advanceapplyout", "label": "AdvanceApplyOut", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L46"}, {"id": "bx_advance_advanceapprovalcreate", "label": "AdvanceApprovalCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L69"}, {"id": "bx_advance_advanceapprovalout", "label": "AdvanceApprovalOut", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L76"}, {"id": "bx_advance_advancemystatsout", "label": "AdvanceMyStatsOut", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L89"}, {"id": "bx_advance_advanceapproverpendingstatsout", "label": "AdvanceApproverPendingStatsOut", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L104"}, {"id": "bx_advance_advanceissueout", "label": "AdvanceIssueOut", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L111"}, {"id": "bx_advance_advanceissuerequest", "label": "AdvanceIssueRequest", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L130"}, {"id": "bx_advance_advanceoffsetrecordout", "label": "AdvanceOffsetRecordOut", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L137"}, {"id": "bx_advance_advancefinanceissuestatsout", "label": "AdvanceFinanceIssueStatsOut", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L150"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_advance_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L1", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_advance_py", "target": "pydantic", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_advance_py", "target": "pydantic_alias_generators", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_advance_py", "target": "app_schemas_bx_common", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L6", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_advance_py", "target": "bx_advance_coerce_optional_id", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L9", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_advance_py", "target": "bx_advance_advanceapplycreate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L16", "weight": 1.0}, {"source": "bx_advance_advanceapplycreate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L16", "weight": 1.0}, {"source": "bx_advance_advanceapplycreate", "target": "bx_advance_advanceapplycreate_validate_expense_item_id", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L27", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_advance_py", "target": "bx_advance_advanceapplyupdate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L31", "weight": 1.0}, {"source": "bx_advance_advanceapplyupdate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L31", "weight": 1.0}, {"source": "bx_advance_advanceapplyupdate", "target": "bx_advance_advanceapplyupdate_validate_expense_item_id", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L42", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_advance_py", "target": "bx_advance_advanceapplyout", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L46", "weight": 1.0}, {"source": "bx_advance_advanceapplyout", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L46", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_advance_py", "target": "bx_advance_advanceapprovalcreate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L69", "weight": 1.0}, {"source": "bx_advance_advanceapprovalcreate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L69", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_advance_py", "target": "bx_advance_advanceapprovalout", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L76", "weight": 1.0}, {"source": "bx_advance_advanceapprovalout", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L76", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_advance_py", "target": "bx_advance_advancemystatsout", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L89", "weight": 1.0}, {"source": "bx_advance_advancemystatsout", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L89", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_advance_py", "target": "bx_advance_advanceapproverpendingstatsout", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L104", "weight": 1.0}, {"source": "bx_advance_advanceapproverpendingstatsout", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L104", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_advance_py", "target": "bx_advance_advanceissueout", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L111", "weight": 1.0}, {"source": "bx_advance_advanceissueout", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L111", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_advance_py", "target": "bx_advance_advanceissuerequest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L130", "weight": 1.0}, {"source": "bx_advance_advanceissuerequest", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L130", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_advance_py", "target": "bx_advance_advanceoffsetrecordout", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L137", "weight": 1.0}, {"source": "bx_advance_advanceoffsetrecordout", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L137", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_advance_py", "target": "bx_advance_advancefinanceissuestatsout", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L150", "weight": 1.0}, {"source": "bx_advance_advancefinanceissuestatsout", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L150", "weight": 1.0}, {"source": "bx_advance_advanceapplycreate_validate_expense_item_id", "target": "bx_advance_coerce_optional_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L28", "weight": 1.0}, {"source": "bx_advance_advanceapplyupdate_validate_expense_item_id", "target": "bx_advance_coerce_optional_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L43", "weight": 1.0}], "raw_calls": [{"caller_nid": "bx_advance_coerce_optional_id", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py", "source_location": "L12"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/69d1ff449abb1e0430ec94d8a710cf44259a5940dd9ae062d22f1579bb6dfcba.json b/backend/graphify-out/cache/ast/69d1ff449abb1e0430ec94d8a710cf44259a5940dd9ae062d22f1579bb6dfcba.json new file mode 100644 index 000000000..15b514d6c --- /dev/null +++ b/backend/graphify-out/cache/ast/69d1ff449abb1e0430ec94d8a710cf44259a5940dd9ae062d22f1579bb6dfcba.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_advance_py", "label": "advance.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L1"}, {"id": "bx_advance_advanceservice", "label": "AdvanceService", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L24"}, {"id": "bx_advance_advanceservice_tenant_no", "label": "._tenant_no()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L26"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L26"}, {"id": "bxusercontext", "label": "BxUserContext", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L26"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L26"}, {"id": "bx_advance_advanceservice_get_by_id", "label": ".get_by_id()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L30"}, {"id": "bxadvanceapply", "label": "BxAdvanceApply", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L30"}, {"id": "bx_advance_advanceservice_get_paged", "label": ".get_paged()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L34"}, {"id": "int", "label": "int", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L34"}, {"id": "any", "label": "Any", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L34"}, {"id": "bx_advance_advanceservice_create", "label": ".create()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L44"}, {"id": "bx_advance_advanceservice_update", "label": ".update()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L61"}, {"id": "bx_advance_advanceservice_soft_delete", "label": ".soft_delete()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L79"}, {"id": "bool", "label": "bool", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L79"}, {"id": "bx_advance_advanceservice_pending_approval", "label": ".pending_approval()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L86"}, {"id": "bx_advance_advanceservice_approved_by_me", "label": ".approved_by_me()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L142"}, {"id": "bx_advance_advanceservice_workflow_nodes", "label": "._workflow_nodes()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L190"}, {"id": "bxworkflownode", "label": "BxWorkflowNode", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L190"}, {"id": "bx_advance_advanceservice_submit", "label": ".submit()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L203"}, {"id": "bx_advance_advanceservice_approve", "label": ".approve()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L220"}, {"id": "bx_advance_advanceservice_reject", "label": ".reject()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L265"}, {"id": "bx_advance_advanceservice_approval_record_dict", "label": "._approval_record_dict()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L302"}, {"id": "bxadvanceapproval", "label": "BxAdvanceApproval", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L302"}, {"id": "bx_advance_advanceservice_latest_approval_per_node", "label": "._latest_approval_per_node()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L315"}, {"id": "bx_advance_advanceservice_query_approvals", "label": "._query_approvals()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L332"}, {"id": "bx_advance_advanceservice_get_approvals", "label": ".get_approvals()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L344"}, {"id": "bx_advance_advanceservice_get_approval_history", "label": ".get_approval_history()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L377"}, {"id": "bx_advance_advanceservice_global_status_counts", "label": ".global_status_counts()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L394"}, {"id": "bx_advance_advanceservice_my_apply_stats", "label": ".my_apply_stats()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L404"}, {"id": "bx_advance_advanceservice_pending_approval_stats", "label": ".pending_approval_stats()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L487"}, {"id": "bx_advance_advanceservice_offset_amount_map", "label": ".offset_amount_map()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L518"}, {"id": "float", "label": "float", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L518"}, {"id": "bx_advance_advanceservice_issue", "label": ".issue()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L537"}, {"id": "bx_advance_advanceservice_finance_issue_stats", "label": ".finance_issue_stats()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L562"}, {"id": "bx_advance_rationale_318", "label": "\u540c\u4e00\u8282\u70b9\u591a\u6b21\u5ba1\u6279\u65f6\uff0c\u53d6 approval_time \u6700\u65b0\u7684\u4e00\u6761\u4f5c\u4e3a\u5f53\u524d\u8282\u70b9\u72b6\u6001\u3002", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L318"}, {"id": "bx_advance_rationale_378", "label": "\u8fd4\u56de\u5168\u90e8\u5ba1\u6279\u52a8\u4f5c\uff0c\u6309\u65f6\u95f4\u6b63\u5e8f\u6392\u5217\uff0c\u7528\u4e8e\u5c55\u793a\u5b8c\u6574\u5ba1\u6279\u5386\u53f2\u3002", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L378"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_advance_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_advance_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_advance_py", "target": "sqlalchemy", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L6", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_advance_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L7", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_advance_py", "target": "app_core_bx_auth", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L9", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_advance_py", "target": "app_core_tenant_context", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L10", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_advance_py", "target": "app_core_utils", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L11", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_advance_py", "target": "app_models_bx_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L12", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_advance_py", "target": "app_services_bx_base", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L19", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_advance_py", "target": "app_utils_bx_codegen", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L20", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_advance_py", "target": "app_utils_bx_date_range", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L21", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_advance_py", "target": "bx_advance_advanceservice", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L24", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_tenant_no", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L26", "weight": 1.0}, {"source": "bx_advance_advanceservice_tenant_no", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L26", "weight": 1.0}, {"source": "bx_advance_advanceservice_tenant_no", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L26", "weight": 1.0}, {"source": "bx_advance_advanceservice_tenant_no", "target": "str", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L26", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_get_by_id", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L30", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_by_id", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L30", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_by_id", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L30", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_by_id", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L30", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_by_id", "target": "bxadvanceapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L30", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_get_paged", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L34", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_paged", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L34", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_paged", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L34", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_paged", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L34", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_paged", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L34", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_paged", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L34", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_paged", "target": "bxadvanceapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L34", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_paged", "target": "int", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L34", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_create", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L44", "weight": 1.0}, {"source": "bx_advance_advanceservice_create", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L44", "weight": 1.0}, {"source": "bx_advance_advanceservice_create", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L44", "weight": 1.0}, {"source": "bx_advance_advanceservice_create", "target": "bxadvanceapply", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L44", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_update", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L61", "weight": 1.0}, {"source": "bx_advance_advanceservice_update", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L61", "weight": 1.0}, {"source": "bx_advance_advanceservice_update", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L61", "weight": 1.0}, {"source": "bx_advance_advanceservice_update", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L61", "weight": 1.0}, {"source": "bx_advance_advanceservice_update", "target": "bxadvanceapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L61", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_soft_delete", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L79", "weight": 1.0}, {"source": "bx_advance_advanceservice_soft_delete", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L79", "weight": 1.0}, {"source": "bx_advance_advanceservice_soft_delete", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L79", "weight": 1.0}, {"source": "bx_advance_advanceservice_soft_delete", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L79", "weight": 1.0}, {"source": "bx_advance_advanceservice_soft_delete", "target": "bool", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L79", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_pending_approval", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L86", "weight": 1.0}, {"source": "bx_advance_advanceservice_pending_approval", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L86", "weight": 1.0}, {"source": "bx_advance_advanceservice_pending_approval", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L86", "weight": 1.0}, {"source": "bx_advance_advanceservice_pending_approval", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L86", "weight": 1.0}, {"source": "bx_advance_advanceservice_pending_approval", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L86", "weight": 1.0}, {"source": "bx_advance_advanceservice_pending_approval", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L86", "weight": 1.0}, {"source": "bx_advance_advanceservice_pending_approval", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L86", "weight": 1.0}, {"source": "bx_advance_advanceservice_pending_approval", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L86", "weight": 1.0}, {"source": "bx_advance_advanceservice_pending_approval", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L86", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_approved_by_me", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L142", "weight": 1.0}, {"source": "bx_advance_advanceservice_approved_by_me", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L142", "weight": 1.0}, {"source": "bx_advance_advanceservice_approved_by_me", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L142", "weight": 1.0}, {"source": "bx_advance_advanceservice_approved_by_me", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L142", "weight": 1.0}, {"source": "bx_advance_advanceservice_approved_by_me", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L142", "weight": 1.0}, {"source": "bx_advance_advanceservice_approved_by_me", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L142", "weight": 1.0}, {"source": "bx_advance_advanceservice_approved_by_me", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L142", "weight": 1.0}, {"source": "bx_advance_advanceservice_approved_by_me", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L142", "weight": 1.0}, {"source": "bx_advance_advanceservice_approved_by_me", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L142", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_workflow_nodes", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L190", "weight": 1.0}, {"source": "bx_advance_advanceservice_workflow_nodes", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L190", "weight": 1.0}, {"source": "bx_advance_advanceservice_workflow_nodes", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L190", "weight": 1.0}, {"source": "bx_advance_advanceservice_workflow_nodes", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L190", "weight": 1.0}, {"source": "bx_advance_advanceservice_workflow_nodes", "target": "bxworkflownode", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L190", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_submit", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L203", "weight": 1.0}, {"source": "bx_advance_advanceservice_submit", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L203", "weight": 1.0}, {"source": "bx_advance_advanceservice_submit", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L203", "weight": 1.0}, {"source": "bx_advance_advanceservice_submit", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L203", "weight": 1.0}, {"source": "bx_advance_advanceservice_submit", "target": "bxadvanceapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L203", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_approve", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L220", "weight": 1.0}, {"source": "bx_advance_advanceservice_approve", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L220", "weight": 1.0}, {"source": "bx_advance_advanceservice_approve", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L220", "weight": 1.0}, {"source": "bx_advance_advanceservice_approve", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L220", "weight": 1.0}, {"source": "bx_advance_advanceservice_approve", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L220", "weight": 1.0}, {"source": "bx_advance_advanceservice_approve", "target": "bxadvanceapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L220", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_reject", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L265", "weight": 1.0}, {"source": "bx_advance_advanceservice_reject", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L265", "weight": 1.0}, {"source": "bx_advance_advanceservice_reject", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L265", "weight": 1.0}, {"source": "bx_advance_advanceservice_reject", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L265", "weight": 1.0}, {"source": "bx_advance_advanceservice_reject", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L265", "weight": 1.0}, {"source": "bx_advance_advanceservice_reject", "target": "bxadvanceapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L265", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_approval_record_dict", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L302", "weight": 1.0}, {"source": "bx_advance_advanceservice_approval_record_dict", "target": "bxadvanceapproval", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L302", "weight": 1.0}, {"source": "bx_advance_advanceservice_approval_record_dict", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L302", "weight": 1.0}, {"source": "bx_advance_advanceservice_approval_record_dict", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L302", "weight": 1.0}, {"source": "bx_advance_advanceservice_approval_record_dict", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L302", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_latest_approval_per_node", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L315", "weight": 1.0}, {"source": "bx_advance_advanceservice_latest_approval_per_node", "target": "bxadvanceapproval", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L315", "weight": 1.0}, {"source": "bx_advance_advanceservice_latest_approval_per_node", "target": "int", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L315", "weight": 1.0}, {"source": "bx_advance_advanceservice_latest_approval_per_node", "target": "bxadvanceapproval", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L315", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_query_approvals", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L332", "weight": 1.0}, {"source": "bx_advance_advanceservice_query_approvals", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L332", "weight": 1.0}, {"source": "bx_advance_advanceservice_query_approvals", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L332", "weight": 1.0}, {"source": "bx_advance_advanceservice_query_approvals", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L332", "weight": 1.0}, {"source": "bx_advance_advanceservice_query_approvals", "target": "bxadvanceapproval", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L332", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_get_approvals", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L344", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_approvals", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L344", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_approvals", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L344", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_approvals", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L344", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_approvals", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L344", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_approvals", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L344", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_get_approval_history", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L377", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_approval_history", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L377", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_approval_history", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L377", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_approval_history", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L377", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_approval_history", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L377", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_approval_history", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L377", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_global_status_counts", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L394", "weight": 1.0}, {"source": "bx_advance_advanceservice_global_status_counts", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L394", "weight": 1.0}, {"source": "bx_advance_advanceservice_global_status_counts", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L394", "weight": 1.0}, {"source": "bx_advance_advanceservice_global_status_counts", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L394", "weight": 1.0}, {"source": "bx_advance_advanceservice_global_status_counts", "target": "int", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L394", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_my_apply_stats", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L404", "weight": 1.0}, {"source": "bx_advance_advanceservice_my_apply_stats", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L404", "weight": 1.0}, {"source": "bx_advance_advanceservice_my_apply_stats", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L404", "weight": 1.0}, {"source": "bx_advance_advanceservice_my_apply_stats", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L404", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_pending_approval_stats", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L487", "weight": 1.0}, {"source": "bx_advance_advanceservice_pending_approval_stats", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L487", "weight": 1.0}, {"source": "bx_advance_advanceservice_pending_approval_stats", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L487", "weight": 1.0}, {"source": "bx_advance_advanceservice_pending_approval_stats", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L487", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_offset_amount_map", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L518", "weight": 1.0}, {"source": "bx_advance_advanceservice_offset_amount_map", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L518", "weight": 1.0}, {"source": "bx_advance_advanceservice_offset_amount_map", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L518", "weight": 1.0}, {"source": "bx_advance_advanceservice_offset_amount_map", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L518", "weight": 1.0}, {"source": "bx_advance_advanceservice_offset_amount_map", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L518", "weight": 1.0}, {"source": "bx_advance_advanceservice_offset_amount_map", "target": "float", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L518", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_issue", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L537", "weight": 1.0}, {"source": "bx_advance_advanceservice_issue", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L537", "weight": 1.0}, {"source": "bx_advance_advanceservice_issue", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L537", "weight": 1.0}, {"source": "bx_advance_advanceservice_issue", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L537", "weight": 1.0}, {"source": "bx_advance_advanceservice_issue", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L537", "weight": 1.0}, {"source": "bx_advance_advanceservice_issue", "target": "float", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L537", "weight": 1.0}, {"source": "bx_advance_advanceservice_issue", "target": "bxadvanceapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L537", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_finance_issue_stats", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L562", "weight": 1.0}, {"source": "bx_advance_advanceservice_finance_issue_stats", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L562", "weight": 1.0}, {"source": "bx_advance_advanceservice_finance_issue_stats", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L562", "weight": 1.0}, {"source": "bx_advance_advanceservice_create", "target": "bx_advance_advanceservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L50", "weight": 1.0}, {"source": "bx_advance_advanceservice_update", "target": "bx_advance_advanceservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L68", "weight": 1.0}, {"source": "bx_advance_advanceservice_soft_delete", "target": "bx_advance_advanceservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L80", "weight": 1.0}, {"source": "bx_advance_advanceservice_submit", "target": "bx_advance_advanceservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L204", "weight": 1.0}, {"source": "bx_advance_advanceservice_submit", "target": "bx_advance_advanceservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L205", "weight": 1.0}, {"source": "bx_advance_advanceservice_submit", "target": "bx_advance_advanceservice_workflow_nodes", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L213", "weight": 1.0}, {"source": "bx_advance_advanceservice_approve", "target": "bx_advance_advanceservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L223", "weight": 1.0}, {"source": "bx_advance_advanceservice_approve", "target": "bx_advance_advanceservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L224", "weight": 1.0}, {"source": "bx_advance_advanceservice_approve", "target": "bx_advance_advanceservice_workflow_nodes", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L227", "weight": 1.0}, {"source": "bx_advance_advanceservice_approve", "target": "bxadvanceapproval", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L240", "weight": 1.0}, {"source": "bx_advance_advanceservice_reject", "target": "bx_advance_advanceservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L268", "weight": 1.0}, {"source": "bx_advance_advanceservice_reject", "target": "bx_advance_advanceservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L269", "weight": 1.0}, {"source": "bx_advance_advanceservice_reject", "target": "bx_advance_advanceservice_workflow_nodes", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L272", "weight": 1.0}, {"source": "bx_advance_advanceservice_reject", "target": "bxadvanceapproval", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L280", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_approvals", "target": "bx_advance_advanceservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L345", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_approvals", "target": "bx_advance_advanceservice_workflow_nodes", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L351", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_approvals", "target": "bx_advance_advanceservice_query_approvals", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L354", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_approvals", "target": "bx_advance_advanceservice_latest_approval_per_node", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L355", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_approvals", "target": "bx_advance_advanceservice_approval_record_dict", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L360", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_approval_history", "target": "bx_advance_advanceservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L379", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_approval_history", "target": "bx_advance_advanceservice_approval_record_dict", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L391", "weight": 1.0}, {"source": "bx_advance_advanceservice_issue", "target": "bx_advance_advanceservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L544", "weight": 1.0}, {"source": "bx_advance_advanceservice_issue", "target": "bx_advance_advanceservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L545", "weight": 1.0}, {"source": "bx_advance_rationale_318", "target": "bx_advance_advanceservice_latest_approval_per_node", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L318", "weight": 1.0}, {"source": "bx_advance_rationale_378", "target": "bx_advance_advanceservice_get_approval_history", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L378", "weight": 1.0}], "raw_calls": [{"caller_nid": "bx_advance_advanceservice_tenant_no", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L27"}, {"caller_nid": "bx_advance_advanceservice_tenant_no", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L27"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "join", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L97"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L97"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "and_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L100"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L116"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L117"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L118"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "parse_create_time_day_bounds", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L123"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "subquery", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L129"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L130"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L130"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L130"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L130"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "limit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L132"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "offset", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L132"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L132"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "join", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L132"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L132"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L134"}, {"caller_nid": "bx_advance_advanceservice_approved_by_me", "callee": "subquery", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L153"}, {"caller_nid": "bx_advance_advanceservice_approved_by_me", "callee": "distinct", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L153"}, {"caller_nid": "bx_advance_advanceservice_approved_by_me", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L153"}, {"caller_nid": "bx_advance_advanceservice_approved_by_me", "callee": "join", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L163"}, {"caller_nid": "bx_advance_advanceservice_approved_by_me", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L163"}, {"caller_nid": "bx_advance_advanceservice_approved_by_me", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L169"}, {"caller_nid": "bx_advance_advanceservice_approved_by_me", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L170"}, {"caller_nid": "bx_advance_advanceservice_approved_by_me", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L171"}, {"caller_nid": "bx_advance_advanceservice_approved_by_me", "callee": "parse_create_time_day_bounds", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L176"}, {"caller_nid": "bx_advance_advanceservice_approved_by_me", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L180"}, {"caller_nid": "bx_advance_advanceservice_approved_by_me", "callee": "limit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L182"}, {"caller_nid": "bx_advance_advanceservice_approved_by_me", "callee": "offset", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L182"}, {"caller_nid": "bx_advance_advanceservice_approved_by_me", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L182"}, {"caller_nid": "bx_advance_advanceservice_approved_by_me", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L182"}, {"caller_nid": "bx_advance_advanceservice_workflow_nodes", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L192"}, {"caller_nid": "bx_advance_advanceservice_workflow_nodes", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L192"}, {"caller_nid": "bx_advance_advanceservice_submit", "callee": "generate_apply_code", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L210"}, {"caller_nid": "bx_advance_advanceservice_submit", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L216"}, {"caller_nid": "bx_advance_advanceservice_approve", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L241"}, {"caller_nid": "bx_advance_advanceservice_approve", "callee": "now", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L249"}, {"caller_nid": "bx_advance_advanceservice_approve", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L254"}, {"caller_nid": "bx_advance_advanceservice_approve", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L261"}, {"caller_nid": "bx_advance_advanceservice_reject", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L281"}, {"caller_nid": "bx_advance_advanceservice_reject", "callee": "now", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L289"}, {"caller_nid": "bx_advance_advanceservice_reject", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L294"}, {"caller_nid": "bx_advance_advanceservice_reject", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L298"}, {"caller_nid": "bx_advance_advanceservice_latest_approval_per_node", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L321"}, {"caller_nid": "bx_advance_advanceservice_query_approvals", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L334"}, {"caller_nid": "bx_advance_advanceservice_get_approvals", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L358"}, {"caller_nid": "bx_advance_advanceservice_get_approvals", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L360"}, {"caller_nid": "bx_advance_advanceservice_get_approvals", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L362"}, {"caller_nid": "bx_advance_advanceservice_get_approval_history", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L382"}, {"caller_nid": "bx_advance_advanceservice_get_approval_history", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L382"}, {"caller_nid": "bx_advance_advanceservice_get_approval_history", "callee": "asc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L388"}, {"caller_nid": "bx_advance_advanceservice_get_approval_history", "callee": "asc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L388"}, {"caller_nid": "bx_advance_advanceservice_global_status_counts", "callee": "group_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L396"}, {"caller_nid": "bx_advance_advanceservice_global_status_counts", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L396"}, {"caller_nid": "bx_advance_advanceservice_global_status_counts", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L396"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "and_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L405"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L410"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L410"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L410"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L410"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L412"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L412"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L412"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L412"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L419"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L419"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L419"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L419"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L426"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L426"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L426"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L426"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L434"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L434"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L434"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L434"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L441"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L441"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L441"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "current_month_bounds", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L446"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L448"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L448"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L448"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L454"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L454"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L454"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L454"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L461"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "join", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L461"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L461"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L461"}, {"caller_nid": "bx_advance_advanceservice_pending_approval_stats", "callee": "subquery", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L488"}, {"caller_nid": "bx_advance_advanceservice_pending_approval_stats", "callee": "join", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L489"}, {"caller_nid": "bx_advance_advanceservice_pending_approval_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L489"}, {"caller_nid": "bx_advance_advanceservice_pending_approval_stats", "callee": "and_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L492"}, {"caller_nid": "bx_advance_advanceservice_pending_approval_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L506"}, {"caller_nid": "bx_advance_advanceservice_pending_approval_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L506"}, {"caller_nid": "bx_advance_advanceservice_pending_approval_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L506"}, {"caller_nid": "bx_advance_advanceservice_pending_approval_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L506"}, {"caller_nid": "bx_advance_advanceservice_pending_approval_stats", "callee": "current_month_bounds", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L507"}, {"caller_nid": "bx_advance_advanceservice_pending_approval_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L509"}, {"caller_nid": "bx_advance_advanceservice_pending_approval_stats", "callee": "join", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L509"}, {"caller_nid": "bx_advance_advanceservice_pending_approval_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L509"}, {"caller_nid": "bx_advance_advanceservice_pending_approval_stats", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L509"}, {"caller_nid": "bx_advance_advanceservice_offset_amount_map", "callee": "group_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L522"}, {"caller_nid": "bx_advance_advanceservice_offset_amount_map", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L522"}, {"caller_nid": "bx_advance_advanceservice_offset_amount_map", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L524"}, {"caller_nid": "bx_advance_advanceservice_offset_amount_map", "callee": "in_", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L527"}, {"caller_nid": "bx_advance_advanceservice_issue", "callee": "now", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L551"}, {"caller_nid": "bx_advance_advanceservice_issue", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L558"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "and_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L563"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "and_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L564"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L566"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "is_", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L566"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L568"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L568"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L568"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L568"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L570"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L570"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L570"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L570"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L577"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L577"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L577"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "current_month_bounds", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L582"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L583"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L585"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L585"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L585"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "isnot", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L589"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/718cda4882de824f750f0d99bcc12c3240f29acb7979f1a6e04d903feb1f434c.json b/backend/graphify-out/cache/ast/718cda4882de824f750f0d99bcc12c3240f29acb7979f1a6e04d903feb1f434c.json new file mode 100644 index 000000000..8fdbfeba3 --- /dev/null +++ b/backend/graphify-out/cache/ast/718cda4882de824f750f0d99bcc12c3240f29acb7979f1a6e04d903feb1f434c.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_expense_item_py", "label": "expense_item.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/expense_item.py", "source_location": "L1"}, {"id": "bx_expense_item_coerce_id", "label": "_coerce_id()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/expense_item.py", "source_location": "L7"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/expense_item.py", "source_location": "L7"}, {"id": "bx_expense_item_expenseitemcreate", "label": "ExpenseItemCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/expense_item.py", "source_location": "L13"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "bx_expense_item_expenseitemcreate_validate_parent_id", "label": ".validate_parent_id()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/expense_item.py", "source_location": "L26"}, {"id": "bx_expense_item_expenseitemupdate", "label": "ExpenseItemUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/expense_item.py", "source_location": "L30"}, {"id": "bx_expense_item_expenseitemupdate_validate_parent_id", "label": ".validate_parent_id()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/expense_item.py", "source_location": "L43"}, {"id": "bx_expense_item_expenseitemout", "label": "ExpenseItemOut", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/expense_item.py", "source_location": "L49"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_expense_item_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/expense_item.py", "source_location": "L1", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_expense_item_py", "target": "pydantic", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/expense_item.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_expense_item_py", "target": "pydantic_alias_generators", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/expense_item.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_expense_item_py", "target": "bx_expense_item_coerce_id", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/expense_item.py", "source_location": "L7", "weight": 1.0}, {"source": "bx_expense_item_coerce_id", "target": "str", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/expense_item.py", "source_location": "L7", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_expense_item_py", "target": "bx_expense_item_expenseitemcreate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/expense_item.py", "source_location": "L13", "weight": 1.0}, {"source": "bx_expense_item_expenseitemcreate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/expense_item.py", "source_location": "L13", "weight": 1.0}, {"source": "bx_expense_item_expenseitemcreate", "target": "bx_expense_item_expenseitemcreate_validate_parent_id", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/expense_item.py", "source_location": "L26", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_expense_item_py", "target": "bx_expense_item_expenseitemupdate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/expense_item.py", "source_location": "L30", "weight": 1.0}, {"source": "bx_expense_item_expenseitemupdate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/expense_item.py", "source_location": "L30", "weight": 1.0}, {"source": "bx_expense_item_expenseitemupdate", "target": "bx_expense_item_expenseitemupdate_validate_parent_id", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/expense_item.py", "source_location": "L43", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_expense_item_py", "target": "bx_expense_item_expenseitemout", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/expense_item.py", "source_location": "L49", "weight": 1.0}, {"source": "bx_expense_item_expenseitemout", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/expense_item.py", "source_location": "L49", "weight": 1.0}, {"source": "bx_expense_item_expenseitemcreate_validate_parent_id", "target": "bx_expense_item_coerce_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/expense_item.py", "source_location": "L27", "weight": 1.0}, {"source": "bx_expense_item_expenseitemupdate_validate_parent_id", "target": "bx_expense_item_coerce_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/expense_item.py", "source_location": "L46", "weight": 1.0}], "raw_calls": [{"caller_nid": "bx_expense_item_coerce_id", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/expense_item.py", "source_location": "L10"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/85fccc96d4c64be381f417edd2d0e112338138807589de7dd697e8f9602f868b.json b/backend/graphify-out/cache/ast/85fccc96d4c64be381f417edd2d0e112338138807589de7dd697e8f9602f868b.json new file mode 100644 index 000000000..680cb9d6b --- /dev/null +++ b/backend/graphify-out/cache/ast/85fccc96d4c64be381f417edd2d0e112338138807589de7dd697e8f9602f868b.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_expense_item_py", "label": "expense_item.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L1"}, {"id": "bx_expense_item_get_expense_item_tree", "label": "get_expense_item_tree()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L17"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L17"}, {"id": "bxusercontext", "label": "BxUserContext", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L17"}, {"id": "bx_expense_item_get_expense_item", "label": "get_expense_item()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L27"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L27"}, {"id": "bx_expense_item_create_expense_item", "label": "create_expense_item()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L40"}, {"id": "expenseitemcreate", "label": "ExpenseItemCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L40"}, {"id": "bx_expense_item_update_expense_item", "label": "update_expense_item()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L56"}, {"id": "expenseitemupdate", "label": "ExpenseItemUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L56"}, {"id": "bx_expense_item_delete_expense_item", "label": "delete_expense_item()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L78"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_expense_item_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L1", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_expense_item_py", "target": "fastapi", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_expense_item_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_expense_item_py", "target": "app_core_bx_auth", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L6", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_expense_item_py", "target": "app_core_database", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L7", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_expense_item_py", "target": "app_core_tenant_context", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L8", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_expense_item_py", "target": "app_schemas_bx_common", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L9", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_expense_item_py", "target": "app_schemas_bx_expense_item", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L10", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_expense_item_py", "target": "app_services_bx_expense_item", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L11", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_expense_item_py", "target": "bx_expense_item_get_expense_item_tree", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L17", "weight": 1.0}, {"source": "bx_expense_item_get_expense_item_tree", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L17", "weight": 1.0}, {"source": "bx_expense_item_get_expense_item_tree", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L17", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_expense_item_py", "target": "bx_expense_item_get_expense_item", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L27", "weight": 1.0}, {"source": "bx_expense_item_get_expense_item", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L27", "weight": 1.0}, {"source": "bx_expense_item_get_expense_item", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L27", "weight": 1.0}, {"source": "bx_expense_item_get_expense_item", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L27", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_expense_item_py", "target": "bx_expense_item_create_expense_item", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L40", "weight": 1.0}, {"source": "bx_expense_item_create_expense_item", "target": "expenseitemcreate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L40", "weight": 1.0}, {"source": "bx_expense_item_create_expense_item", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L40", "weight": 1.0}, {"source": "bx_expense_item_create_expense_item", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L40", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_expense_item_py", "target": "bx_expense_item_update_expense_item", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L56", "weight": 1.0}, {"source": "bx_expense_item_update_expense_item", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L56", "weight": 1.0}, {"source": "bx_expense_item_update_expense_item", "target": "expenseitemupdate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L56", "weight": 1.0}, {"source": "bx_expense_item_update_expense_item", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L56", "weight": 1.0}, {"source": "bx_expense_item_update_expense_item", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L56", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_expense_item_py", "target": "bx_expense_item_delete_expense_item", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L78", "weight": 1.0}, {"source": "bx_expense_item_delete_expense_item", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L78", "weight": 1.0}, {"source": "bx_expense_item_delete_expense_item", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L78", "weight": 1.0}, {"source": "bx_expense_item_delete_expense_item", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L78", "weight": 1.0}], "raw_calls": [{"caller_nid": "bx_expense_item_get_expense_item_tree", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L21"}, {"caller_nid": "bx_expense_item_get_expense_item_tree", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L21"}, {"caller_nid": "bx_expense_item_get_expense_item_tree", "callee": "get_item_tree", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L22"}, {"caller_nid": "bx_expense_item_get_expense_item_tree", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L23"}, {"caller_nid": "bx_expense_item_get_expense_item_tree", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L23"}, {"caller_nid": "bx_expense_item_get_expense_item", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L32"}, {"caller_nid": "bx_expense_item_get_expense_item", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L32"}, {"caller_nid": "bx_expense_item_get_expense_item", "callee": "get_by_id", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L33"}, {"caller_nid": "bx_expense_item_get_expense_item", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L35"}, {"caller_nid": "bx_expense_item_get_expense_item", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L36"}, {"caller_nid": "bx_expense_item_get_expense_item", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L36"}, {"caller_nid": "bx_expense_item_create_expense_item", "callee": "create", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L46"}, {"caller_nid": "bx_expense_item_create_expense_item", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L46"}, {"caller_nid": "bx_expense_item_create_expense_item", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L47"}, {"caller_nid": "bx_expense_item_create_expense_item", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L48"}, {"caller_nid": "bx_expense_item_create_expense_item", "callee": "rollback", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L50"}, {"caller_nid": "bx_expense_item_create_expense_item", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L51"}, {"caller_nid": "bx_expense_item_create_expense_item", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L52"}, {"caller_nid": "bx_expense_item_create_expense_item", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L52"}, {"caller_nid": "bx_expense_item_update_expense_item", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L62"}, {"caller_nid": "bx_expense_item_update_expense_item", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L62"}, {"caller_nid": "bx_expense_item_update_expense_item", "callee": "update", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L64"}, {"caller_nid": "bx_expense_item_update_expense_item", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L65"}, {"caller_nid": "bx_expense_item_update_expense_item", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L68"}, {"caller_nid": "bx_expense_item_update_expense_item", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L69"}, {"caller_nid": "bx_expense_item_update_expense_item", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L70"}, {"caller_nid": "bx_expense_item_update_expense_item", "callee": "rollback", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L72"}, {"caller_nid": "bx_expense_item_update_expense_item", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L73"}, {"caller_nid": "bx_expense_item_update_expense_item", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L74"}, {"caller_nid": "bx_expense_item_update_expense_item", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L74"}, {"caller_nid": "bx_expense_item_delete_expense_item", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L83"}, {"caller_nid": "bx_expense_item_delete_expense_item", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L83"}, {"caller_nid": "bx_expense_item_delete_expense_item", "callee": "get_by_id", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L84"}, {"caller_nid": "bx_expense_item_delete_expense_item", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L86"}, {"caller_nid": "bx_expense_item_delete_expense_item", "callee": "soft_delete", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L87"}, {"caller_nid": "bx_expense_item_delete_expense_item", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L88"}, {"caller_nid": "bx_expense_item_delete_expense_item", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L89"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/901aa660dd28cf21f1fa2f8ed3de45eca98a8152aac0f17b7dcd9ae00de0c4e7.json b/backend/graphify-out/cache/ast/901aa660dd28cf21f1fa2f8ed3de45eca98a8152aac0f17b7dcd9ae00de0c4e7.json new file mode 100644 index 000000000..3591e3117 --- /dev/null +++ b/backend/graphify-out/cache/ast/901aa660dd28cf21f1fa2f8ed3de45eca98a8152aac0f17b7dcd9ae00de0c4e7.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "label": "advance.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L1"}, {"id": "bx_advance_tenant", "label": "_tenant()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L29"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L29"}, {"id": "bxusercontext", "label": "BxUserContext", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L29"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L29"}, {"id": "bx_advance_fill_offset_amounts", "label": "_fill_offset_amounts()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L33"}, {"id": "advanceapplyout", "label": "AdvanceApplyOut", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L33"}, {"id": "bx_advance_list_advances", "label": "list_advances()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L42"}, {"id": "int", "label": "int", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L42"}, {"id": "bx_advance_my_advances", "label": "my_advances()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L77"}, {"id": "bx_advance_my_advance_stats", "label": "my_advance_stats()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L109"}, {"id": "bx_advance_advance_status_counts", "label": "advance_status_counts()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L119"}, {"id": "bx_advance_pending_approval", "label": "pending_approval()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L128"}, {"id": "bx_advance_advance_pending_approval_stats", "label": "advance_pending_approval_stats()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L154"}, {"id": "bx_advance_approved_by_me", "label": "approved_by_me()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L164"}, {"id": "bx_advance_get_advance", "label": "get_advance()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L190"}, {"id": "bx_advance_get_approvals", "label": "get_approvals()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L206"}, {"id": "bx_advance_get_approval_history", "label": "get_approval_history()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L219"}, {"id": "bx_advance_create_advance", "label": "create_advance()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L232"}, {"id": "advanceapplycreate", "label": "AdvanceApplyCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L232"}, {"id": "bx_advance_update_advance", "label": "update_advance()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L265"}, {"id": "advanceapplyupdate", "label": "AdvanceApplyUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L265"}, {"id": "bx_advance_submit_advance", "label": "submit_advance()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L286"}, {"id": "bx_advance_approve_advance", "label": "approve_advance()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L300"}, {"id": "advanceapprovalcreate", "label": "AdvanceApprovalCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L300"}, {"id": "bx_advance_reject_advance", "label": "reject_advance()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L315"}, {"id": "bx_advance_delete_advance", "label": "delete_advance()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L330"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L1", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "fastapi", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "sqlalchemy", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L5", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "app_core_bx_auth", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L7", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "app_core_database", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L8", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "app_core_tenant_context", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L9", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "app_models_bx_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L10", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "app_schemas_bx_advance", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L11", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "app_schemas_bx_common", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L20", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "app_services_bx_advance", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L21", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "app_services_bx_expense_item", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L22", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "app_utils_bx_codegen", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L23", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "app_utils_bx_date_range", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L24", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "bx_advance_tenant", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L29", "weight": 1.0}, {"source": "bx_advance_tenant", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L29", "weight": 1.0}, {"source": "bx_advance_tenant", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L29", "weight": 1.0}, {"source": "bx_advance_tenant", "target": "str", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L29", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "bx_advance_fill_offset_amounts", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L33", "weight": 1.0}, {"source": "bx_advance_fill_offset_amounts", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L33", "weight": 1.0}, {"source": "bx_advance_fill_offset_amounts", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L33", "weight": 1.0}, {"source": "bx_advance_fill_offset_amounts", "target": "advanceapplyout", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L33", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "bx_advance_list_advances", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L42", "weight": 1.0}, {"source": "bx_advance_list_advances", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L42", "weight": 1.0}, {"source": "bx_advance_list_advances", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L42", "weight": 1.0}, {"source": "bx_advance_list_advances", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L42", "weight": 1.0}, {"source": "bx_advance_list_advances", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L42", "weight": 1.0}, {"source": "bx_advance_list_advances", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L42", "weight": 1.0}, {"source": "bx_advance_list_advances", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L42", "weight": 1.0}, {"source": "bx_advance_list_advances", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L42", "weight": 1.0}, {"source": "bx_advance_list_advances", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L42", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "bx_advance_my_advances", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L77", "weight": 1.0}, {"source": "bx_advance_my_advances", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L77", "weight": 1.0}, {"source": "bx_advance_my_advances", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L77", "weight": 1.0}, {"source": "bx_advance_my_advances", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L77", "weight": 1.0}, {"source": "bx_advance_my_advances", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L77", "weight": 1.0}, {"source": "bx_advance_my_advances", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L77", "weight": 1.0}, {"source": "bx_advance_my_advances", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L77", "weight": 1.0}, {"source": "bx_advance_my_advances", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L77", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "bx_advance_my_advance_stats", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L109", "weight": 1.0}, {"source": "bx_advance_my_advance_stats", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L109", "weight": 1.0}, {"source": "bx_advance_my_advance_stats", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L109", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "bx_advance_advance_status_counts", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L119", "weight": 1.0}, {"source": "bx_advance_advance_status_counts", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L119", "weight": 1.0}, {"source": "bx_advance_advance_status_counts", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L119", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "bx_advance_pending_approval", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L128", "weight": 1.0}, {"source": "bx_advance_pending_approval", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L128", "weight": 1.0}, {"source": "bx_advance_pending_approval", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L128", "weight": 1.0}, {"source": "bx_advance_pending_approval", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L128", "weight": 1.0}, {"source": "bx_advance_pending_approval", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L128", "weight": 1.0}, {"source": "bx_advance_pending_approval", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L128", "weight": 1.0}, {"source": "bx_advance_pending_approval", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L128", "weight": 1.0}, {"source": "bx_advance_pending_approval", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L128", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "bx_advance_advance_pending_approval_stats", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L154", "weight": 1.0}, {"source": "bx_advance_advance_pending_approval_stats", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L154", "weight": 1.0}, {"source": "bx_advance_advance_pending_approval_stats", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L154", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "bx_advance_approved_by_me", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L164", "weight": 1.0}, {"source": "bx_advance_approved_by_me", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L164", "weight": 1.0}, {"source": "bx_advance_approved_by_me", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L164", "weight": 1.0}, {"source": "bx_advance_approved_by_me", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L164", "weight": 1.0}, {"source": "bx_advance_approved_by_me", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L164", "weight": 1.0}, {"source": "bx_advance_approved_by_me", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L164", "weight": 1.0}, {"source": "bx_advance_approved_by_me", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L164", "weight": 1.0}, {"source": "bx_advance_approved_by_me", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L164", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "bx_advance_get_advance", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L190", "weight": 1.0}, {"source": "bx_advance_get_advance", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L190", "weight": 1.0}, {"source": "bx_advance_get_advance", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L190", "weight": 1.0}, {"source": "bx_advance_get_advance", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L190", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "bx_advance_get_approvals", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L206", "weight": 1.0}, {"source": "bx_advance_get_approvals", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L206", "weight": 1.0}, {"source": "bx_advance_get_approvals", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L206", "weight": 1.0}, {"source": "bx_advance_get_approvals", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L206", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "bx_advance_get_approval_history", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L219", "weight": 1.0}, {"source": "bx_advance_get_approval_history", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L219", "weight": 1.0}, {"source": "bx_advance_get_approval_history", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L219", "weight": 1.0}, {"source": "bx_advance_get_approval_history", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L219", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "bx_advance_create_advance", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L232", "weight": 1.0}, {"source": "bx_advance_create_advance", "target": "advanceapplycreate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L232", "weight": 1.0}, {"source": "bx_advance_create_advance", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L232", "weight": 1.0}, {"source": "bx_advance_create_advance", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L232", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "bx_advance_update_advance", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L265", "weight": 1.0}, {"source": "bx_advance_update_advance", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L265", "weight": 1.0}, {"source": "bx_advance_update_advance", "target": "advanceapplyupdate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L265", "weight": 1.0}, {"source": "bx_advance_update_advance", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L265", "weight": 1.0}, {"source": "bx_advance_update_advance", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L265", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "bx_advance_submit_advance", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L286", "weight": 1.0}, {"source": "bx_advance_submit_advance", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L286", "weight": 1.0}, {"source": "bx_advance_submit_advance", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L286", "weight": 1.0}, {"source": "bx_advance_submit_advance", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L286", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "bx_advance_approve_advance", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L300", "weight": 1.0}, {"source": "bx_advance_approve_advance", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L300", "weight": 1.0}, {"source": "bx_advance_approve_advance", "target": "advanceapprovalcreate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L300", "weight": 1.0}, {"source": "bx_advance_approve_advance", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L300", "weight": 1.0}, {"source": "bx_advance_approve_advance", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L300", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "bx_advance_reject_advance", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L315", "weight": 1.0}, {"source": "bx_advance_reject_advance", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L315", "weight": 1.0}, {"source": "bx_advance_reject_advance", "target": "advanceapprovalcreate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L315", "weight": 1.0}, {"source": "bx_advance_reject_advance", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L315", "weight": 1.0}, {"source": "bx_advance_reject_advance", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L315", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_advance_py", "target": "bx_advance_delete_advance", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L330", "weight": 1.0}, {"source": "bx_advance_delete_advance", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L330", "weight": 1.0}, {"source": "bx_advance_delete_advance", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L330", "weight": 1.0}, {"source": "bx_advance_delete_advance", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L330", "weight": 1.0}, {"source": "bx_advance_list_advances", "target": "bx_advance_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L52", "weight": 1.0}, {"source": "bx_advance_list_advances", "target": "bx_advance_fill_offset_amounts", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L72", "weight": 1.0}, {"source": "bx_advance_my_advances", "target": "bx_advance_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L86", "weight": 1.0}, {"source": "bx_advance_my_advances", "target": "bx_advance_fill_offset_amounts", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L104", "weight": 1.0}, {"source": "bx_advance_my_advance_stats", "target": "bx_advance_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L113", "weight": 1.0}, {"source": "bx_advance_advance_status_counts", "target": "bx_advance_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L123", "weight": 1.0}, {"source": "bx_advance_pending_approval", "target": "bx_advance_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L137", "weight": 1.0}, {"source": "bx_advance_advance_pending_approval_stats", "target": "bx_advance_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L158", "weight": 1.0}, {"source": "bx_advance_approved_by_me", "target": "bx_advance_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L173", "weight": 1.0}, {"source": "bx_advance_get_advance", "target": "bx_advance_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L195", "weight": 1.0}, {"source": "bx_advance_get_approvals", "target": "bx_advance_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L211", "weight": 1.0}, {"source": "bx_advance_get_approval_history", "target": "bx_advance_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L224", "weight": 1.0}, {"source": "bx_advance_create_advance", "target": "bx_advance_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L237", "weight": 1.0}, {"source": "bx_advance_update_advance", "target": "bx_advance_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L271", "weight": 1.0}, {"source": "bx_advance_delete_advance", "target": "bx_advance_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L335", "weight": 1.0}], "raw_calls": [{"caller_nid": "bx_advance_tenant", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L30"}, {"caller_nid": "bx_advance_tenant", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L30"}, {"caller_nid": "bx_advance_fill_offset_amounts", "callee": "offset_amount_map", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L36"}, {"caller_nid": "bx_advance_fill_offset_amounts", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L38"}, {"caller_nid": "bx_advance_list_advances", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L55"}, {"caller_nid": "bx_advance_list_advances", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L57"}, {"caller_nid": "bx_advance_list_advances", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L58"}, {"caller_nid": "bx_advance_list_advances", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L59"}, {"caller_nid": "bx_advance_list_advances", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L60"}, {"caller_nid": "bx_advance_list_advances", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L64"}, {"caller_nid": "bx_advance_list_advances", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L64"}, {"caller_nid": "bx_advance_list_advances", "callee": "parse_create_time_day_bounds", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L65"}, {"caller_nid": "bx_advance_list_advances", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L68"}, {"caller_nid": "bx_advance_list_advances", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L69"}, {"caller_nid": "bx_advance_list_advances", "callee": "get_paged", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L70"}, {"caller_nid": "bx_advance_list_advances", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L71"}, {"caller_nid": "bx_advance_list_advances", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L73"}, {"caller_nid": "bx_advance_list_advances", "callee": "PagedData", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L73"}, {"caller_nid": "bx_advance_my_advances", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L89"}, {"caller_nid": "bx_advance_my_advances", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L91"}, {"caller_nid": "bx_advance_my_advances", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L92"}, {"caller_nid": "bx_advance_my_advances", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L93"}, {"caller_nid": "bx_advance_my_advances", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L94"}, {"caller_nid": "bx_advance_my_advances", "callee": "parse_create_time_day_bounds", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L97"}, {"caller_nid": "bx_advance_my_advances", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L100"}, {"caller_nid": "bx_advance_my_advances", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L101"}, {"caller_nid": "bx_advance_my_advances", "callee": "get_paged", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L102"}, {"caller_nid": "bx_advance_my_advances", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L103"}, {"caller_nid": "bx_advance_my_advances", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L105"}, {"caller_nid": "bx_advance_my_advances", "callee": "PagedData", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L105"}, {"caller_nid": "bx_advance_my_advance_stats", "callee": "my_apply_stats", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L114"}, {"caller_nid": "bx_advance_my_advance_stats", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L115"}, {"caller_nid": "bx_advance_my_advance_stats", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L115"}, {"caller_nid": "bx_advance_advance_status_counts", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L124"}, {"caller_nid": "bx_advance_advance_status_counts", "callee": "global_status_counts", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L124"}, {"caller_nid": "bx_advance_pending_approval", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L138"}, {"caller_nid": "bx_advance_pending_approval", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L149"}, {"caller_nid": "bx_advance_pending_approval", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L150"}, {"caller_nid": "bx_advance_pending_approval", "callee": "PagedData", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L150"}, {"caller_nid": "bx_advance_advance_pending_approval_stats", "callee": "pending_approval_stats", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L159"}, {"caller_nid": "bx_advance_advance_pending_approval_stats", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L160"}, {"caller_nid": "bx_advance_advance_pending_approval_stats", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L160"}, {"caller_nid": "bx_advance_approved_by_me", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L174"}, {"caller_nid": "bx_advance_approved_by_me", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L185"}, {"caller_nid": "bx_advance_approved_by_me", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L186"}, {"caller_nid": "bx_advance_approved_by_me", "callee": "PagedData", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L186"}, {"caller_nid": "bx_advance_get_advance", "callee": "get_by_id", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L196"}, {"caller_nid": "bx_advance_get_advance", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L198"}, {"caller_nid": "bx_advance_get_advance", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L199"}, {"caller_nid": "bx_advance_get_advance", "callee": "offset_amount_map", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L200"}, {"caller_nid": "bx_advance_get_advance", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L201"}, {"caller_nid": "bx_advance_get_advance", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L202"}, {"caller_nid": "bx_advance_get_approvals", "callee": "get_by_id", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L212"}, {"caller_nid": "bx_advance_get_approvals", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L213"}, {"caller_nid": "bx_advance_get_approvals", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L215"}, {"caller_nid": "bx_advance_get_approvals", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L215"}, {"caller_nid": "bx_advance_get_approval_history", "callee": "get_by_id", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L225"}, {"caller_nid": "bx_advance_get_approval_history", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L226"}, {"caller_nid": "bx_advance_get_approval_history", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L228"}, {"caller_nid": "bx_advance_get_approval_history", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L228"}, {"caller_nid": "bx_advance_create_advance", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L238"}, {"caller_nid": "bx_advance_create_advance", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L239"}, {"caller_nid": "bx_advance_create_advance", "callee": "get_by_id", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L241"}, {"caller_nid": "bx_advance_create_advance", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L242"}, {"caller_nid": "bx_advance_create_advance", "callee": "generate_apply_code", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L245"}, {"caller_nid": "bx_advance_create_advance", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L248"}, {"caller_nid": "bx_advance_create_advance", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L248"}, {"caller_nid": "bx_advance_create_advance", "callee": "create", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L258"}, {"caller_nid": "bx_advance_create_advance", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L259"}, {"caller_nid": "bx_advance_create_advance", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L260"}, {"caller_nid": "bx_advance_create_advance", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L261"}, {"caller_nid": "bx_advance_create_advance", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L261"}, {"caller_nid": "bx_advance_update_advance", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L272"}, {"caller_nid": "bx_advance_update_advance", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L273"}, {"caller_nid": "bx_advance_update_advance", "callee": "get_by_id", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L275"}, {"caller_nid": "bx_advance_update_advance", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L276"}, {"caller_nid": "bx_advance_update_advance", "callee": "update", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L277"}, {"caller_nid": "bx_advance_update_advance", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L279"}, {"caller_nid": "bx_advance_update_advance", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L280"}, {"caller_nid": "bx_advance_update_advance", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L281"}, {"caller_nid": "bx_advance_update_advance", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L282"}, {"caller_nid": "bx_advance_update_advance", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L282"}, {"caller_nid": "bx_advance_submit_advance", "callee": "submit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L291"}, {"caller_nid": "bx_advance_submit_advance", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L293"}, {"caller_nid": "bx_advance_submit_advance", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L294"}, {"caller_nid": "bx_advance_submit_advance", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L295"}, {"caller_nid": "bx_advance_submit_advance", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L296"}, {"caller_nid": "bx_advance_submit_advance", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L296"}, {"caller_nid": "bx_advance_approve_advance", "callee": "approve", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L306"}, {"caller_nid": "bx_advance_approve_advance", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L308"}, {"caller_nid": "bx_advance_approve_advance", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L309"}, {"caller_nid": "bx_advance_approve_advance", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L310"}, {"caller_nid": "bx_advance_approve_advance", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L311"}, {"caller_nid": "bx_advance_approve_advance", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L311"}, {"caller_nid": "bx_advance_reject_advance", "callee": "reject", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L321"}, {"caller_nid": "bx_advance_reject_advance", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L323"}, {"caller_nid": "bx_advance_reject_advance", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L324"}, {"caller_nid": "bx_advance_reject_advance", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L325"}, {"caller_nid": "bx_advance_reject_advance", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L326"}, {"caller_nid": "bx_advance_reject_advance", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L326"}, {"caller_nid": "bx_advance_delete_advance", "callee": "get_by_id", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L336"}, {"caller_nid": "bx_advance_delete_advance", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L337"}, {"caller_nid": "bx_advance_delete_advance", "callee": "soft_delete", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L338"}, {"caller_nid": "bx_advance_delete_advance", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L339"}, {"caller_nid": "bx_advance_delete_advance", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py", "source_location": "L340"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/954b95ec688f8c0274cf2e46c5891fc660af9c1812ed282b1b39ebccb87efea6.json b/backend/graphify-out/cache/ast/954b95ec688f8c0274cf2e46c5891fc660af9c1812ed282b1b39ebccb87efea6.json new file mode 100644 index 000000000..1688da9b4 --- /dev/null +++ b/backend/graphify-out/cache/ast/954b95ec688f8c0274cf2e46c5891fc660af9c1812ed282b1b39ebccb87efea6.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "label": "reimburse.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L1"}, {"id": "bx_reimburse_reimburseservice", "label": "ReimburseService", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L30"}, {"id": "bx_reimburse_reimburseservice_tenant_no", "label": "._tenant_no()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L32"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L32"}, {"id": "bxusercontext", "label": "BxUserContext", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L32"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L32"}, {"id": "bx_reimburse_reimburseservice_get_by_id", "label": ".get_by_id()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L36"}, {"id": "bxreimburseapply", "label": "BxReimburseApply", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L36"}, {"id": "bx_reimburse_reimburseservice_get_paged", "label": ".get_paged()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L40"}, {"id": "int", "label": "int", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L40"}, {"id": "any", "label": "Any", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L40"}, {"id": "bx_reimburse_reimburseservice_soft_delete", "label": ".soft_delete()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L50"}, {"id": "bool", "label": "bool", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L50"}, {"id": "bx_reimburse_reimburseservice_workflow_nodes", "label": "._workflow_nodes()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L57"}, {"id": "bxworkflownode", "label": "BxWorkflowNode", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L57"}, {"id": "bx_reimburse_reimburseservice_pending_approval", "label": ".pending_approval()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L70"}, {"id": "bx_reimburse_reimburseservice_approved_by_me", "label": ".approved_by_me()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L126"}, {"id": "bx_reimburse_reimburseservice_submit", "label": ".submit()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L174"}, {"id": "bx_reimburse_reimburseservice_approve", "label": ".approve()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L191"}, {"id": "bx_reimburse_reimburseservice_reject", "label": ".reject()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L236"}, {"id": "bx_reimburse_reimburseservice_approval_record_dict", "label": "._approval_record_dict()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L273"}, {"id": "bxreimburseapproval", "label": "BxReimburseApproval", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L273"}, {"id": "bx_reimburse_reimburseservice_latest_approval_per_node", "label": "._latest_approval_per_node()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L286"}, {"id": "bx_reimburse_reimburseservice_query_approvals", "label": "._query_approvals()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L303"}, {"id": "bx_reimburse_reimburseservice_get_approvals", "label": ".get_approvals()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L315"}, {"id": "bx_reimburse_reimburseservice_get_approval_history", "label": ".get_approval_history()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L348"}, {"id": "bx_reimburse_reimburseservice_create_with_details", "label": ".create_with_details()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L365"}, {"id": "bx_reimburse_reimburseservice_update_with_details", "label": ".update_with_details()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L411"}, {"id": "bx_reimburse_reimburseservice_get_details", "label": ".get_details()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L464"}, {"id": "bxreimbursedetail", "label": "BxReimburseDetail", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L464"}, {"id": "bx_reimburse_reimburseservice_out_rows_with_attachment_counts", "label": ".out_rows_with_attachment_counts()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L477"}, {"id": "reimburseapplyout", "label": "ReimburseApplyOut", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L477"}, {"id": "bx_reimburse_reimburseservice_out_one_with_attachment_counts", "label": ".out_one_with_attachment_counts()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L494"}, {"id": "bx_reimburse_reimburseservice_build_apply_out_with_details", "label": ".build_apply_out_with_details()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L500"}, {"id": "bx_reimburse_reimburseservice_global_status_counts", "label": ".global_status_counts()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L509"}, {"id": "bx_reimburse_reimburseservice_my_apply_stats", "label": ".my_apply_stats()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L519"}, {"id": "bx_reimburse_reimburseservice_pending_approval_stats", "label": ".pending_approval_stats()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L578"}, {"id": "bx_reimburse_reimburseservice_pay", "label": ".pay()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L609"}, {"id": "float", "label": "float", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L609"}, {"id": "bx_reimburse_reimburseservice_offset", "label": ".offset()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L632"}, {"id": "bx_reimburse_reimburseservice_batch_offset", "label": ".batch_offset()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L663"}, {"id": "bx_reimburse_reimburseservice_finance_payment_stats", "label": ".finance_payment_stats()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L718"}, {"id": "bx_reimburse_rationale_289", "label": "\u540c\u4e00\u8282\u70b9\u591a\u6b21\u5ba1\u6279\u65f6\uff0c\u53d6 approval_time \u6700\u65b0\u7684\u4e00\u6761\u4f5c\u4e3a\u5f53\u524d\u8282\u70b9\u72b6\u6001\u3002", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L289"}, {"id": "bx_reimburse_rationale_349", "label": "\u8fd4\u56de\u5168\u90e8\u5ba1\u6279\u52a8\u4f5c\uff0c\u6309\u65f6\u95f4\u6b63\u5e8f\u6392\u5217\uff0c\u7528\u4e8e\u5c55\u793a\u5b8c\u6574\u5ba1\u6279\u5386\u53f2\u3002", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L349"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "decimal", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L5", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "sqlalchemy", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L7", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L8", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "app_core_bx_auth", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L10", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "app_core_tenant_context", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L11", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "app_core_utils", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L12", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "app_models_bx_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L13", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "app_schemas_bx_reimburse", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L21", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "app_services_bx_attachment", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L22", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "app_services_bx_base", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L23", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "app_utils_bx_codegen", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L24", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "app_utils_bx_date_range", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L25", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "bx_reimburse_reimburseservice", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L30", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_tenant_no", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L32", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_tenant_no", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L32", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_tenant_no", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L32", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_tenant_no", "target": "str", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L32", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_get_by_id", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L36", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_by_id", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L36", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_by_id", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L36", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_by_id", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L36", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_by_id", "target": "bxreimburseapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L36", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_get_paged", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L40", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_paged", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L40", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_paged", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L40", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_paged", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L40", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_paged", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L40", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_paged", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L40", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_paged", "target": "bxreimburseapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L40", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_paged", "target": "int", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L40", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_soft_delete", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L50", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_soft_delete", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L50", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_soft_delete", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L50", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_soft_delete", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L50", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_soft_delete", "target": "bool", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L50", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_workflow_nodes", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L57", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_workflow_nodes", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L57", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_workflow_nodes", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L57", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_workflow_nodes", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L57", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_workflow_nodes", "target": "bxworkflownode", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L57", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_pending_approval", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L70", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pending_approval", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L70", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pending_approval", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L70", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pending_approval", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L70", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pending_approval", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L70", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pending_approval", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L70", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pending_approval", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L70", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pending_approval", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L70", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pending_approval", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L70", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_approved_by_me", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L126", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approved_by_me", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L126", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approved_by_me", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L126", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approved_by_me", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L126", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approved_by_me", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L126", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approved_by_me", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L126", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approved_by_me", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L126", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approved_by_me", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L126", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approved_by_me", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L126", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_submit", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L174", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_submit", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L174", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_submit", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L174", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_submit", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L174", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_submit", "target": "bxreimburseapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L174", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_approve", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L191", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approve", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L191", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approve", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L191", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approve", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L191", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approve", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L191", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approve", "target": "bxreimburseapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L191", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_reject", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L236", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_reject", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L236", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_reject", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L236", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_reject", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L236", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_reject", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L236", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_reject", "target": "bxreimburseapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L236", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_approval_record_dict", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L273", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approval_record_dict", "target": "bxreimburseapproval", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L273", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approval_record_dict", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L273", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approval_record_dict", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L273", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approval_record_dict", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L273", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_latest_approval_per_node", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L286", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_latest_approval_per_node", "target": "bxreimburseapproval", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L286", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_latest_approval_per_node", "target": "int", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L286", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_latest_approval_per_node", "target": "bxreimburseapproval", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L286", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_query_approvals", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L303", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_query_approvals", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L303", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_query_approvals", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L303", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_query_approvals", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L303", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_query_approvals", "target": "bxreimburseapproval", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L303", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_get_approvals", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L315", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approvals", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L315", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approvals", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L315", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approvals", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L315", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approvals", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L315", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approvals", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L315", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_get_approval_history", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L348", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approval_history", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L348", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approval_history", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L348", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approval_history", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L348", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approval_history", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L348", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approval_history", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L348", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_create_with_details", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L365", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_create_with_details", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L365", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_create_with_details", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L365", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_create_with_details", "target": "bxreimburseapply", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L365", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_update_with_details", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L411", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_update_with_details", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L411", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_update_with_details", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L411", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_update_with_details", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L411", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_update_with_details", "target": "bxreimburseapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L411", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_get_details", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L464", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_details", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L464", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_details", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L464", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_details", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L464", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_details", "target": "bxreimbursedetail", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L464", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_out_rows_with_attachment_counts", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L477", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_out_rows_with_attachment_counts", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L477", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_out_rows_with_attachment_counts", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L477", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_out_rows_with_attachment_counts", "target": "bxreimburseapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L477", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_out_rows_with_attachment_counts", "target": "reimburseapplyout", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L477", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_out_one_with_attachment_counts", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L494", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_out_one_with_attachment_counts", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L494", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_out_one_with_attachment_counts", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L494", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_out_one_with_attachment_counts", "target": "bxreimburseapply", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L494", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_out_one_with_attachment_counts", "target": "reimburseapplyout", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L494", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_build_apply_out_with_details", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L500", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_build_apply_out_with_details", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L500", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_build_apply_out_with_details", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L500", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_build_apply_out_with_details", "target": "bxreimburseapply", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L500", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_build_apply_out_with_details", "target": "reimburseapplyout", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L500", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_global_status_counts", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L509", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_global_status_counts", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L509", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_global_status_counts", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L509", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_global_status_counts", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L509", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_global_status_counts", "target": "int", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L509", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_my_apply_stats", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L519", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_my_apply_stats", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L519", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_my_apply_stats", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L519", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_my_apply_stats", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L519", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_pending_approval_stats", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L578", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pending_approval_stats", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L578", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pending_approval_stats", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L578", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pending_approval_stats", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L578", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_pay", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L609", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pay", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L609", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pay", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L609", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pay", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L609", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pay", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L609", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pay", "target": "float", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L609", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pay", "target": "bxreimburseapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L609", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_offset", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L632", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_offset", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L632", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_offset", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L632", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_offset", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L632", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_offset", "target": "float", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L632", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_offset", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L632", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_offset", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L632", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_offset", "target": "bxreimburseapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L632", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_batch_offset", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L663", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_batch_offset", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L663", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_batch_offset", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L663", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_batch_offset", "target": "float", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L663", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_batch_offset", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L663", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_batch_offset", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L663", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_batch_offset", "target": "bxreimburseapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L663", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_finance_payment_stats", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L718", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_finance_payment_stats", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L718", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_finance_payment_stats", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L718", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_soft_delete", "target": "bx_reimburse_reimburseservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L51", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pending_approval", "target": "bx_reimburse_reimburseservice_offset", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L116", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approved_by_me", "target": "bx_reimburse_reimburseservice_offset", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L166", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_submit", "target": "bx_reimburse_reimburseservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L175", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_submit", "target": "bx_reimburse_reimburseservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L176", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_submit", "target": "bx_reimburse_reimburseservice_workflow_nodes", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L184", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approve", "target": "bx_reimburse_reimburseservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L194", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approve", "target": "bx_reimburse_reimburseservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L195", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approve", "target": "bx_reimburse_reimburseservice_workflow_nodes", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L198", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approve", "target": "bxreimburseapproval", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L211", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_reject", "target": "bx_reimburse_reimburseservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L239", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_reject", "target": "bx_reimburse_reimburseservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L240", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_reject", "target": "bx_reimburse_reimburseservice_workflow_nodes", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L243", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_reject", "target": "bxreimburseapproval", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L251", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approvals", "target": "bx_reimburse_reimburseservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L316", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approvals", "target": "bx_reimburse_reimburseservice_workflow_nodes", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L322", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approvals", "target": "bx_reimburse_reimburseservice_query_approvals", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L325", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approvals", "target": "bx_reimburse_reimburseservice_latest_approval_per_node", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L326", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approvals", "target": "bx_reimburse_reimburseservice_approval_record_dict", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L331", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approval_history", "target": "bx_reimburse_reimburseservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L350", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approval_history", "target": "bx_reimburse_reimburseservice_approval_record_dict", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L362", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_create_with_details", "target": "bx_reimburse_reimburseservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L372", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_create_with_details", "target": "bxreimburseapply", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L378", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_create_with_details", "target": "bxreimbursedetail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L395", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_update_with_details", "target": "bx_reimburse_reimburseservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L419", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_update_with_details", "target": "bx_reimburse_reimburseservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L420", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_update_with_details", "target": "bxreimbursedetail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L438", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_out_one_with_attachment_counts", "target": "bx_reimburse_reimburseservice_out_rows_with_attachment_counts", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L497", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_build_apply_out_with_details", "target": "bx_reimburse_reimburseservice_out_one_with_attachment_counts", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L503", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_build_apply_out_with_details", "target": "bx_reimburse_reimburseservice_get_details", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L504", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pay", "target": "bx_reimburse_reimburseservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L616", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pay", "target": "bx_reimburse_reimburseservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L617", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_offset", "target": "bx_reimburse_reimburseservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L640", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_offset", "target": "bx_reimburse_reimburseservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L641", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_batch_offset", "target": "bx_reimburse_reimburseservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L671", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_batch_offset", "target": "bx_reimburse_reimburseservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L672", "weight": 1.0}, {"source": "bx_reimburse_rationale_289", "target": "bx_reimburse_reimburseservice_latest_approval_per_node", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L289", "weight": 1.0}, {"source": "bx_reimburse_rationale_349", "target": "bx_reimburse_reimburseservice_get_approval_history", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L349", "weight": 1.0}], "raw_calls": [{"caller_nid": "bx_reimburse_reimburseservice_tenant_no", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L33"}, {"caller_nid": "bx_reimburse_reimburseservice_tenant_no", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L33"}, {"caller_nid": "bx_reimburse_reimburseservice_workflow_nodes", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L59"}, {"caller_nid": "bx_reimburse_reimburseservice_workflow_nodes", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L59"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "join", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L81"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L81"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "and_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L84"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L100"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L101"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L102"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "parse_create_time_day_bounds", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L107"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "subquery", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L113"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L114"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L114"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L114"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L114"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "limit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L116"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L116"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "join", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L116"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L116"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L118"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "subquery", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L137"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "distinct", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L137"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L137"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "join", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L147"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L147"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L153"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L154"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L155"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "parse_create_time_day_bounds", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L160"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L164"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "limit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L166"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L166"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L166"}, {"caller_nid": "bx_reimburse_reimburseservice_submit", "callee": "generate_apply_code", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L181"}, {"caller_nid": "bx_reimburse_reimburseservice_submit", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L187"}, {"caller_nid": "bx_reimburse_reimburseservice_approve", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L212"}, {"caller_nid": "bx_reimburse_reimburseservice_approve", "callee": "now", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L220"}, {"caller_nid": "bx_reimburse_reimburseservice_approve", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L225"}, {"caller_nid": "bx_reimburse_reimburseservice_approve", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L232"}, {"caller_nid": "bx_reimburse_reimburseservice_reject", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L252"}, {"caller_nid": "bx_reimburse_reimburseservice_reject", "callee": "now", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L260"}, {"caller_nid": "bx_reimburse_reimburseservice_reject", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L265"}, {"caller_nid": "bx_reimburse_reimburseservice_reject", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L269"}, {"caller_nid": "bx_reimburse_reimburseservice_latest_approval_per_node", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L292"}, {"caller_nid": "bx_reimburse_reimburseservice_query_approvals", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L305"}, {"caller_nid": "bx_reimburse_reimburseservice_get_approvals", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L329"}, {"caller_nid": "bx_reimburse_reimburseservice_get_approvals", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L331"}, {"caller_nid": "bx_reimburse_reimburseservice_get_approvals", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L333"}, {"caller_nid": "bx_reimburse_reimburseservice_get_approval_history", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L353"}, {"caller_nid": "bx_reimburse_reimburseservice_get_approval_history", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L353"}, {"caller_nid": "bx_reimburse_reimburseservice_get_approval_history", "callee": "asc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L359"}, {"caller_nid": "bx_reimburse_reimburseservice_get_approval_history", "callee": "asc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L359"}, {"caller_nid": "bx_reimburse_reimburseservice_create_with_details", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L374"}, {"caller_nid": "bx_reimburse_reimburseservice_create_with_details", "callee": "pop", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L375"}, {"caller_nid": "bx_reimburse_reimburseservice_create_with_details", "callee": "generate_title", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L375"}, {"caller_nid": "bx_reimburse_reimburseservice_create_with_details", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L379"}, {"caller_nid": "bx_reimburse_reimburseservice_create_with_details", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L382"}, {"caller_nid": "bx_reimburse_reimburseservice_create_with_details", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L383"}, {"caller_nid": "bx_reimburse_reimburseservice_create_with_details", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L391"}, {"caller_nid": "bx_reimburse_reimburseservice_create_with_details", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L392"}, {"caller_nid": "bx_reimburse_reimburseservice_create_with_details", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L396"}, {"caller_nid": "bx_reimburse_reimburseservice_create_with_details", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L401"}, {"caller_nid": "bx_reimburse_reimburseservice_create_with_details", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L406"}, {"caller_nid": "bx_reimburse_reimburseservice_create_with_details", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L407"}, {"caller_nid": "bx_reimburse_reimburseservice_update_with_details", "callee": "items", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L424"}, {"caller_nid": "bx_reimburse_reimburseservice_update_with_details", "callee": "update", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L428"}, {"caller_nid": "bx_reimburse_reimburseservice_update_with_details", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L428"}, {"caller_nid": "bx_reimburse_reimburseservice_update_with_details", "callee": "Decimal", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L434"}, {"caller_nid": "bx_reimburse_reimburseservice_update_with_details", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L439"}, {"caller_nid": "bx_reimburse_reimburseservice_update_with_details", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L444"}, {"caller_nid": "bx_reimburse_reimburseservice_update_with_details", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L449"}, {"caller_nid": "bx_reimburse_reimburseservice_update_with_details", "callee": "Decimal", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L450"}, {"caller_nid": "bx_reimburse_reimburseservice_update_with_details", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L460"}, {"caller_nid": "bx_reimburse_reimburseservice_get_details", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L466"}, {"caller_nid": "bx_reimburse_reimburseservice_get_details", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L466"}, {"caller_nid": "bx_reimburse_reimburseservice_out_rows_with_attachment_counts", "callee": "count_invoice_attach_by_biz_ids", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L483"}, {"caller_nid": "bx_reimburse_reimburseservice_out_rows_with_attachment_counts", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L488"}, {"caller_nid": "bx_reimburse_reimburseservice_out_rows_with_attachment_counts", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L489"}, {"caller_nid": "bx_reimburse_reimburseservice_out_rows_with_attachment_counts", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L490"}, {"caller_nid": "bx_reimburse_reimburseservice_out_rows_with_attachment_counts", "callee": "model_copy", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L490"}, {"caller_nid": "bx_reimburse_reimburseservice_build_apply_out_with_details", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L505"}, {"caller_nid": "bx_reimburse_reimburseservice_global_status_counts", "callee": "group_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L511"}, {"caller_nid": "bx_reimburse_reimburseservice_global_status_counts", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L511"}, {"caller_nid": "bx_reimburse_reimburseservice_global_status_counts", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L511"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "and_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L520"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L525"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L525"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L525"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L525"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L527"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L527"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L527"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L527"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L534"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L534"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L534"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L534"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "in_", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L536"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L541"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L541"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L541"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L541"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L548"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L548"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L548"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "in_", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L549"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "current_month_bounds", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L553"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L555"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L555"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L555"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L561"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L561"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L561"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L561"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval_stats", "callee": "subquery", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L579"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval_stats", "callee": "join", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L580"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L580"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval_stats", "callee": "and_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L583"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L597"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L597"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L597"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L597"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval_stats", "callee": "current_month_bounds", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L598"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L600"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval_stats", "callee": "join", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L600"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L600"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval_stats", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L600"}, {"caller_nid": "bx_reimburse_reimburseservice_pay", "callee": "now", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L623"}, {"caller_nid": "bx_reimburse_reimburseservice_pay", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L628"}, {"caller_nid": "bx_reimburse_reimburseservice_offset", "callee": "BxReimburseOffset", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L648"}, {"caller_nid": "bx_reimburse_reimburseservice_offset", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L649"}, {"caller_nid": "bx_reimburse_reimburseservice_offset", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L658"}, {"caller_nid": "bx_reimburse_reimburseservice_offset", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L659"}, {"caller_nid": "bx_reimburse_reimburseservice_batch_offset", "callee": "BxReimburseOffset", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L686"}, {"caller_nid": "bx_reimburse_reimburseservice_batch_offset", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L687"}, {"caller_nid": "bx_reimburse_reimburseservice_batch_offset", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L696"}, {"caller_nid": "bx_reimburse_reimburseservice_batch_offset", "callee": "now", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L704"}, {"caller_nid": "bx_reimburse_reimburseservice_batch_offset", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L714"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "and_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L719"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L721"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L721"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L721"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L721"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "isnot", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L727"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L729"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L729"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L729"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L729"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L731"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "and_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L733"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "is_", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L735"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L736"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L740"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L740"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L740"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L740"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "current_month_bounds", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L742"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L744"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L744"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L744"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L750"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L750"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L750"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/a1404064f42d27efcdf287062da76d4cc863112aa1f2ace1bf86c2f72e8faef9.json b/backend/graphify-out/cache/ast/a1404064f42d27efcdf287062da76d4cc863112aa1f2ace1bf86c2f72e8faef9.json new file mode 100644 index 000000000..2d10101ec --- /dev/null +++ b/backend/graphify-out/cache/ast/a1404064f42d27efcdf287062da76d4cc863112aa1f2ace1bf86c2f72e8faef9.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_core_config_py", "label": "config.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/core/config.py", "source_location": "L1"}, {"id": "core_config_settings", "label": "Settings", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/core/config.py", "source_location": "L7"}, {"id": "basesettings", "label": "BaseSettings", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "core_config_config", "label": "Config", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/core/config.py", "source_location": "L151"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_core_config_py", "target": "pydantic_settings", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/core/config.py", "source_location": "L1", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_core_config_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/core/config.py", "source_location": "L2", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_core_config_py", "target": "pathlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/core/config.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_core_config_py", "target": "os", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/core/config.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_core_config_py", "target": "core_config_settings", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/core/config.py", "source_location": "L7", "weight": 1.0}, {"source": "core_config_settings", "target": "basesettings", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/core/config.py", "source_location": "L7", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_core_config_py", "target": "core_config_config", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/core/config.py", "source_location": "L151", "weight": 1.0}], "raw_calls": []} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/a69603083acd513274bec92f033d2d496f175b17de6aec59d8d2b6f63391abac.json b/backend/graphify-out/cache/ast/a69603083acd513274bec92f033d2d496f175b17de6aec59d8d2b6f63391abac.json new file mode 100644 index 000000000..11d6a548d --- /dev/null +++ b/backend/graphify-out/cache/ast/a69603083acd513274bec92f033d2d496f175b17de6aec59d8d2b6f63391abac.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_base_py", "label": "base.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py", "source_location": "L1"}, {"id": "bx_base_bxcrudservice", "label": "BxCrudService", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py", "source_location": "L13"}, {"id": "bx_base_bxcrudservice_get_by_id", "label": ".get_by_id()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py", "source_location": "L15"}, {"id": "m", "label": "M", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py", "source_location": "L15"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py", "source_location": "L15"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py", "source_location": "L15"}, {"id": "bx_base_bxcrudservice_get_paged", "label": ".get_paged()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py", "source_location": "L22"}, {"id": "int", "label": "int", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py", "source_location": "L22"}, {"id": "any", "label": "Any", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py", "source_location": "L22"}, {"id": "bx_base_bxcrudservice_create", "label": ".create()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py", "source_location": "L44"}, {"id": "bx_base_bxcrudservice_update", "label": ".update()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py", "source_location": "L64"}, {"id": "bx_base_bxcrudservice_soft_delete", "label": ".soft_delete()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py", "source_location": "L84"}, {"id": "bool", "label": "bool", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py", "source_location": "L84"}, {"id": "bx_base_rationale_1", "label": "\u62a5\u9500\u6a21\u5757 Service \u57fa\u7c7b \u2014 \u79df\u6237\u9694\u79bb + UUID + \u8f6f\u5220\u9664\u3002", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py", "source_location": "L1"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_base_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_base_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py", "source_location": "L6", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_base_py", "target": "app_core_utils", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py", "source_location": "L8", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_base_py", "target": "bx_base_bxcrudservice", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py", "source_location": "L13", "weight": 1.0}, {"source": "bx_base_bxcrudservice", "target": "bx_base_bxcrudservice_get_by_id", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py", "source_location": "L15", "weight": 1.0}, {"source": "bx_base_bxcrudservice_get_by_id", "target": "m", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py", "source_location": "L15", "weight": 1.0}, {"source": "bx_base_bxcrudservice_get_by_id", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py", "source_location": "L15", "weight": 1.0}, {"source": "bx_base_bxcrudservice_get_by_id", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py", "source_location": "L15", "weight": 1.0}, {"source": "bx_base_bxcrudservice_get_by_id", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py", "source_location": "L15", "weight": 1.0}, {"source": "bx_base_bxcrudservice_get_by_id", "target": "m", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py", "source_location": "L15", "weight": 1.0}, {"source": "bx_base_bxcrudservice", "target": "bx_base_bxcrudservice_get_paged", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py", "source_location": "L22", "weight": 1.0}, {"source": "bx_base_bxcrudservice_get_paged", "target": "m", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py", "source_location": "L22", "weight": 1.0}, {"source": "bx_base_bxcrudservice_get_paged", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py", "source_location": "L22", "weight": 1.0}, {"source": "bx_base_bxcrudservice_get_paged", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py", "source_location": "L22", "weight": 1.0}, {"source": "bx_base_bxcrudservice_get_paged", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py", "source_location": "L22", "weight": 1.0}, {"source": "bx_base_bxcrudservice_get_paged", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py", "source_location": "L22", "weight": 1.0}, {"source": "bx_base_bxcrudservice_get_paged", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py", "source_location": "L22", "weight": 1.0}, {"source": "bx_base_bxcrudservice_get_paged", "target": "m", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py", "source_location": "L22", "weight": 1.0}, {"source": "bx_base_bxcrudservice_get_paged", "target": "int", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py", "source_location": "L22", "weight": 1.0}, {"source": "bx_base_bxcrudservice", "target": "bx_base_bxcrudservice_create", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py", "source_location": "L44", "weight": 1.0}, {"source": "bx_base_bxcrudservice_create", "target": "m", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py", "source_location": "L44", "weight": 1.0}, {"source": "bx_base_bxcrudservice_create", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py", "source_location": "L44", "weight": 1.0}, {"source": "bx_base_bxcrudservice_create", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py", "source_location": "L44", "weight": 1.0}, {"source": "bx_base_bxcrudservice_create", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py", "source_location": "L44", "weight": 1.0}, {"source": "bx_base_bxcrudservice_create", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py", "source_location": "L44", "weight": 1.0}, {"source": "bx_base_bxcrudservice_create", "target": "m", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py", "source_location": "L44", "weight": 1.0}, {"source": "bx_base_bxcrudservice", "target": "bx_base_bxcrudservice_update", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py", "source_location": "L64", "weight": 1.0}, {"source": "bx_base_bxcrudservice_update", "target": "m", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py", "source_location": "L64", "weight": 1.0}, {"source": "bx_base_bxcrudservice_update", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py", "source_location": "L64", "weight": 1.0}, {"source": "bx_base_bxcrudservice_update", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py", "source_location": "L64", "weight": 1.0}, {"source": "bx_base_bxcrudservice_update", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py", "source_location": "L64", "weight": 1.0}, {"source": "bx_base_bxcrudservice_update", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py", "source_location": "L64", "weight": 1.0}, {"source": "bx_base_bxcrudservice_update", "target": "m", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py", "source_location": "L64", "weight": 1.0}, {"source": "bx_base_bxcrudservice", "target": "bx_base_bxcrudservice_soft_delete", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py", "source_location": "L84", "weight": 1.0}, {"source": "bx_base_bxcrudservice_soft_delete", "target": "m", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py", "source_location": "L84", "weight": 1.0}, {"source": "bx_base_bxcrudservice_soft_delete", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py", "source_location": "L84", "weight": 1.0}, {"source": "bx_base_bxcrudservice_soft_delete", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py", "source_location": "L84", "weight": 1.0}, {"source": "bx_base_bxcrudservice_soft_delete", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py", "source_location": "L84", "weight": 1.0}, {"source": "bx_base_bxcrudservice_soft_delete", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py", "source_location": "L84", "weight": 1.0}, {"source": "bx_base_bxcrudservice_soft_delete", "target": "bool", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py", "source_location": "L84", "weight": 1.0}, {"source": "bx_base_bxcrudservice_update", "target": "bx_base_bxcrudservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py", "source_location": "L73", "weight": 1.0}, {"source": "bx_base_bxcrudservice_soft_delete", "target": "bx_base_bxcrudservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py", "source_location": "L85", "weight": 1.0}, {"source": "bx_base_rationale_1", "target": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_base_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py", "source_location": "L1", "weight": 1.0}], "raw_calls": [{"caller_nid": "bx_base_bxcrudservice_get_by_id", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py", "source_location": "L16"}, {"caller_nid": "bx_base_bxcrudservice_get_by_id", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py", "source_location": "L19"}, {"caller_nid": "bx_base_bxcrudservice_get_paged", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py", "source_location": "L30"}, {"caller_nid": "bx_base_bxcrudservice_get_paged", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py", "source_location": "L35"}, {"caller_nid": "bx_base_bxcrudservice_get_paged", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py", "source_location": "L37"}, {"caller_nid": "bx_base_bxcrudservice_get_paged", "callee": "asc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py", "source_location": "L37"}, {"caller_nid": "bx_base_bxcrudservice_get_paged", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py", "source_location": "L37"}, {"caller_nid": "bx_base_bxcrudservice_get_paged", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py", "source_location": "L39"}, {"caller_nid": "bx_base_bxcrudservice_get_paged", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py", "source_location": "L39"}, {"caller_nid": "bx_base_bxcrudservice_get_paged", "callee": "limit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py", "source_location": "L40"}, {"caller_nid": "bx_base_bxcrudservice_get_paged", "callee": "offset", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py", "source_location": "L40"}, {"caller_nid": "bx_base_bxcrudservice_create", "callee": "setdefault", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py", "source_location": "L54"}, {"caller_nid": "bx_base_bxcrudservice_create", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py", "source_location": "L54"}, {"caller_nid": "bx_base_bxcrudservice_create", "callee": "model", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py", "source_location": "L58"}, {"caller_nid": "bx_base_bxcrudservice_create", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py", "source_location": "L59"}, {"caller_nid": "bx_base_bxcrudservice_create", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py", "source_location": "L60"}, {"caller_nid": "bx_base_bxcrudservice_update", "callee": "items", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py", "source_location": "L76"}, {"caller_nid": "bx_base_bxcrudservice_update", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py", "source_location": "L80"}, {"caller_nid": "bx_base_bxcrudservice_soft_delete", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py", "source_location": "L91"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/ac31c58cf246f27a3f875920f583dd42af66a09f09dc879a215ce05a056d450f.json b/backend/graphify-out/cache/ast/ac31c58cf246f27a3f875920f583dd42af66a09f09dc879a215ce05a056d450f.json new file mode 100644 index 000000000..4fee17c9a --- /dev/null +++ b/backend/graphify-out/cache/ast/ac31c58cf246f27a3f875920f583dd42af66a09f09dc879a215ce05a056d450f.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_expense_item_py", "label": "expense_item.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py", "source_location": "L1"}, {"id": "bx_expense_item_expenseitemservice", "label": "ExpenseItemService", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py", "source_location": "L13"}, {"id": "bx_expense_item_expenseitemservice_tenant_no", "label": "._tenant_no()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py", "source_location": "L15"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py", "source_location": "L15"}, {"id": "bxusercontext", "label": "BxUserContext", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py", "source_location": "L15"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py", "source_location": "L15"}, {"id": "bx_expense_item_expenseitemservice_get_by_id", "label": ".get_by_id()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py", "source_location": "L19"}, {"id": "bxexpenseitem", "label": "BxExpenseItem", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py", "source_location": "L19"}, {"id": "bx_expense_item_expenseitemservice_create", "label": ".create()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py", "source_location": "L23"}, {"id": "bx_expense_item_expenseitemservice_update", "label": ".update()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py", "source_location": "L51"}, {"id": "bx_expense_item_expenseitemservice_soft_delete", "label": ".soft_delete()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py", "source_location": "L79"}, {"id": "bool", "label": "bool", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py", "source_location": "L79"}, {"id": "bx_expense_item_expenseitemservice_get_item_tree", "label": ".get_item_tree()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py", "source_location": "L86"}, {"id": "bx_expense_item_expenseitemservice_build_tree", "label": "._build_tree()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py", "source_location": "L96"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_expense_item_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_expense_item_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py", "source_location": "L5", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_expense_item_py", "target": "app_core_bx_auth", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py", "source_location": "L7", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_expense_item_py", "target": "app_core_tenant_context", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py", "source_location": "L8", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_expense_item_py", "target": "app_models_bx_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py", "source_location": "L9", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_expense_item_py", "target": "app_services_bx_base", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py", "source_location": "L10", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_expense_item_py", "target": "bx_expense_item_expenseitemservice", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py", "source_location": "L13", "weight": 1.0}, {"source": "bx_expense_item_expenseitemservice", "target": "bx_expense_item_expenseitemservice_tenant_no", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py", "source_location": "L15", "weight": 1.0}, {"source": "bx_expense_item_expenseitemservice_tenant_no", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py", "source_location": "L15", "weight": 1.0}, {"source": "bx_expense_item_expenseitemservice_tenant_no", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py", "source_location": "L15", "weight": 1.0}, {"source": "bx_expense_item_expenseitemservice_tenant_no", "target": "str", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py", "source_location": "L15", "weight": 1.0}, {"source": "bx_expense_item_expenseitemservice", "target": "bx_expense_item_expenseitemservice_get_by_id", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py", "source_location": "L19", "weight": 1.0}, {"source": "bx_expense_item_expenseitemservice_get_by_id", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py", "source_location": "L19", "weight": 1.0}, {"source": "bx_expense_item_expenseitemservice_get_by_id", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py", "source_location": "L19", "weight": 1.0}, {"source": "bx_expense_item_expenseitemservice_get_by_id", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py", "source_location": "L19", "weight": 1.0}, {"source": "bx_expense_item_expenseitemservice_get_by_id", "target": "bxexpenseitem", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py", "source_location": "L19", "weight": 1.0}, {"source": "bx_expense_item_expenseitemservice", "target": "bx_expense_item_expenseitemservice_create", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py", "source_location": "L23", "weight": 1.0}, {"source": "bx_expense_item_expenseitemservice_create", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py", "source_location": "L23", "weight": 1.0}, {"source": "bx_expense_item_expenseitemservice_create", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py", "source_location": "L23", "weight": 1.0}, {"source": "bx_expense_item_expenseitemservice_create", "target": "bxexpenseitem", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py", "source_location": "L23", "weight": 1.0}, {"source": "bx_expense_item_expenseitemservice", "target": "bx_expense_item_expenseitemservice_update", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py", "source_location": "L51", "weight": 1.0}, {"source": "bx_expense_item_expenseitemservice_update", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py", "source_location": "L51", "weight": 1.0}, {"source": "bx_expense_item_expenseitemservice_update", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py", "source_location": "L51", "weight": 1.0}, {"source": "bx_expense_item_expenseitemservice_update", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py", "source_location": "L51", "weight": 1.0}, {"source": "bx_expense_item_expenseitemservice_update", "target": "bxexpenseitem", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py", "source_location": "L51", "weight": 1.0}, {"source": "bx_expense_item_expenseitemservice", "target": "bx_expense_item_expenseitemservice_soft_delete", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py", "source_location": "L79", "weight": 1.0}, {"source": "bx_expense_item_expenseitemservice_soft_delete", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py", "source_location": "L79", "weight": 1.0}, {"source": "bx_expense_item_expenseitemservice_soft_delete", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py", "source_location": "L79", "weight": 1.0}, {"source": "bx_expense_item_expenseitemservice_soft_delete", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py", "source_location": "L79", "weight": 1.0}, {"source": "bx_expense_item_expenseitemservice_soft_delete", "target": "bool", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py", "source_location": "L79", "weight": 1.0}, {"source": "bx_expense_item_expenseitemservice", "target": "bx_expense_item_expenseitemservice_get_item_tree", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py", "source_location": "L86", "weight": 1.0}, {"source": "bx_expense_item_expenseitemservice_get_item_tree", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py", "source_location": "L86", "weight": 1.0}, {"source": "bx_expense_item_expenseitemservice_get_item_tree", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py", "source_location": "L86", "weight": 1.0}, {"source": "bx_expense_item_expenseitemservice_get_item_tree", "target": "bxexpenseitem", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py", "source_location": "L86", "weight": 1.0}, {"source": "bx_expense_item_expenseitemservice", "target": "bx_expense_item_expenseitemservice_build_tree", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py", "source_location": "L96", "weight": 1.0}, {"source": "bx_expense_item_expenseitemservice_build_tree", "target": "bxexpenseitem", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py", "source_location": "L96", "weight": 1.0}, {"source": "bx_expense_item_expenseitemservice_build_tree", "target": "bxexpenseitem", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py", "source_location": "L96", "weight": 1.0}, {"source": "bx_expense_item_expenseitemservice_create", "target": "bx_expense_item_expenseitemservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py", "source_location": "L29", "weight": 1.0}, {"source": "bx_expense_item_expenseitemservice_create", "target": "bx_expense_item_expenseitemservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py", "source_location": "L34", "weight": 1.0}, {"source": "bx_expense_item_expenseitemservice_update", "target": "bx_expense_item_expenseitemservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py", "source_location": "L58", "weight": 1.0}, {"source": "bx_expense_item_expenseitemservice_update", "target": "bx_expense_item_expenseitemservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py", "source_location": "L66", "weight": 1.0}, {"source": "bx_expense_item_expenseitemservice_soft_delete", "target": "bx_expense_item_expenseitemservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py", "source_location": "L80", "weight": 1.0}, {"source": "bx_expense_item_expenseitemservice_get_item_tree", "target": "bx_expense_item_expenseitemservice_build_tree", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py", "source_location": "L93", "weight": 1.0}], "raw_calls": [{"caller_nid": "bx_expense_item_expenseitemservice_tenant_no", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py", "source_location": "L16"}, {"caller_nid": "bx_expense_item_expenseitemservice_tenant_no", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py", "source_location": "L16"}, {"caller_nid": "bx_expense_item_expenseitemservice_create", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py", "source_location": "L31"}, {"caller_nid": "bx_expense_item_expenseitemservice_create", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py", "source_location": "L36"}, {"caller_nid": "bx_expense_item_expenseitemservice_create", "callee": "setdefault", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py", "source_location": "L37"}, {"caller_nid": "bx_expense_item_expenseitemservice_create", "callee": "setdefault", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py", "source_location": "L40"}, {"caller_nid": "bx_expense_item_expenseitemservice_update", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py", "source_location": "L65"}, {"caller_nid": "bx_expense_item_expenseitemservice_update", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py", "source_location": "L68"}, {"caller_nid": "bx_expense_item_expenseitemservice_get_item_tree", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py", "source_location": "L88"}, {"caller_nid": "bx_expense_item_expenseitemservice_get_item_tree", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py", "source_location": "L88"}, {"caller_nid": "bx_expense_item_expenseitemservice_get_item_tree", "callee": "asc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py", "source_location": "L90"}, {"caller_nid": "bx_expense_item_expenseitemservice_get_item_tree", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py", "source_location": "L90"}, {"caller_nid": "bx_expense_item_expenseitemservice_build_tree", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py", "source_location": "L102"}, {"caller_nid": "bx_expense_item_expenseitemservice_build_tree", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py", "source_location": "L104"}, {"caller_nid": "bx_expense_item_expenseitemservice_build_tree", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py", "source_location": "L108"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/ac98980bd5b6cbab6a9394b6debc678b050cf4df969eccbc5f2d419b615937cd.json b/backend/graphify-out/cache/ast/ac98980bd5b6cbab6a9394b6debc678b050cf4df969eccbc5f2d419b615937cd.json new file mode 100644 index 000000000..66b139319 --- /dev/null +++ b/backend/graphify-out/cache/ast/ac98980bd5b6cbab6a9394b6debc678b050cf4df969eccbc5f2d419b615937cd.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_storage_py", "label": "storage.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L1"}, {"id": "bx_storage_normalize_storage_path", "label": "normalize_storage_path()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L12"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L12"}, {"id": "bx_storage_upload_bx_file", "label": "upload_bx_file()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L32"}, {"id": "bytes", "label": "bytes", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L32"}, {"id": "bx_storage_get_access_url", "label": "get_access_url()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L45"}, {"id": "bx_storage_get_preview_url", "label": "get_preview_url()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L54"}, {"id": "int", "label": "int", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L54"}, {"id": "bx_storage_get_download_url", "label": "get_download_url()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L69"}, {"id": "bx_storage_download_file_bytes", "label": "download_file_bytes()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L76"}, {"id": "bx_storage_file_stream", "label": "file_stream()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L102"}, {"id": "bytesio", "label": "BytesIO", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L102"}, {"id": "bx_storage_rationale_1", "label": "\u62a5\u9500\u9644\u4ef6\u5b58\u50a8\u9002\u914d \u2014 \u590d\u7528\u95e8\u6237 app.core.storage\uff0c\u5bf9\u5916\u4fdd\u6301 bx \u534f\u8bae\u3002", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L1"}, {"id": "bx_storage_rationale_13", "label": "\u5c06 upload \u8fd4\u56de\u7684\u5b8c\u6574 URL \u5f52\u4e00\u5316\u4e3a\u5b58\u50a8\u76f8\u5bf9\u8def\u5f84\uff08\u4e0e admin \u9644\u4ef6 upload \u4e00\u81f4\uff09\u3002", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L13"}, {"id": "bx_storage_rationale_33", "label": "\u4e0a\u4f20\u6587\u4ef6\u5230\u5bf9\u8c61\u5b58\u50a8\u3002 \u8fd4\u56de (relative_path, access_url)\u3002", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L33"}, {"id": "bx_storage_rationale_46", "label": "\u83b7\u53d6\u53ef\u8bbf\u95ee URL\uff08\u672c\u5730/MinIO \u516c\u5f00\u5730\u5740\uff09\u3002", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L46"}, {"id": "bx_storage_rationale_55", "label": "\u56fe\u7247/\u9644\u4ef6\u9884\u89c8 URL\uff1aMinIO \u9884\u7b7e\u540d inline\uff0c\u672c\u5730/\u5176\u4ed6\u5b58\u50a8\u7528 get_url\u3002", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L55"}, {"id": "bx_storage_rationale_70", "label": "\u5e26\u6587\u4ef6\u540d\u7684\u4e0b\u8f7d URL\uff08\u5bf9\u9f50\u95e8\u6237 attachment/download-url\uff09\u3002", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L70"}, {"id": "bx_storage_rationale_77", "label": "\u8bfb\u53d6\u6587\u4ef6\u4e8c\u8fdb\u5236\uff0c\u4f9b StreamingResponse \u4e0b\u8f7d\u3002", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L77"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_storage_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_storage_py", "target": "io", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L5", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_storage_py", "target": "pathlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L6", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_storage_py", "target": "app_core_config", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L8", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_storage_py", "target": "app_core_storage", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L9", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_storage_py", "target": "bx_storage_normalize_storage_path", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L12", "weight": 1.0}, {"source": "bx_storage_normalize_storage_path", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L12", "weight": 1.0}, {"source": "bx_storage_normalize_storage_path", "target": "str", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L12", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_storage_py", "target": "bx_storage_upload_bx_file", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L32", "weight": 1.0}, {"source": "bx_storage_upload_bx_file", "target": "bytes", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L32", "weight": 1.0}, {"source": "bx_storage_upload_bx_file", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L32", "weight": 1.0}, {"source": "bx_storage_upload_bx_file", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L32", "weight": 1.0}, {"source": "bx_storage_upload_bx_file", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L32", "weight": 1.0}, {"source": "bx_storage_upload_bx_file", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L32", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_storage_py", "target": "bx_storage_get_access_url", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L45", "weight": 1.0}, {"source": "bx_storage_get_access_url", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L45", "weight": 1.0}, {"source": "bx_storage_get_access_url", "target": "str", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L45", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_storage_py", "target": "bx_storage_get_preview_url", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L54", "weight": 1.0}, {"source": "bx_storage_get_preview_url", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L54", "weight": 1.0}, {"source": "bx_storage_get_preview_url", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L54", "weight": 1.0}, {"source": "bx_storage_get_preview_url", "target": "str", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L54", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_storage_py", "target": "bx_storage_get_download_url", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L69", "weight": 1.0}, {"source": "bx_storage_get_download_url", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L69", "weight": 1.0}, {"source": "bx_storage_get_download_url", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L69", "weight": 1.0}, {"source": "bx_storage_get_download_url", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L69", "weight": 1.0}, {"source": "bx_storage_get_download_url", "target": "str", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L69", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_storage_py", "target": "bx_storage_download_file_bytes", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L76", "weight": 1.0}, {"source": "bx_storage_download_file_bytes", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L76", "weight": 1.0}, {"source": "bx_storage_download_file_bytes", "target": "bytes", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L76", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_storage_py", "target": "bx_storage_file_stream", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L102", "weight": 1.0}, {"source": "bx_storage_file_stream", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L102", "weight": 1.0}, {"source": "bx_storage_file_stream", "target": "bytesio", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L102", "weight": 1.0}, {"source": "bx_storage_upload_bx_file", "target": "bx_storage_normalize_storage_path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L41", "weight": 1.0}, {"source": "bx_storage_get_access_url", "target": "bx_storage_normalize_storage_path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L48", "weight": 1.0}, {"source": "bx_storage_get_preview_url", "target": "bx_storage_normalize_storage_path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L57", "weight": 1.0}, {"source": "bx_storage_get_download_url", "target": "bx_storage_normalize_storage_path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L72", "weight": 1.0}, {"source": "bx_storage_download_file_bytes", "target": "bx_storage_normalize_storage_path", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L79", "weight": 1.0}, {"source": "bx_storage_file_stream", "target": "bytesio", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L103", "weight": 1.0}, {"source": "bx_storage_file_stream", "target": "bx_storage_download_file_bytes", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L103", "weight": 1.0}, {"source": "bx_storage_rationale_1", "target": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_storage_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L1", "weight": 1.0}, {"source": "bx_storage_rationale_13", "target": "bx_storage_normalize_storage_path", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L13", "weight": 1.0}, {"source": "bx_storage_rationale_33", "target": "bx_storage_upload_bx_file", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L33", "weight": 1.0}, {"source": "bx_storage_rationale_46", "target": "bx_storage_get_access_url", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L46", "weight": 1.0}, {"source": "bx_storage_rationale_55", "target": "bx_storage_get_preview_url", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L55", "weight": 1.0}, {"source": "bx_storage_rationale_70", "target": "bx_storage_get_download_url", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L70", "weight": 1.0}, {"source": "bx_storage_rationale_77", "target": "bx_storage_download_file_bytes", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L77", "weight": 1.0}], "raw_calls": [{"caller_nid": "bx_storage_normalize_storage_path", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L14"}, {"caller_nid": "bx_storage_normalize_storage_path", "callee": "split", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L18"}, {"caller_nid": "bx_storage_normalize_storage_path", "callee": "rstrip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L19"}, {"caller_nid": "bx_storage_normalize_storage_path", "callee": "startswith", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L20"}, {"caller_nid": "bx_storage_normalize_storage_path", "callee": "rstrip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L22"}, {"caller_nid": "bx_storage_normalize_storage_path", "callee": "startswith", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L23"}, {"caller_nid": "bx_storage_normalize_storage_path", "callee": "startswith", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L25"}, {"caller_nid": "bx_storage_normalize_storage_path", "callee": "startswith", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L25"}, {"caller_nid": "bx_storage_normalize_storage_path", "callee": "get_storage", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L26"}, {"caller_nid": "bx_storage_normalize_storage_path", "callee": "_extract_object_key", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L28"}, {"caller_nid": "bx_storage_normalize_storage_path", "callee": "lstrip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L29"}, {"caller_nid": "bx_storage_upload_bx_file", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L39"}, {"caller_nid": "bx_storage_upload_bx_file", "callee": "upload_file", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L40"}, {"caller_nid": "bx_storage_get_access_url", "callee": "get_storage", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L47"}, {"caller_nid": "bx_storage_get_access_url", "callee": "get_url", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L51"}, {"caller_nid": "bx_storage_get_preview_url", "callee": "get_storage", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L56"}, {"caller_nid": "bx_storage_get_preview_url", "callee": "presigned_get_object", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L61"}, {"caller_nid": "bx_storage_get_preview_url", "callee": "timedelta", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L64"}, {"caller_nid": "bx_storage_get_preview_url", "callee": "get_url", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L66"}, {"caller_nid": "bx_storage_get_download_url", "callee": "get_storage", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L71"}, {"caller_nid": "bx_storage_get_download_url", "callee": "presigned_download_url", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L73"}, {"caller_nid": "bx_storage_download_file_bytes", "callee": "get_storage", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L78"}, {"caller_nid": "bx_storage_download_file_bytes", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L81"}, {"caller_nid": "bx_storage_download_file_bytes", "callee": "get_object", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L83"}, {"caller_nid": "bx_storage_download_file_bytes", "callee": "read", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L85"}, {"caller_nid": "bx_storage_download_file_bytes", "callee": "close", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L87"}, {"caller_nid": "bx_storage_download_file_bytes", "callee": "release_conn", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L88"}, {"caller_nid": "bx_storage_download_file_bytes", "callee": "Path", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L90"}, {"caller_nid": "bx_storage_download_file_bytes", "callee": "is_file", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L91"}, {"caller_nid": "bx_storage_download_file_bytes", "callee": "FileNotFoundError", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L92"}, {"caller_nid": "bx_storage_download_file_bytes", "callee": "read_bytes", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L93"}, {"caller_nid": "bx_storage_download_file_bytes", "callee": "get_url", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L97"}, {"caller_nid": "bx_storage_download_file_bytes", "callee": "urlopen", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L98"}, {"caller_nid": "bx_storage_download_file_bytes", "callee": "read", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py", "source_location": "L99"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/b30a46c6fab214ca58787ff4e42a9ab2fdf933f1c4b6ee224d1799d9dd8918a6.json b/backend/graphify-out/cache/ast/b30a46c6fab214ca58787ff4e42a9ab2fdf933f1c4b6ee224d1799d9dd8918a6.json new file mode 100644 index 000000000..717408865 --- /dev/null +++ b/backend/graphify-out/cache/ast/b30a46c6fab214ca58787ff4e42a9ab2fdf933f1c4b6ee224d1799d9dd8918a6.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_core_attachment_biz_py", "label": "attachment_biz.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/core/attachment_biz.py", "source_location": "L1"}, {"id": "core_attachment_biz_resolve_upload_folder", "label": "resolve_upload_folder()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/core/attachment_biz.py", "source_location": "L19"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/core/attachment_biz.py", "source_location": "L19"}, {"id": "core_attachment_biz_rationale_1", "label": "\u9644\u4ef6\u4e0a\u4f20 bizType \u4e0e MinIO \u76ee\u5f55\u6620\u5c04\uff08\u5bf9\u9f50\u539f CRM oss \u4e0a\u4f20\u8bed\u4e49\uff09", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/core/attachment_biz.py", "source_location": "L1"}, {"id": "core_attachment_biz_rationale_20", "label": "\u4f18\u5148\u4f7f\u7528\u663e\u5f0f folder\uff1b\u5426\u5219\u6309 bizType \u6620\u5c04\u9ed8\u8ba4\u76ee\u5f55\u3002", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/core/attachment_biz.py", "source_location": "L20"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_core_attachment_biz_py", "target": "core_attachment_biz_resolve_upload_folder", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/core/attachment_biz.py", "source_location": "L19", "weight": 1.0}, {"source": "core_attachment_biz_resolve_upload_folder", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/core/attachment_biz.py", "source_location": "L19", "weight": 1.0}, {"source": "core_attachment_biz_resolve_upload_folder", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/core/attachment_biz.py", "source_location": "L19", "weight": 1.0}, {"source": "core_attachment_biz_resolve_upload_folder", "target": "str", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/core/attachment_biz.py", "source_location": "L19", "weight": 1.0}, {"source": "core_attachment_biz_rationale_1", "target": "users_zlwu_work_00code_shanxia2_0_backend_app_core_attachment_biz_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/core/attachment_biz.py", "source_location": "L1", "weight": 1.0}, {"source": "core_attachment_biz_rationale_20", "target": "core_attachment_biz_resolve_upload_folder", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/core/attachment_biz.py", "source_location": "L20", "weight": 1.0}], "raw_calls": [{"caller_nid": "core_attachment_biz_resolve_upload_folder", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/core/attachment_biz.py", "source_location": "L21"}, {"caller_nid": "core_attachment_biz_resolve_upload_folder", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/core/attachment_biz.py", "source_location": "L24"}, {"caller_nid": "core_attachment_biz_resolve_upload_folder", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/core/attachment_biz.py", "source_location": "L24"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/b3ed266cefdfc1511b94650b5a8615962585965fd93693d53a04c0e104c8fcf1.json b/backend/graphify-out/cache/ast/b3ed266cefdfc1511b94650b5a8615962585965fd93693d53a04c0e104c8fcf1.json new file mode 100644 index 000000000..0acffc6b1 --- /dev/null +++ b/backend/graphify-out/cache/ast/b3ed266cefdfc1511b94650b5a8615962585965fd93693d53a04c0e104c8fcf1.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_init_py", "label": "__init__.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/__init__.py", "source_location": "L1"}, {"id": "bx_init_bx_health", "label": "bx_health()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/__init__.py", "source_location": "L16"}, {"id": "bx_init_rationale_1", "label": "\u62a5\u9500\uff08bx\uff09API \u8def\u7531\u805a\u5408 \u2014 REST \u98ce\u683c\uff0c\u534f\u8bae\u5bf9\u9f50 bx \u539f\u7cfb\u7edf\u3002", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/__init__.py", "source_location": "L1"}, {"id": "bx_init_rationale_17", "label": "P0 \u5065\u5eb7\u68c0\u67e5\uff1a\u9a8c\u8bc1 bx \u8def\u7531\u5df2\u6302\u8f7d\u4e14\u54cd\u5e94\u534f\u8bae\u4e3a code=0\u3002", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/__init__.py", "source_location": "L17"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_init_py", "target": "fastapi", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/__init__.py", "source_location": "L2", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_init_py", "target": "app_api_bx", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/__init__.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_init_py", "target": "app_schemas_bx_common", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/__init__.py", "source_location": "L5", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_init_py", "target": "bx_init_bx_health", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/__init__.py", "source_location": "L16", "weight": 1.0}, {"source": "bx_init_rationale_1", "target": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_init_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/__init__.py", "source_location": "L1", "weight": 1.0}, {"source": "bx_init_rationale_17", "target": "bx_init_bx_health", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/__init__.py", "source_location": "L17", "weight": 1.0}], "raw_calls": [{"caller_nid": "bx_init_bx_health", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/__init__.py", "source_location": "L18"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/bae2905134b274c819ac7e262771f02012fdd240730c7f78f6694b57b6f35da7.json b/backend/graphify-out/cache/ast/bae2905134b274c819ac7e262771f02012fdd240730c7f78f6694b57b6f35da7.json new file mode 100644 index 000000000..1913a9ab3 --- /dev/null +++ b/backend/graphify-out/cache/ast/bae2905134b274c819ac7e262771f02012fdd240730c7f78f6694b57b6f35da7.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_workflow_py", "label": "workflow.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L1"}, {"id": "bx_workflow_list_workflows", "label": "list_workflows()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L22"}, {"id": "int", "label": "int", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L22"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L22"}, {"id": "bxusercontext", "label": "BxUserContext", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L22"}, {"id": "bx_workflow_get_workflow_by_biz_type", "label": "get_workflow_by_biz_type()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L36"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L36"}, {"id": "bx_workflow_get_workflow", "label": "get_workflow()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L49"}, {"id": "bx_workflow_create_workflow", "label": "create_workflow()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L62"}, {"id": "workflowdefcreate", "label": "WorkflowDefCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L62"}, {"id": "bx_workflow_update_workflow", "label": "update_workflow()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L78"}, {"id": "workflowdefupdate", "label": "WorkflowDefUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L78"}, {"id": "bx_workflow_save_workflow_nodes", "label": "save_workflow_nodes()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L98"}, {"id": "workflownodecreate", "label": "WorkflowNodeCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L98"}, {"id": "bx_workflow_delete_workflow", "label": "delete_workflow()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L120"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_workflow_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L1", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_workflow_py", "target": "fastapi", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_workflow_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_workflow_py", "target": "app_core_bx_auth", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L6", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_workflow_py", "target": "app_core_database", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L7", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_workflow_py", "target": "app_core_tenant_context", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L8", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_workflow_py", "target": "app_schemas_bx_common", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L9", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_workflow_py", "target": "app_schemas_bx_workflow", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L10", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_workflow_py", "target": "app_services_bx_workflow", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L16", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_workflow_py", "target": "bx_workflow_list_workflows", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L22", "weight": 1.0}, {"source": "bx_workflow_list_workflows", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L22", "weight": 1.0}, {"source": "bx_workflow_list_workflows", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L22", "weight": 1.0}, {"source": "bx_workflow_list_workflows", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L22", "weight": 1.0}, {"source": "bx_workflow_list_workflows", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L22", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_workflow_py", "target": "bx_workflow_get_workflow_by_biz_type", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L36", "weight": 1.0}, {"source": "bx_workflow_get_workflow_by_biz_type", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L36", "weight": 1.0}, {"source": "bx_workflow_get_workflow_by_biz_type", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L36", "weight": 1.0}, {"source": "bx_workflow_get_workflow_by_biz_type", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L36", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_workflow_py", "target": "bx_workflow_get_workflow", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L49", "weight": 1.0}, {"source": "bx_workflow_get_workflow", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L49", "weight": 1.0}, {"source": "bx_workflow_get_workflow", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L49", "weight": 1.0}, {"source": "bx_workflow_get_workflow", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L49", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_workflow_py", "target": "bx_workflow_create_workflow", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L62", "weight": 1.0}, {"source": "bx_workflow_create_workflow", "target": "workflowdefcreate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L62", "weight": 1.0}, {"source": "bx_workflow_create_workflow", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L62", "weight": 1.0}, {"source": "bx_workflow_create_workflow", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L62", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_workflow_py", "target": "bx_workflow_update_workflow", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L78", "weight": 1.0}, {"source": "bx_workflow_update_workflow", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L78", "weight": 1.0}, {"source": "bx_workflow_update_workflow", "target": "workflowdefupdate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L78", "weight": 1.0}, {"source": "bx_workflow_update_workflow", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L78", "weight": 1.0}, {"source": "bx_workflow_update_workflow", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L78", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_workflow_py", "target": "bx_workflow_save_workflow_nodes", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L98", "weight": 1.0}, {"source": "bx_workflow_save_workflow_nodes", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L98", "weight": 1.0}, {"source": "bx_workflow_save_workflow_nodes", "target": "workflownodecreate", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L98", "weight": 1.0}, {"source": "bx_workflow_save_workflow_nodes", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L98", "weight": 1.0}, {"source": "bx_workflow_save_workflow_nodes", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L98", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_workflow_py", "target": "bx_workflow_delete_workflow", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L120", "weight": 1.0}, {"source": "bx_workflow_delete_workflow", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L120", "weight": 1.0}, {"source": "bx_workflow_delete_workflow", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L120", "weight": 1.0}, {"source": "bx_workflow_delete_workflow", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L120", "weight": 1.0}], "raw_calls": [{"caller_nid": "bx_workflow_list_workflows", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L28"}, {"caller_nid": "bx_workflow_list_workflows", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L28"}, {"caller_nid": "bx_workflow_list_workflows", "callee": "get_paged", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L29"}, {"caller_nid": "bx_workflow_list_workflows", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L30"}, {"caller_nid": "bx_workflow_list_workflows", "callee": "PagedData", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L31"}, {"caller_nid": "bx_workflow_list_workflows", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L32"}, {"caller_nid": "bx_workflow_get_workflow_by_biz_type", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L41"}, {"caller_nid": "bx_workflow_get_workflow_by_biz_type", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L41"}, {"caller_nid": "bx_workflow_get_workflow_by_biz_type", "callee": "get_by_biz_type", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L42"}, {"caller_nid": "bx_workflow_get_workflow_by_biz_type", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L44"}, {"caller_nid": "bx_workflow_get_workflow_by_biz_type", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L45"}, {"caller_nid": "bx_workflow_get_workflow_by_biz_type", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L45"}, {"caller_nid": "bx_workflow_get_workflow", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L54"}, {"caller_nid": "bx_workflow_get_workflow", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L54"}, {"caller_nid": "bx_workflow_get_workflow", "callee": "get_by_id", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L55"}, {"caller_nid": "bx_workflow_get_workflow", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L57"}, {"caller_nid": "bx_workflow_get_workflow", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L58"}, {"caller_nid": "bx_workflow_get_workflow", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L58"}, {"caller_nid": "bx_workflow_create_workflow", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L67"}, {"caller_nid": "bx_workflow_create_workflow", "callee": "pop", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L68"}, {"caller_nid": "bx_workflow_create_workflow", "callee": "create", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L69"}, {"caller_nid": "bx_workflow_create_workflow", "callee": "save_nodes", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L71"}, {"caller_nid": "bx_workflow_create_workflow", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L72"}, {"caller_nid": "bx_workflow_create_workflow", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L73"}, {"caller_nid": "bx_workflow_create_workflow", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L74"}, {"caller_nid": "bx_workflow_create_workflow", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L74"}, {"caller_nid": "bx_workflow_update_workflow", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L84"}, {"caller_nid": "bx_workflow_update_workflow", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L84"}, {"caller_nid": "bx_workflow_update_workflow", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L85"}, {"caller_nid": "bx_workflow_update_workflow", "callee": "pop", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L86"}, {"caller_nid": "bx_workflow_update_workflow", "callee": "update", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L87"}, {"caller_nid": "bx_workflow_update_workflow", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L89"}, {"caller_nid": "bx_workflow_update_workflow", "callee": "save_nodes", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L91"}, {"caller_nid": "bx_workflow_update_workflow", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L92"}, {"caller_nid": "bx_workflow_update_workflow", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L93"}, {"caller_nid": "bx_workflow_update_workflow", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L94"}, {"caller_nid": "bx_workflow_update_workflow", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L94"}, {"caller_nid": "bx_workflow_save_workflow_nodes", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L104"}, {"caller_nid": "bx_workflow_save_workflow_nodes", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L104"}, {"caller_nid": "bx_workflow_save_workflow_nodes", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L105"}, {"caller_nid": "bx_workflow_save_workflow_nodes", "callee": "save_nodes", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L107"}, {"caller_nid": "bx_workflow_save_workflow_nodes", "callee": "rollback", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L109"}, {"caller_nid": "bx_workflow_save_workflow_nodes", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L110"}, {"caller_nid": "bx_workflow_save_workflow_nodes", "callee": "get_by_id", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L111"}, {"caller_nid": "bx_workflow_save_workflow_nodes", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L113"}, {"caller_nid": "bx_workflow_save_workflow_nodes", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L114"}, {"caller_nid": "bx_workflow_save_workflow_nodes", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L115"}, {"caller_nid": "bx_workflow_save_workflow_nodes", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L116"}, {"caller_nid": "bx_workflow_save_workflow_nodes", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L116"}, {"caller_nid": "bx_workflow_delete_workflow", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L125"}, {"caller_nid": "bx_workflow_delete_workflow", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L125"}, {"caller_nid": "bx_workflow_delete_workflow", "callee": "get_by_id", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L126"}, {"caller_nid": "bx_workflow_delete_workflow", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L128"}, {"caller_nid": "bx_workflow_delete_workflow", "callee": "soft_delete", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L129"}, {"caller_nid": "bx_workflow_delete_workflow", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L130"}, {"caller_nid": "bx_workflow_delete_workflow", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L131"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/c38fd9400bf1c8d181b084347f47bb02e67a6d2ce14a0556284372e4bf044560.json b/backend/graphify-out/cache/ast/c38fd9400bf1c8d181b084347f47bb02e67a6d2ce14a0556284372e4bf044560.json new file mode 100644 index 000000000..f36ac86a7 --- /dev/null +++ b/backend/graphify-out/cache/ast/c38fd9400bf1c8d181b084347f47bb02e67a6d2ce14a0556284372e4bf044560.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_workflow_py", "label": "workflow.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/workflow.py", "source_location": "L1"}, {"id": "bx_workflow_coerce_optional_id", "label": "_coerce_optional_id()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/workflow.py", "source_location": "L7"}, {"id": "bx_workflow_workflownodecreate", "label": "WorkflowNodeCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/workflow.py", "source_location": "L13"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "bx_workflow_workflownodecreate_validate_approver_id", "label": ".validate_approver_id()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/workflow.py", "source_location": "L23"}, {"id": "bx_workflow_workflownodeout", "label": "WorkflowNodeOut", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/workflow.py", "source_location": "L27"}, {"id": "bx_workflow_workflowdefcreate", "label": "WorkflowDefCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/workflow.py", "source_location": "L37"}, {"id": "bx_workflow_workflowdefupdate", "label": "WorkflowDefUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/workflow.py", "source_location": "L46"}, {"id": "bx_workflow_workflowdefout", "label": "WorkflowDefOut", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/workflow.py", "source_location": "L55"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_workflow_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/workflow.py", "source_location": "L1", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_workflow_py", "target": "pydantic", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/workflow.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_workflow_py", "target": "pydantic_alias_generators", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/workflow.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_workflow_py", "target": "bx_workflow_coerce_optional_id", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/workflow.py", "source_location": "L7", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_workflow_py", "target": "bx_workflow_workflownodecreate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/workflow.py", "source_location": "L13", "weight": 1.0}, {"source": "bx_workflow_workflownodecreate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/workflow.py", "source_location": "L13", "weight": 1.0}, {"source": "bx_workflow_workflownodecreate", "target": "bx_workflow_workflownodecreate_validate_approver_id", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/workflow.py", "source_location": "L23", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_workflow_py", "target": "bx_workflow_workflownodeout", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/workflow.py", "source_location": "L27", "weight": 1.0}, {"source": "bx_workflow_workflownodeout", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/workflow.py", "source_location": "L27", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_workflow_py", "target": "bx_workflow_workflowdefcreate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/workflow.py", "source_location": "L37", "weight": 1.0}, {"source": "bx_workflow_workflowdefcreate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/workflow.py", "source_location": "L37", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_workflow_py", "target": "bx_workflow_workflowdefupdate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/workflow.py", "source_location": "L46", "weight": 1.0}, {"source": "bx_workflow_workflowdefupdate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/workflow.py", "source_location": "L46", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_workflow_py", "target": "bx_workflow_workflowdefout", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/workflow.py", "source_location": "L55", "weight": 1.0}, {"source": "bx_workflow_workflowdefout", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/workflow.py", "source_location": "L55", "weight": 1.0}, {"source": "bx_workflow_workflownodecreate_validate_approver_id", "target": "bx_workflow_coerce_optional_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/workflow.py", "source_location": "L24", "weight": 1.0}], "raw_calls": [{"caller_nid": "bx_workflow_coerce_optional_id", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/workflow.py", "source_location": "L10"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/c49d87c90dd0169443162e7d2fc637f739e0c61712ecbeee34a967ae052306a5.json b/backend/graphify-out/cache/ast/c49d87c90dd0169443162e7d2fc637f739e0c61712ecbeee34a967ae052306a5.json new file mode 100644 index 000000000..76fd5003a --- /dev/null +++ b/backend/graphify-out/cache/ast/c49d87c90dd0169443162e7d2fc637f739e0c61712ecbeee34a967ae052306a5.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "label": "reimburse.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L1"}, {"id": "bx_reimburse_reimburseservice", "label": "ReimburseService", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L31"}, {"id": "bx_reimburse_reimburseservice_tenant_no", "label": "._tenant_no()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L33"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L33"}, {"id": "bxusercontext", "label": "BxUserContext", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L33"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L33"}, {"id": "bx_reimburse_reimburseservice_get_by_id", "label": ".get_by_id()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L37"}, {"id": "bxreimburseapply", "label": "BxReimburseApply", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L37"}, {"id": "bx_reimburse_reimburseservice_get_paged", "label": ".get_paged()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L41"}, {"id": "int", "label": "int", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L41"}, {"id": "any", "label": "Any", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L41"}, {"id": "bx_reimburse_reimburseservice_soft_delete", "label": ".soft_delete()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L51"}, {"id": "bool", "label": "bool", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L51"}, {"id": "bx_reimburse_reimburseservice_workflow_nodes", "label": "._workflow_nodes()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L58"}, {"id": "bxworkflownode", "label": "BxWorkflowNode", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L58"}, {"id": "bx_reimburse_reimburseservice_pending_approval", "label": ".pending_approval()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L71"}, {"id": "bx_reimburse_reimburseservice_approved_by_me", "label": ".approved_by_me()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L127"}, {"id": "bx_reimburse_reimburseservice_submit", "label": ".submit()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L175"}, {"id": "bx_reimburse_reimburseservice_approve", "label": ".approve()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L192"}, {"id": "bx_reimburse_reimburseservice_reject", "label": ".reject()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L237"}, {"id": "bx_reimburse_reimburseservice_approval_record_dict", "label": "._approval_record_dict()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L274"}, {"id": "bxreimburseapproval", "label": "BxReimburseApproval", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L274"}, {"id": "bx_reimburse_reimburseservice_latest_approval_per_node", "label": "._latest_approval_per_node()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L287"}, {"id": "bx_reimburse_reimburseservice_query_approvals", "label": "._query_approvals()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L304"}, {"id": "bx_reimburse_reimburseservice_get_approvals", "label": ".get_approvals()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L316"}, {"id": "bx_reimburse_reimburseservice_get_approval_history", "label": ".get_approval_history()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L350"}, {"id": "bx_reimburse_reimburseservice_create_with_details", "label": ".create_with_details()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L367"}, {"id": "bx_reimburse_reimburseservice_update_with_details", "label": ".update_with_details()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L413"}, {"id": "bx_reimburse_reimburseservice_get_details", "label": ".get_details()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L466"}, {"id": "bxreimbursedetail", "label": "BxReimburseDetail", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L466"}, {"id": "bx_reimburse_reimburseservice_out_rows_with_attachment_counts", "label": ".out_rows_with_attachment_counts()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L479"}, {"id": "reimburseapplyout", "label": "ReimburseApplyOut", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L479"}, {"id": "bx_reimburse_reimburseservice_out_one_with_attachment_counts", "label": ".out_one_with_attachment_counts()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L496"}, {"id": "bx_reimburse_reimburseservice_build_apply_out_with_details", "label": ".build_apply_out_with_details()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L502"}, {"id": "bx_reimburse_reimburseservice_global_status_counts", "label": ".global_status_counts()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L511"}, {"id": "bx_reimburse_reimburseservice_my_apply_stats", "label": ".my_apply_stats()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L521"}, {"id": "bx_reimburse_reimburseservice_pending_approval_stats", "label": ".pending_approval_stats()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L583"}, {"id": "bx_reimburse_reimburseservice_pay", "label": ".pay()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L614"}, {"id": "float", "label": "float", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L614"}, {"id": "bx_reimburse_reimburseservice_offset", "label": ".offset()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L637"}, {"id": "bx_reimburse_reimburseservice_batch_offset", "label": ".batch_offset()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L668"}, {"id": "bx_reimburse_reimburseservice_finance_payment_stats", "label": ".finance_payment_stats()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L723"}, {"id": "bx_reimburse_rationale_290", "label": "\u540c\u4e00\u8282\u70b9\u591a\u6b21\u5ba1\u6279\u65f6\uff0c\u53d6 approval_time \u6700\u65b0\u7684\u4e00\u6761\u4f5c\u4e3a\u5f53\u524d\u8282\u70b9\u72b6\u6001\u3002", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L290"}, {"id": "bx_reimburse_rationale_351", "label": "\u8fd4\u56de\u5168\u90e8\u5ba1\u6279\u52a8\u4f5c\uff0c\u6309\u65f6\u95f4\u6b63\u5e8f\u6392\u5217\uff0c\u7528\u4e8e\u5c55\u793a\u5b8c\u6574\u5ba1\u6279\u5386\u53f2\u3002", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L351"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "decimal", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L5", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "sqlalchemy", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L7", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L8", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "app_core_bx_auth", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L10", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "app_core_tenant_context", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L11", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "app_core_utils", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L12", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "app_models_bx_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L13", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "app_schemas_bx_reimburse", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L21", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "app_services_bx_approval_cycle", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L22", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "app_services_bx_attachment", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L23", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "app_services_bx_base", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L24", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "app_utils_bx_codegen", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L25", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "app_utils_bx_date_range", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L26", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "bx_reimburse_reimburseservice", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L31", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_tenant_no", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L33", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_tenant_no", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L33", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_tenant_no", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L33", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_tenant_no", "target": "str", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L33", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_get_by_id", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L37", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_by_id", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L37", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_by_id", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L37", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_by_id", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L37", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_by_id", "target": "bxreimburseapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L37", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_get_paged", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L41", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_paged", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L41", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_paged", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L41", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_paged", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L41", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_paged", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L41", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_paged", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L41", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_paged", "target": "bxreimburseapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L41", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_paged", "target": "int", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L41", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_soft_delete", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L51", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_soft_delete", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L51", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_soft_delete", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L51", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_soft_delete", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L51", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_soft_delete", "target": "bool", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L51", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_workflow_nodes", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L58", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_workflow_nodes", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L58", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_workflow_nodes", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L58", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_workflow_nodes", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L58", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_workflow_nodes", "target": "bxworkflownode", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L58", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_pending_approval", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L71", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pending_approval", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L71", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pending_approval", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L71", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pending_approval", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L71", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pending_approval", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L71", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pending_approval", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L71", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pending_approval", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L71", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pending_approval", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L71", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pending_approval", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L71", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_approved_by_me", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L127", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approved_by_me", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L127", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approved_by_me", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L127", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approved_by_me", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L127", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approved_by_me", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L127", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approved_by_me", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L127", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approved_by_me", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L127", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approved_by_me", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L127", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approved_by_me", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L127", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_submit", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L175", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_submit", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L175", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_submit", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L175", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_submit", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L175", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_submit", "target": "bxreimburseapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L175", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_approve", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L192", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approve", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L192", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approve", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L192", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approve", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L192", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approve", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L192", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approve", "target": "bxreimburseapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L192", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_reject", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L237", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_reject", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L237", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_reject", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L237", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_reject", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L237", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_reject", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L237", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_reject", "target": "bxreimburseapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L237", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_approval_record_dict", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L274", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approval_record_dict", "target": "bxreimburseapproval", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L274", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approval_record_dict", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L274", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approval_record_dict", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L274", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approval_record_dict", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L274", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_latest_approval_per_node", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L287", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_latest_approval_per_node", "target": "bxreimburseapproval", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L287", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_latest_approval_per_node", "target": "int", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L287", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_latest_approval_per_node", "target": "bxreimburseapproval", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L287", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_query_approvals", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L304", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_query_approvals", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L304", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_query_approvals", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L304", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_query_approvals", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L304", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_query_approvals", "target": "bxreimburseapproval", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L304", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_get_approvals", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L316", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approvals", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L316", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approvals", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L316", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approvals", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L316", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approvals", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L316", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approvals", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L316", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_get_approval_history", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L350", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approval_history", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L350", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approval_history", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L350", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approval_history", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L350", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approval_history", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L350", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approval_history", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L350", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_create_with_details", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L367", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_create_with_details", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L367", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_create_with_details", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L367", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_create_with_details", "target": "bxreimburseapply", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L367", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_update_with_details", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L413", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_update_with_details", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L413", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_update_with_details", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L413", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_update_with_details", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L413", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_update_with_details", "target": "bxreimburseapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L413", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_get_details", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L466", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_details", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L466", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_details", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L466", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_details", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L466", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_details", "target": "bxreimbursedetail", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L466", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_out_rows_with_attachment_counts", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L479", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_out_rows_with_attachment_counts", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L479", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_out_rows_with_attachment_counts", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L479", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_out_rows_with_attachment_counts", "target": "bxreimburseapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L479", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_out_rows_with_attachment_counts", "target": "reimburseapplyout", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L479", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_out_one_with_attachment_counts", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L496", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_out_one_with_attachment_counts", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L496", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_out_one_with_attachment_counts", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L496", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_out_one_with_attachment_counts", "target": "bxreimburseapply", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L496", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_out_one_with_attachment_counts", "target": "reimburseapplyout", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L496", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_build_apply_out_with_details", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L502", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_build_apply_out_with_details", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L502", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_build_apply_out_with_details", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L502", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_build_apply_out_with_details", "target": "bxreimburseapply", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L502", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_build_apply_out_with_details", "target": "reimburseapplyout", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L502", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_global_status_counts", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L511", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_global_status_counts", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L511", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_global_status_counts", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L511", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_global_status_counts", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L511", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_global_status_counts", "target": "int", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L511", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_my_apply_stats", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L521", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_my_apply_stats", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L521", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_my_apply_stats", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L521", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_my_apply_stats", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L521", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_pending_approval_stats", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L583", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pending_approval_stats", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L583", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pending_approval_stats", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L583", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pending_approval_stats", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L583", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_pay", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L614", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pay", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L614", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pay", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L614", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pay", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L614", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pay", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L614", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pay", "target": "float", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L614", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pay", "target": "bxreimburseapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L614", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_offset", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L637", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_offset", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L637", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_offset", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L637", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_offset", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L637", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_offset", "target": "float", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L637", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_offset", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L637", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_offset", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L637", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_offset", "target": "bxreimburseapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L637", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_batch_offset", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L668", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_batch_offset", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L668", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_batch_offset", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L668", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_batch_offset", "target": "float", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L668", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_batch_offset", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L668", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_batch_offset", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L668", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_batch_offset", "target": "bxreimburseapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L668", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_finance_payment_stats", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L723", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_finance_payment_stats", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L723", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_finance_payment_stats", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L723", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_soft_delete", "target": "bx_reimburse_reimburseservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L52", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pending_approval", "target": "bx_reimburse_reimburseservice_offset", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L117", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approved_by_me", "target": "bx_reimburse_reimburseservice_offset", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L167", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_submit", "target": "bx_reimburse_reimburseservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L176", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_submit", "target": "bx_reimburse_reimburseservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L177", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_submit", "target": "bx_reimburse_reimburseservice_workflow_nodes", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L185", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approve", "target": "bx_reimburse_reimburseservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L195", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approve", "target": "bx_reimburse_reimburseservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L196", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approve", "target": "bx_reimburse_reimburseservice_workflow_nodes", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L199", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approve", "target": "bxreimburseapproval", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L212", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_reject", "target": "bx_reimburse_reimburseservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L240", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_reject", "target": "bx_reimburse_reimburseservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L241", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_reject", "target": "bx_reimburse_reimburseservice_workflow_nodes", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L244", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_reject", "target": "bxreimburseapproval", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L252", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approvals", "target": "bx_reimburse_reimburseservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L317", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approvals", "target": "bx_reimburse_reimburseservice_workflow_nodes", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L323", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approvals", "target": "bx_reimburse_reimburseservice_query_approvals", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L326", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approvals", "target": "bx_reimburse_reimburseservice_latest_approval_per_node", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L328", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approvals", "target": "bx_reimburse_reimburseservice_approval_record_dict", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L333", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approval_history", "target": "bx_reimburse_reimburseservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L352", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approval_history", "target": "bx_reimburse_reimburseservice_approval_record_dict", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L364", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_create_with_details", "target": "bx_reimburse_reimburseservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L374", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_create_with_details", "target": "bxreimburseapply", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L380", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_create_with_details", "target": "bxreimbursedetail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L397", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_update_with_details", "target": "bx_reimburse_reimburseservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L421", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_update_with_details", "target": "bx_reimburse_reimburseservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L422", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_update_with_details", "target": "bxreimbursedetail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L440", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_out_one_with_attachment_counts", "target": "bx_reimburse_reimburseservice_out_rows_with_attachment_counts", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L499", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_build_apply_out_with_details", "target": "bx_reimburse_reimburseservice_out_one_with_attachment_counts", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L505", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_build_apply_out_with_details", "target": "bx_reimburse_reimburseservice_get_details", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L506", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pay", "target": "bx_reimburse_reimburseservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L621", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pay", "target": "bx_reimburse_reimburseservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L622", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_offset", "target": "bx_reimburse_reimburseservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L645", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_offset", "target": "bx_reimburse_reimburseservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L646", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_batch_offset", "target": "bx_reimburse_reimburseservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L676", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_batch_offset", "target": "bx_reimburse_reimburseservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L677", "weight": 1.0}, {"source": "bx_reimburse_rationale_290", "target": "bx_reimburse_reimburseservice_latest_approval_per_node", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L290", "weight": 1.0}, {"source": "bx_reimburse_rationale_351", "target": "bx_reimburse_reimburseservice_get_approval_history", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L351", "weight": 1.0}], "raw_calls": [{"caller_nid": "bx_reimburse_reimburseservice_tenant_no", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L34"}, {"caller_nid": "bx_reimburse_reimburseservice_tenant_no", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L34"}, {"caller_nid": "bx_reimburse_reimburseservice_workflow_nodes", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L60"}, {"caller_nid": "bx_reimburse_reimburseservice_workflow_nodes", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L60"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "join", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L82"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L82"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "and_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L85"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L101"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L102"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L103"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "parse_create_time_day_bounds", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L108"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "subquery", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L114"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L115"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L115"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L115"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L115"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "limit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L117"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L117"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "join", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L117"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L117"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L119"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "subquery", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L138"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "distinct", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L138"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L138"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "join", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L148"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L148"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L154"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L155"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L156"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "parse_create_time_day_bounds", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L161"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L165"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "limit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L167"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L167"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L167"}, {"caller_nid": "bx_reimburse_reimburseservice_submit", "callee": "generate_apply_code", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L182"}, {"caller_nid": "bx_reimburse_reimburseservice_submit", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L188"}, {"caller_nid": "bx_reimburse_reimburseservice_approve", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L213"}, {"caller_nid": "bx_reimburse_reimburseservice_approve", "callee": "now", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L221"}, {"caller_nid": "bx_reimburse_reimburseservice_approve", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L226"}, {"caller_nid": "bx_reimburse_reimburseservice_approve", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L233"}, {"caller_nid": "bx_reimburse_reimburseservice_reject", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L253"}, {"caller_nid": "bx_reimburse_reimburseservice_reject", "callee": "now", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L261"}, {"caller_nid": "bx_reimburse_reimburseservice_reject", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L266"}, {"caller_nid": "bx_reimburse_reimburseservice_reject", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L270"}, {"caller_nid": "bx_reimburse_reimburseservice_latest_approval_per_node", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L293"}, {"caller_nid": "bx_reimburse_reimburseservice_query_approvals", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L306"}, {"caller_nid": "bx_reimburse_reimburseservice_get_approvals", "callee": "filter_current_cycle_approvals", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L327"}, {"caller_nid": "bx_reimburse_reimburseservice_get_approvals", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L331"}, {"caller_nid": "bx_reimburse_reimburseservice_get_approvals", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L333"}, {"caller_nid": "bx_reimburse_reimburseservice_get_approvals", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L335"}, {"caller_nid": "bx_reimburse_reimburseservice_get_approval_history", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L355"}, {"caller_nid": "bx_reimburse_reimburseservice_get_approval_history", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L355"}, {"caller_nid": "bx_reimburse_reimburseservice_get_approval_history", "callee": "asc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L361"}, {"caller_nid": "bx_reimburse_reimburseservice_get_approval_history", "callee": "asc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L361"}, {"caller_nid": "bx_reimburse_reimburseservice_create_with_details", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L376"}, {"caller_nid": "bx_reimburse_reimburseservice_create_with_details", "callee": "pop", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L377"}, {"caller_nid": "bx_reimburse_reimburseservice_create_with_details", "callee": "generate_title", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L377"}, {"caller_nid": "bx_reimburse_reimburseservice_create_with_details", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L381"}, {"caller_nid": "bx_reimburse_reimburseservice_create_with_details", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L384"}, {"caller_nid": "bx_reimburse_reimburseservice_create_with_details", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L385"}, {"caller_nid": "bx_reimburse_reimburseservice_create_with_details", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L393"}, {"caller_nid": "bx_reimburse_reimburseservice_create_with_details", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L394"}, {"caller_nid": "bx_reimburse_reimburseservice_create_with_details", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L398"}, {"caller_nid": "bx_reimburse_reimburseservice_create_with_details", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L403"}, {"caller_nid": "bx_reimburse_reimburseservice_create_with_details", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L408"}, {"caller_nid": "bx_reimburse_reimburseservice_create_with_details", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L409"}, {"caller_nid": "bx_reimburse_reimburseservice_update_with_details", "callee": "items", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L426"}, {"caller_nid": "bx_reimburse_reimburseservice_update_with_details", "callee": "update", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L430"}, {"caller_nid": "bx_reimburse_reimburseservice_update_with_details", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L430"}, {"caller_nid": "bx_reimburse_reimburseservice_update_with_details", "callee": "Decimal", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L436"}, {"caller_nid": "bx_reimburse_reimburseservice_update_with_details", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L441"}, {"caller_nid": "bx_reimburse_reimburseservice_update_with_details", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L446"}, {"caller_nid": "bx_reimburse_reimburseservice_update_with_details", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L451"}, {"caller_nid": "bx_reimburse_reimburseservice_update_with_details", "callee": "Decimal", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L452"}, {"caller_nid": "bx_reimburse_reimburseservice_update_with_details", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L462"}, {"caller_nid": "bx_reimburse_reimburseservice_get_details", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L468"}, {"caller_nid": "bx_reimburse_reimburseservice_get_details", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L468"}, {"caller_nid": "bx_reimburse_reimburseservice_out_rows_with_attachment_counts", "callee": "count_invoice_attach_by_biz_ids", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L485"}, {"caller_nid": "bx_reimburse_reimburseservice_out_rows_with_attachment_counts", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L490"}, {"caller_nid": "bx_reimburse_reimburseservice_out_rows_with_attachment_counts", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L491"}, {"caller_nid": "bx_reimburse_reimburseservice_out_rows_with_attachment_counts", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L492"}, {"caller_nid": "bx_reimburse_reimburseservice_out_rows_with_attachment_counts", "callee": "model_copy", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L492"}, {"caller_nid": "bx_reimburse_reimburseservice_build_apply_out_with_details", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L507"}, {"caller_nid": "bx_reimburse_reimburseservice_global_status_counts", "callee": "group_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L513"}, {"caller_nid": "bx_reimburse_reimburseservice_global_status_counts", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L513"}, {"caller_nid": "bx_reimburse_reimburseservice_global_status_counts", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L513"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "and_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L522"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L525"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L530"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L530"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L530"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L530"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L532"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L532"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L532"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L532"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L539"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L539"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L539"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L539"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "in_", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L541"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L546"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L546"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L546"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L546"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L553"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L553"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L553"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "in_", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L554"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "current_month_bounds", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L558"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L560"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L560"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L560"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L566"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L566"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L566"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L566"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval_stats", "callee": "subquery", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L584"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval_stats", "callee": "join", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L585"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L585"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval_stats", "callee": "and_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L588"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L602"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L602"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L602"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L602"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval_stats", "callee": "current_month_bounds", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L603"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L605"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval_stats", "callee": "join", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L605"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L605"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval_stats", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L605"}, {"caller_nid": "bx_reimburse_reimburseservice_pay", "callee": "now", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L628"}, {"caller_nid": "bx_reimburse_reimburseservice_pay", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L633"}, {"caller_nid": "bx_reimburse_reimburseservice_offset", "callee": "BxReimburseOffset", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L653"}, {"caller_nid": "bx_reimburse_reimburseservice_offset", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L654"}, {"caller_nid": "bx_reimburse_reimburseservice_offset", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L663"}, {"caller_nid": "bx_reimburse_reimburseservice_offset", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L664"}, {"caller_nid": "bx_reimburse_reimburseservice_batch_offset", "callee": "BxReimburseOffset", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L691"}, {"caller_nid": "bx_reimburse_reimburseservice_batch_offset", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L692"}, {"caller_nid": "bx_reimburse_reimburseservice_batch_offset", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L701"}, {"caller_nid": "bx_reimburse_reimburseservice_batch_offset", "callee": "now", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L709"}, {"caller_nid": "bx_reimburse_reimburseservice_batch_offset", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L719"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "and_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L724"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L726"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L726"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L726"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L726"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "isnot", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L732"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L734"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L734"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L734"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L734"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L736"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "and_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L738"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "is_", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L740"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L741"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L745"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L745"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L745"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L745"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "current_month_bounds", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L747"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L749"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L749"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L749"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L755"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L755"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L755"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/c9d8d20d9af9ccc1c30f6d7116e7666b53817693f4ab25c01ea451dc46a7f12a.json b/backend/graphify-out/cache/ast/c9d8d20d9af9ccc1c30f6d7116e7666b53817693f4ab25c01ea451dc46a7f12a.json new file mode 100644 index 000000000..7223beea1 --- /dev/null +++ b/backend/graphify-out/cache/ast/c9d8d20d9af9ccc1c30f6d7116e7666b53817693f4ab25c01ea451dc46a7f12a.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_utils_bx_codegen_py", "label": "bx_codegen.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L1"}, {"id": "utils_bx_codegen_generate_apply_code", "label": "generate_apply_code()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L8"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L8"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L8"}, {"id": "utils_bx_codegen_generate_title", "label": "generate_title()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L33"}, {"id": "utils_bx_codegen_rationale_1", "label": "\u62a5\u9500\u5355\u53f7/\u6807\u9898\u751f\u6210\uff08\u4ece bx-backend \u8fc1\u79fb\uff0c\u589e\u52a0 tenant_no \u9694\u79bb\uff09\u3002", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L1"}, {"id": "utils_bx_codegen_rationale_9", "label": "\u751f\u6210\u987a\u5e8f\u5355\u53f7\uff1a{prefix}{YYYYMMDD}{3\u4f4d\u5e8f\u53f7}\u3002 prefix \u793a\u4f8b\uff1aBYJ\uff08\u5907\u7528\u91d1\uff09\u3001BX\uff08\u62a5\u9500\uff09\u3002", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L9"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_utils_bx_codegen_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L2", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_utils_bx_codegen_py", "target": "sqlalchemy", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_utils_bx_codegen_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L5", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_utils_bx_codegen_py", "target": "utils_bx_codegen_generate_apply_code", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L8", "weight": 1.0}, {"source": "utils_bx_codegen_generate_apply_code", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L8", "weight": 1.0}, {"source": "utils_bx_codegen_generate_apply_code", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L8", "weight": 1.0}, {"source": "utils_bx_codegen_generate_apply_code", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L8", "weight": 1.0}, {"source": "utils_bx_codegen_generate_apply_code", "target": "str", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L8", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_utils_bx_codegen_py", "target": "utils_bx_codegen_generate_title", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L33", "weight": 1.0}, {"source": "utils_bx_codegen_generate_title", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L33", "weight": 1.0}, {"source": "utils_bx_codegen_generate_title", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L33", "weight": 1.0}, {"source": "utils_bx_codegen_generate_title", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L33", "weight": 1.0}, {"source": "utils_bx_codegen_generate_title", "target": "str", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L33", "weight": 1.0}, {"source": "utils_bx_codegen_rationale_1", "target": "users_zlwu_work_00code_shanxia2_0_backend_app_utils_bx_codegen_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L1", "weight": 1.0}, {"source": "utils_bx_codegen_rationale_9", "target": "utils_bx_codegen_generate_apply_code", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L9", "weight": 1.0}], "raw_calls": [{"caller_nid": "utils_bx_codegen_generate_apply_code", "callee": "strftime", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L13"}, {"caller_nid": "utils_bx_codegen_generate_apply_code", "callee": "now", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L13"}, {"caller_nid": "utils_bx_codegen_generate_apply_code", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L16"}, {"caller_nid": "utils_bx_codegen_generate_apply_code", "callee": "execute", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L16"}, {"caller_nid": "utils_bx_codegen_generate_apply_code", "callee": "text", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L17"}, {"caller_nid": "utils_bx_codegen_generate_title", "callee": "strftime", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L34"}, {"caller_nid": "utils_bx_codegen_generate_title", "callee": "now", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L34"}, {"caller_nid": "utils_bx_codegen_generate_title", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L37"}, {"caller_nid": "utils_bx_codegen_generate_title", "callee": "execute", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L37"}, {"caller_nid": "utils_bx_codegen_generate_title", "callee": "text", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L38"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/d6aa4d137ee5f96962ddc7c35a719aa658338f13ccbd378d35758fa73d76de70.json b/backend/graphify-out/cache/ast/d6aa4d137ee5f96962ddc7c35a719aa658338f13ccbd378d35758fa73d76de70.json new file mode 100644 index 000000000..48c81ee76 --- /dev/null +++ b/backend/graphify-out/cache/ast/d6aa4d137ee5f96962ddc7c35a719aa658338f13ccbd378d35758fa73d76de70.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_reimburse_py", "label": "reimburse.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L1"}, {"id": "bx_reimburse_coerce_id", "label": "_coerce_id()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L9"}, {"id": "bx_reimburse_reimbursedetailcreate", "label": "ReimburseDetailCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L15"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "bx_reimburse_reimbursedetailcreate_validate_expense_item_id", "label": ".validate_expense_item_id()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L24"}, {"id": "bx_reimburse_reimbursedetailout", "label": "ReimburseDetailOut", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L31"}, {"id": "bx_reimburse_reimburseapplycreate", "label": "ReimburseApplyCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L41"}, {"id": "bx_reimburse_reimburseapplycreate_details_must_not_be_empty", "label": ".details_must_not_be_empty()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L50"}, {"id": "bx_reimburse_reimburseapplyupdate", "label": "ReimburseApplyUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L56"}, {"id": "bx_reimburse_reimburseapplyout", "label": "ReimburseApplyOut", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L63"}, {"id": "bx_reimburse_reimburseapprovalcreate", "label": "ReimburseApprovalCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L89"}, {"id": "bx_reimburse_reimburseapprovalout", "label": "ReimburseApprovalOut", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L96"}, {"id": "bx_reimburse_reimbursemystatsout", "label": "ReimburseMyStatsOut", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L109"}, {"id": "bx_reimburse_reimburseapproverpendingstatsout", "label": "ReimburseApproverPendingStatsOut", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L121"}, {"id": "bx_reimburse_payrequest", "label": "PayRequest", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L128"}, {"id": "bx_reimburse_offsetrequest", "label": "OffsetRequest", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L135"}, {"id": "bx_reimburse_offsetrequest_validate_advance_id", "label": ".validate_advance_id()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L144"}, {"id": "bx_reimburse_offsetitem", "label": "OffsetItem", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L151"}, {"id": "bx_reimburse_offsetitem_validate_advance_id", "label": ".validate_advance_id()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L159"}, {"id": "bx_reimburse_batchoffsetrequest", "label": "BatchOffsetRequest", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L166"}, {"id": "bx_reimburse_reimburseoffsetrecordout", "label": "ReimburseOffsetRecordOut", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L174"}, {"id": "bx_reimburse_paymentfinancestatsout", "label": "PaymentFinanceStatsOut", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L187"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_reimburse_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L1", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_reimburse_py", "target": "pydantic", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_reimburse_py", "target": "pydantic_alias_generators", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_reimburse_py", "target": "app_schemas_bx_common", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L6", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_reimburse_py", "target": "bx_reimburse_coerce_id", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L9", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_reimburse_py", "target": "bx_reimburse_reimbursedetailcreate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L15", "weight": 1.0}, {"source": "bx_reimburse_reimbursedetailcreate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L15", "weight": 1.0}, {"source": "bx_reimburse_reimbursedetailcreate", "target": "bx_reimburse_reimbursedetailcreate_validate_expense_item_id", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L24", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_reimburse_py", "target": "bx_reimburse_reimbursedetailout", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L31", "weight": 1.0}, {"source": "bx_reimburse_reimbursedetailout", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L31", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_reimburse_py", "target": "bx_reimburse_reimburseapplycreate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L41", "weight": 1.0}, {"source": "bx_reimburse_reimburseapplycreate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L41", "weight": 1.0}, {"source": "bx_reimburse_reimburseapplycreate", "target": "bx_reimburse_reimburseapplycreate_details_must_not_be_empty", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L50", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_reimburse_py", "target": "bx_reimburse_reimburseapplyupdate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L56", "weight": 1.0}, {"source": "bx_reimburse_reimburseapplyupdate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L56", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_reimburse_py", "target": "bx_reimburse_reimburseapplyout", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L63", "weight": 1.0}, {"source": "bx_reimburse_reimburseapplyout", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L63", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_reimburse_py", "target": "bx_reimburse_reimburseapprovalcreate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L89", "weight": 1.0}, {"source": "bx_reimburse_reimburseapprovalcreate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L89", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_reimburse_py", "target": "bx_reimburse_reimburseapprovalout", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L96", "weight": 1.0}, {"source": "bx_reimburse_reimburseapprovalout", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L96", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_reimburse_py", "target": "bx_reimburse_reimbursemystatsout", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L109", "weight": 1.0}, {"source": "bx_reimburse_reimbursemystatsout", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L109", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_reimburse_py", "target": "bx_reimburse_reimburseapproverpendingstatsout", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L121", "weight": 1.0}, {"source": "bx_reimburse_reimburseapproverpendingstatsout", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L121", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_reimburse_py", "target": "bx_reimburse_payrequest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L128", "weight": 1.0}, {"source": "bx_reimburse_payrequest", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L128", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_reimburse_py", "target": "bx_reimburse_offsetrequest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L135", "weight": 1.0}, {"source": "bx_reimburse_offsetrequest", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L135", "weight": 1.0}, {"source": "bx_reimburse_offsetrequest", "target": "bx_reimburse_offsetrequest_validate_advance_id", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L144", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_reimburse_py", "target": "bx_reimburse_offsetitem", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L151", "weight": 1.0}, {"source": "bx_reimburse_offsetitem", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L151", "weight": 1.0}, {"source": "bx_reimburse_offsetitem", "target": "bx_reimburse_offsetitem_validate_advance_id", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L159", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_reimburse_py", "target": "bx_reimburse_batchoffsetrequest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L166", "weight": 1.0}, {"source": "bx_reimburse_batchoffsetrequest", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L166", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_reimburse_py", "target": "bx_reimburse_reimburseoffsetrecordout", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L174", "weight": 1.0}, {"source": "bx_reimburse_reimburseoffsetrecordout", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L174", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_reimburse_py", "target": "bx_reimburse_paymentfinancestatsout", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L187", "weight": 1.0}, {"source": "bx_reimburse_paymentfinancestatsout", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L187", "weight": 1.0}, {"source": "bx_reimburse_reimbursedetailcreate_validate_expense_item_id", "target": "bx_reimburse_coerce_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L25", "weight": 1.0}, {"source": "bx_reimburse_offsetrequest_validate_advance_id", "target": "bx_reimburse_coerce_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L145", "weight": 1.0}, {"source": "bx_reimburse_offsetitem_validate_advance_id", "target": "bx_reimburse_coerce_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L160", "weight": 1.0}], "raw_calls": [{"caller_nid": "bx_reimburse_coerce_id", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L12"}, {"caller_nid": "bx_reimburse_reimbursedetailcreate_validate_expense_item_id", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L27"}, {"caller_nid": "bx_reimburse_reimburseapplycreate_details_must_not_be_empty", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L52"}, {"caller_nid": "bx_reimburse_offsetrequest_validate_advance_id", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L147"}, {"caller_nid": "bx_reimburse_offsetitem_validate_advance_id", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L162"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/db3a00f89c6343929dbbd1cf5891821fea7670d9630a83ef826da3b7abddc596.json b/backend/graphify-out/cache/ast/db3a00f89c6343929dbbd1cf5891821fea7670d9630a83ef826da3b7abddc596.json new file mode 100644 index 000000000..7329549a4 --- /dev/null +++ b/backend/graphify-out/cache/ast/db3a00f89c6343929dbbd1cf5891821fea7670d9630a83ef826da3b7abddc596.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "label": "reimburse.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L1"}, {"id": "bx_reimburse_tenant", "label": "_tenant()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L29"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L29"}, {"id": "bxusercontext", "label": "BxUserContext", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L29"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L29"}, {"id": "bx_reimburse_build_details_data", "label": "_build_details_data()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L33"}, {"id": "bx_reimburse_get_generated_title", "label": "get_generated_title()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L54"}, {"id": "bx_reimburse_list_reimburses", "label": "list_reimburses()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L64"}, {"id": "int", "label": "int", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L64"}, {"id": "bx_reimburse_my_reimburses", "label": "my_reimburses()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L101"}, {"id": "bx_reimburse_my_reimburse_stats", "label": "my_reimburse_stats()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L137"}, {"id": "bx_reimburse_reimburse_status_counts", "label": "reimburse_status_counts()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L147"}, {"id": "bx_reimburse_pending_approval", "label": "pending_approval()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L156"}, {"id": "bx_reimburse_pending_approval_stats", "label": "pending_approval_stats()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L182"}, {"id": "bx_reimburse_approved_by_me", "label": "approved_by_me()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L192"}, {"id": "bx_reimburse_get_reimburse", "label": "get_reimburse()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L218"}, {"id": "bx_reimburse_get_approvals", "label": "get_approvals()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L232"}, {"id": "bx_reimburse_get_approval_history", "label": "get_approval_history()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L245"}, {"id": "bx_reimburse_create_reimburse", "label": "create_reimburse()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L258"}, {"id": "reimburseapplycreate", "label": "ReimburseApplyCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L258"}, {"id": "bx_reimburse_update_reimburse", "label": "update_reimburse()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L291"}, {"id": "reimburseapplyupdate", "label": "ReimburseApplyUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L291"}, {"id": "bx_reimburse_submit_reimburse", "label": "submit_reimburse()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L316"}, {"id": "bx_reimburse_approve_reimburse", "label": "approve_reimburse()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L331"}, {"id": "reimburseapprovalcreate", "label": "ReimburseApprovalCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L331"}, {"id": "bx_reimburse_reject_reimburse", "label": "reject_reimburse()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L347"}, {"id": "bx_reimburse_delete_reimburse", "label": "delete_reimburse()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L363"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L1", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "fastapi", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "sqlalchemy", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L5", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "app_core_bx_auth", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L7", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "app_core_database", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L8", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "app_core_tenant_context", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L9", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "app_models_bx_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L10", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "app_schemas_bx_common", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L11", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "app_schemas_bx_reimburse", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L12", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "app_services_bx_expense_item", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L21", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "app_services_bx_reimburse", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L22", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "app_utils_bx_codegen", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L23", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "app_utils_bx_date_range", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L24", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "bx_reimburse_tenant", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L29", "weight": 1.0}, {"source": "bx_reimburse_tenant", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L29", "weight": 1.0}, {"source": "bx_reimburse_tenant", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L29", "weight": 1.0}, {"source": "bx_reimburse_tenant", "target": "str", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L29", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "bx_reimburse_build_details_data", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L33", "weight": 1.0}, {"source": "bx_reimburse_build_details_data", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L33", "weight": 1.0}, {"source": "bx_reimburse_build_details_data", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L33", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "bx_reimburse_get_generated_title", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L54", "weight": 1.0}, {"source": "bx_reimburse_get_generated_title", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L54", "weight": 1.0}, {"source": "bx_reimburse_get_generated_title", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L54", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "bx_reimburse_list_reimburses", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L64", "weight": 1.0}, {"source": "bx_reimburse_list_reimburses", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L64", "weight": 1.0}, {"source": "bx_reimburse_list_reimburses", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L64", "weight": 1.0}, {"source": "bx_reimburse_list_reimburses", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L64", "weight": 1.0}, {"source": "bx_reimburse_list_reimburses", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L64", "weight": 1.0}, {"source": "bx_reimburse_list_reimburses", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L64", "weight": 1.0}, {"source": "bx_reimburse_list_reimburses", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L64", "weight": 1.0}, {"source": "bx_reimburse_list_reimburses", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L64", "weight": 1.0}, {"source": "bx_reimburse_list_reimburses", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L64", "weight": 1.0}, {"source": "bx_reimburse_list_reimburses", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L64", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "bx_reimburse_my_reimburses", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L101", "weight": 1.0}, {"source": "bx_reimburse_my_reimburses", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L101", "weight": 1.0}, {"source": "bx_reimburse_my_reimburses", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L101", "weight": 1.0}, {"source": "bx_reimburse_my_reimburses", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L101", "weight": 1.0}, {"source": "bx_reimburse_my_reimburses", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L101", "weight": 1.0}, {"source": "bx_reimburse_my_reimburses", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L101", "weight": 1.0}, {"source": "bx_reimburse_my_reimburses", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L101", "weight": 1.0}, {"source": "bx_reimburse_my_reimburses", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L101", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "bx_reimburse_my_reimburse_stats", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L137", "weight": 1.0}, {"source": "bx_reimburse_my_reimburse_stats", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L137", "weight": 1.0}, {"source": "bx_reimburse_my_reimburse_stats", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L137", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "bx_reimburse_reimburse_status_counts", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L147", "weight": 1.0}, {"source": "bx_reimburse_reimburse_status_counts", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L147", "weight": 1.0}, {"source": "bx_reimburse_reimburse_status_counts", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L147", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "bx_reimburse_pending_approval", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L156", "weight": 1.0}, {"source": "bx_reimburse_pending_approval", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L156", "weight": 1.0}, {"source": "bx_reimburse_pending_approval", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L156", "weight": 1.0}, {"source": "bx_reimburse_pending_approval", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L156", "weight": 1.0}, {"source": "bx_reimburse_pending_approval", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L156", "weight": 1.0}, {"source": "bx_reimburse_pending_approval", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L156", "weight": 1.0}, {"source": "bx_reimburse_pending_approval", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L156", "weight": 1.0}, {"source": "bx_reimburse_pending_approval", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L156", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "bx_reimburse_pending_approval_stats", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L182", "weight": 1.0}, {"source": "bx_reimburse_pending_approval_stats", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L182", "weight": 1.0}, {"source": "bx_reimburse_pending_approval_stats", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L182", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "bx_reimburse_approved_by_me", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L192", "weight": 1.0}, {"source": "bx_reimburse_approved_by_me", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L192", "weight": 1.0}, {"source": "bx_reimburse_approved_by_me", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L192", "weight": 1.0}, {"source": "bx_reimburse_approved_by_me", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L192", "weight": 1.0}, {"source": "bx_reimburse_approved_by_me", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L192", "weight": 1.0}, {"source": "bx_reimburse_approved_by_me", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L192", "weight": 1.0}, {"source": "bx_reimburse_approved_by_me", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L192", "weight": 1.0}, {"source": "bx_reimburse_approved_by_me", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L192", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "bx_reimburse_get_reimburse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L218", "weight": 1.0}, {"source": "bx_reimburse_get_reimburse", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L218", "weight": 1.0}, {"source": "bx_reimburse_get_reimburse", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L218", "weight": 1.0}, {"source": "bx_reimburse_get_reimburse", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L218", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "bx_reimburse_get_approvals", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L232", "weight": 1.0}, {"source": "bx_reimburse_get_approvals", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L232", "weight": 1.0}, {"source": "bx_reimburse_get_approvals", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L232", "weight": 1.0}, {"source": "bx_reimburse_get_approvals", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L232", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "bx_reimburse_get_approval_history", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L245", "weight": 1.0}, {"source": "bx_reimburse_get_approval_history", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L245", "weight": 1.0}, {"source": "bx_reimburse_get_approval_history", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L245", "weight": 1.0}, {"source": "bx_reimburse_get_approval_history", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L245", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "bx_reimburse_create_reimburse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L258", "weight": 1.0}, {"source": "bx_reimburse_create_reimburse", "target": "reimburseapplycreate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L258", "weight": 1.0}, {"source": "bx_reimburse_create_reimburse", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L258", "weight": 1.0}, {"source": "bx_reimburse_create_reimburse", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L258", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "bx_reimburse_update_reimburse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L291", "weight": 1.0}, {"source": "bx_reimburse_update_reimburse", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L291", "weight": 1.0}, {"source": "bx_reimburse_update_reimburse", "target": "reimburseapplyupdate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L291", "weight": 1.0}, {"source": "bx_reimburse_update_reimburse", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L291", "weight": 1.0}, {"source": "bx_reimburse_update_reimburse", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L291", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "bx_reimburse_submit_reimburse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L316", "weight": 1.0}, {"source": "bx_reimburse_submit_reimburse", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L316", "weight": 1.0}, {"source": "bx_reimburse_submit_reimburse", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L316", "weight": 1.0}, {"source": "bx_reimburse_submit_reimburse", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L316", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "bx_reimburse_approve_reimburse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L331", "weight": 1.0}, {"source": "bx_reimburse_approve_reimburse", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L331", "weight": 1.0}, {"source": "bx_reimburse_approve_reimburse", "target": "reimburseapprovalcreate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L331", "weight": 1.0}, {"source": "bx_reimburse_approve_reimburse", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L331", "weight": 1.0}, {"source": "bx_reimburse_approve_reimburse", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L331", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "bx_reimburse_reject_reimburse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L347", "weight": 1.0}, {"source": "bx_reimburse_reject_reimburse", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L347", "weight": 1.0}, {"source": "bx_reimburse_reject_reimburse", "target": "reimburseapprovalcreate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L347", "weight": 1.0}, {"source": "bx_reimburse_reject_reimburse", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L347", "weight": 1.0}, {"source": "bx_reimburse_reject_reimburse", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L347", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "bx_reimburse_delete_reimburse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L363", "weight": 1.0}, {"source": "bx_reimburse_delete_reimburse", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L363", "weight": 1.0}, {"source": "bx_reimburse_delete_reimburse", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L363", "weight": 1.0}, {"source": "bx_reimburse_delete_reimburse", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L363", "weight": 1.0}, {"source": "bx_reimburse_get_generated_title", "target": "bx_reimburse_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L58", "weight": 1.0}, {"source": "bx_reimburse_list_reimburses", "target": "bx_reimburse_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L75", "weight": 1.0}, {"source": "bx_reimburse_my_reimburses", "target": "bx_reimburse_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L110", "weight": 1.0}, {"source": "bx_reimburse_my_reimburse_stats", "target": "bx_reimburse_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L141", "weight": 1.0}, {"source": "bx_reimburse_reimburse_status_counts", "target": "bx_reimburse_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L151", "weight": 1.0}, {"source": "bx_reimburse_pending_approval", "target": "bx_reimburse_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L165", "weight": 1.0}, {"source": "bx_reimburse_pending_approval_stats", "target": "bx_reimburse_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L186", "weight": 1.0}, {"source": "bx_reimburse_approved_by_me", "target": "bx_reimburse_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L201", "weight": 1.0}, {"source": "bx_reimburse_get_reimburse", "target": "bx_reimburse_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L223", "weight": 1.0}, {"source": "bx_reimburse_get_approvals", "target": "bx_reimburse_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L237", "weight": 1.0}, {"source": "bx_reimburse_get_approval_history", "target": "bx_reimburse_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L250", "weight": 1.0}, {"source": "bx_reimburse_create_reimburse", "target": "bx_reimburse_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L263", "weight": 1.0}, {"source": "bx_reimburse_create_reimburse", "target": "bx_reimburse_build_details_data", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L264", "weight": 1.0}, {"source": "bx_reimburse_update_reimburse", "target": "bx_reimburse_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L297", "weight": 1.0}, {"source": "bx_reimburse_update_reimburse", "target": "bx_reimburse_build_details_data", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L300", "weight": 1.0}, {"source": "bx_reimburse_submit_reimburse", "target": "bx_reimburse_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L321", "weight": 1.0}, {"source": "bx_reimburse_approve_reimburse", "target": "bx_reimburse_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L337", "weight": 1.0}, {"source": "bx_reimburse_reject_reimburse", "target": "bx_reimburse_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L353", "weight": 1.0}, {"source": "bx_reimburse_delete_reimburse", "target": "bx_reimburse_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L368", "weight": 1.0}], "raw_calls": [{"caller_nid": "bx_reimburse_tenant", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L30"}, {"caller_nid": "bx_reimburse_tenant", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L30"}, {"caller_nid": "bx_reimburse_build_details_data", "callee": "get_by_id", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L36"}, {"caller_nid": "bx_reimburse_build_details_data", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L38"}, {"caller_nid": "bx_reimburse_build_details_data", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L42"}, {"caller_nid": "bx_reimburse_get_generated_title", "callee": "generate_title", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L59"}, {"caller_nid": "bx_reimburse_get_generated_title", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L60"}, {"caller_nid": "bx_reimburse_list_reimburses", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L78"}, {"caller_nid": "bx_reimburse_list_reimburses", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L80"}, {"caller_nid": "bx_reimburse_list_reimburses", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L81"}, {"caller_nid": "bx_reimburse_list_reimburses", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L82"}, {"caller_nid": "bx_reimburse_list_reimburses", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L83"}, {"caller_nid": "bx_reimburse_list_reimburses", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L87"}, {"caller_nid": "bx_reimburse_list_reimburses", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L87"}, {"caller_nid": "bx_reimburse_list_reimburses", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L89"}, {"caller_nid": "bx_reimburse_list_reimburses", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L89"}, {"caller_nid": "bx_reimburse_list_reimburses", "callee": "parse_create_time_day_bounds", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L90"}, {"caller_nid": "bx_reimburse_list_reimburses", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L93"}, {"caller_nid": "bx_reimburse_list_reimburses", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L94"}, {"caller_nid": "bx_reimburse_list_reimburses", "callee": "get_paged", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L95"}, {"caller_nid": "bx_reimburse_list_reimburses", "callee": "out_rows_with_attachment_counts", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L96"}, {"caller_nid": "bx_reimburse_list_reimburses", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L97"}, {"caller_nid": "bx_reimburse_list_reimburses", "callee": "PagedData", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L97"}, {"caller_nid": "bx_reimburse_my_reimburses", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L112"}, {"caller_nid": "bx_reimburse_my_reimburses", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L118"}, {"caller_nid": "bx_reimburse_my_reimburses", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L120"}, {"caller_nid": "bx_reimburse_my_reimburses", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L121"}, {"caller_nid": "bx_reimburse_my_reimburses", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L122"}, {"caller_nid": "bx_reimburse_my_reimburses", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L123"}, {"caller_nid": "bx_reimburse_my_reimburses", "callee": "parse_create_time_day_bounds", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L126"}, {"caller_nid": "bx_reimburse_my_reimburses", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L129"}, {"caller_nid": "bx_reimburse_my_reimburses", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L130"}, {"caller_nid": "bx_reimburse_my_reimburses", "callee": "get_paged", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L131"}, {"caller_nid": "bx_reimburse_my_reimburses", "callee": "out_rows_with_attachment_counts", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L132"}, {"caller_nid": "bx_reimburse_my_reimburses", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L133"}, {"caller_nid": "bx_reimburse_my_reimburses", "callee": "PagedData", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L133"}, {"caller_nid": "bx_reimburse_my_reimburse_stats", "callee": "my_apply_stats", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L142"}, {"caller_nid": "bx_reimburse_my_reimburse_stats", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L143"}, {"caller_nid": "bx_reimburse_my_reimburse_stats", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L143"}, {"caller_nid": "bx_reimburse_reimburse_status_counts", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L152"}, {"caller_nid": "bx_reimburse_reimburse_status_counts", "callee": "global_status_counts", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L152"}, {"caller_nid": "bx_reimburse_pending_approval", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L166"}, {"caller_nid": "bx_reimburse_pending_approval", "callee": "out_rows_with_attachment_counts", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L177"}, {"caller_nid": "bx_reimburse_pending_approval", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L178"}, {"caller_nid": "bx_reimburse_pending_approval", "callee": "PagedData", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L178"}, {"caller_nid": "bx_reimburse_pending_approval_stats", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L188"}, {"caller_nid": "bx_reimburse_pending_approval_stats", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L188"}, {"caller_nid": "bx_reimburse_approved_by_me", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L202"}, {"caller_nid": "bx_reimburse_approved_by_me", "callee": "out_rows_with_attachment_counts", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L213"}, {"caller_nid": "bx_reimburse_approved_by_me", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L214"}, {"caller_nid": "bx_reimburse_approved_by_me", "callee": "PagedData", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L214"}, {"caller_nid": "bx_reimburse_get_reimburse", "callee": "get_by_id", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L224"}, {"caller_nid": "bx_reimburse_get_reimburse", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L226"}, {"caller_nid": "bx_reimburse_get_reimburse", "callee": "build_apply_out_with_details", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L227"}, {"caller_nid": "bx_reimburse_get_reimburse", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L228"}, {"caller_nid": "bx_reimburse_get_approvals", "callee": "get_by_id", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L238"}, {"caller_nid": "bx_reimburse_get_approvals", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L239"}, {"caller_nid": "bx_reimburse_get_approvals", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L241"}, {"caller_nid": "bx_reimburse_get_approvals", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L241"}, {"caller_nid": "bx_reimburse_get_approval_history", "callee": "get_by_id", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L251"}, {"caller_nid": "bx_reimburse_get_approval_history", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L252"}, {"caller_nid": "bx_reimburse_get_approval_history", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L254"}, {"caller_nid": "bx_reimburse_get_approval_history", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L254"}, {"caller_nid": "bx_reimburse_create_reimburse", "callee": "generate_apply_code", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L266"}, {"caller_nid": "bx_reimburse_create_reimburse", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L273"}, {"caller_nid": "bx_reimburse_create_reimburse", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L273"}, {"caller_nid": "bx_reimburse_create_reimburse", "callee": "create_with_details", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L283"}, {"caller_nid": "bx_reimburse_create_reimburse", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L284"}, {"caller_nid": "bx_reimburse_create_reimburse", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L285"}, {"caller_nid": "bx_reimburse_create_reimburse", "callee": "build_apply_out_with_details", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L286"}, {"caller_nid": "bx_reimburse_create_reimburse", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L287"}, {"caller_nid": "bx_reimburse_update_reimburse", "callee": "update_with_details", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L304"}, {"caller_nid": "bx_reimburse_update_reimburse", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L308"}, {"caller_nid": "bx_reimburse_update_reimburse", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L309"}, {"caller_nid": "bx_reimburse_update_reimburse", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L310"}, {"caller_nid": "bx_reimburse_update_reimburse", "callee": "build_apply_out_with_details", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L311"}, {"caller_nid": "bx_reimburse_update_reimburse", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L312"}, {"caller_nid": "bx_reimburse_submit_reimburse", "callee": "submit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L322"}, {"caller_nid": "bx_reimburse_submit_reimburse", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L324"}, {"caller_nid": "bx_reimburse_submit_reimburse", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L325"}, {"caller_nid": "bx_reimburse_submit_reimburse", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L326"}, {"caller_nid": "bx_reimburse_submit_reimburse", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L327"}, {"caller_nid": "bx_reimburse_submit_reimburse", "callee": "out_one_with_attachment_counts", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L327"}, {"caller_nid": "bx_reimburse_approve_reimburse", "callee": "approve", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L338"}, {"caller_nid": "bx_reimburse_approve_reimburse", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L340"}, {"caller_nid": "bx_reimburse_approve_reimburse", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L341"}, {"caller_nid": "bx_reimburse_approve_reimburse", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L342"}, {"caller_nid": "bx_reimburse_approve_reimburse", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L343"}, {"caller_nid": "bx_reimburse_approve_reimburse", "callee": "out_one_with_attachment_counts", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L343"}, {"caller_nid": "bx_reimburse_reject_reimburse", "callee": "reject", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L354"}, {"caller_nid": "bx_reimburse_reject_reimburse", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L356"}, {"caller_nid": "bx_reimburse_reject_reimburse", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L357"}, {"caller_nid": "bx_reimburse_reject_reimburse", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L358"}, {"caller_nid": "bx_reimburse_reject_reimburse", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L359"}, {"caller_nid": "bx_reimburse_reject_reimburse", "callee": "out_one_with_attachment_counts", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L359"}, {"caller_nid": "bx_reimburse_delete_reimburse", "callee": "get_by_id", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L369"}, {"caller_nid": "bx_reimburse_delete_reimburse", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L370"}, {"caller_nid": "bx_reimburse_delete_reimburse", "callee": "soft_delete", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L371"}, {"caller_nid": "bx_reimburse_delete_reimburse", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L372"}, {"caller_nid": "bx_reimburse_delete_reimburse", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L373"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/dc0691cec4589587fdbacf2dbc9334e3a99face5e924b7ead29b3531d7752c5d.json b/backend/graphify-out/cache/ast/dc0691cec4589587fdbacf2dbc9334e3a99face5e924b7ead29b3531d7752c5d.json new file mode 100644 index 000000000..7901d9c5a --- /dev/null +++ b/backend/graphify-out/cache/ast/dc0691cec4589587fdbacf2dbc9334e3a99face5e924b7ead29b3531d7752c5d.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_workflow_py", "label": "workflow.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L1"}, {"id": "bx_workflow_list_workflows", "label": "list_workflows()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L22"}, {"id": "int", "label": "int", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L22"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L22"}, {"id": "bxusercontext", "label": "BxUserContext", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L22"}, {"id": "bx_workflow_get_workflow_by_biz_type", "label": "get_workflow_by_biz_type()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L36"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L36"}, {"id": "bx_workflow_get_workflow", "label": "get_workflow()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L48"}, {"id": "bx_workflow_create_workflow", "label": "create_workflow()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L61"}, {"id": "workflowdefcreate", "label": "WorkflowDefCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L61"}, {"id": "bx_workflow_update_workflow", "label": "update_workflow()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L77"}, {"id": "workflowdefupdate", "label": "WorkflowDefUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L77"}, {"id": "bx_workflow_save_workflow_nodes", "label": "save_workflow_nodes()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L97"}, {"id": "workflownodecreate", "label": "WorkflowNodeCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L97"}, {"id": "bx_workflow_delete_workflow", "label": "delete_workflow()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L119"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_workflow_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L1", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_workflow_py", "target": "fastapi", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_workflow_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_workflow_py", "target": "app_core_bx_auth", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L6", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_workflow_py", "target": "app_core_database", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L7", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_workflow_py", "target": "app_core_tenant_context", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L8", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_workflow_py", "target": "app_schemas_bx_common", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L9", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_workflow_py", "target": "app_schemas_bx_workflow", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L10", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_workflow_py", "target": "app_services_bx_workflow", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L16", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_workflow_py", "target": "bx_workflow_list_workflows", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L22", "weight": 1.0}, {"source": "bx_workflow_list_workflows", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L22", "weight": 1.0}, {"source": "bx_workflow_list_workflows", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L22", "weight": 1.0}, {"source": "bx_workflow_list_workflows", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L22", "weight": 1.0}, {"source": "bx_workflow_list_workflows", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L22", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_workflow_py", "target": "bx_workflow_get_workflow_by_biz_type", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L36", "weight": 1.0}, {"source": "bx_workflow_get_workflow_by_biz_type", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L36", "weight": 1.0}, {"source": "bx_workflow_get_workflow_by_biz_type", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L36", "weight": 1.0}, {"source": "bx_workflow_get_workflow_by_biz_type", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L36", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_workflow_py", "target": "bx_workflow_get_workflow", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L48", "weight": 1.0}, {"source": "bx_workflow_get_workflow", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L48", "weight": 1.0}, {"source": "bx_workflow_get_workflow", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L48", "weight": 1.0}, {"source": "bx_workflow_get_workflow", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L48", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_workflow_py", "target": "bx_workflow_create_workflow", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L61", "weight": 1.0}, {"source": "bx_workflow_create_workflow", "target": "workflowdefcreate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L61", "weight": 1.0}, {"source": "bx_workflow_create_workflow", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L61", "weight": 1.0}, {"source": "bx_workflow_create_workflow", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L61", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_workflow_py", "target": "bx_workflow_update_workflow", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L77", "weight": 1.0}, {"source": "bx_workflow_update_workflow", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L77", "weight": 1.0}, {"source": "bx_workflow_update_workflow", "target": "workflowdefupdate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L77", "weight": 1.0}, {"source": "bx_workflow_update_workflow", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L77", "weight": 1.0}, {"source": "bx_workflow_update_workflow", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L77", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_workflow_py", "target": "bx_workflow_save_workflow_nodes", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L97", "weight": 1.0}, {"source": "bx_workflow_save_workflow_nodes", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L97", "weight": 1.0}, {"source": "bx_workflow_save_workflow_nodes", "target": "workflownodecreate", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L97", "weight": 1.0}, {"source": "bx_workflow_save_workflow_nodes", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L97", "weight": 1.0}, {"source": "bx_workflow_save_workflow_nodes", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L97", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_workflow_py", "target": "bx_workflow_delete_workflow", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L119", "weight": 1.0}, {"source": "bx_workflow_delete_workflow", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L119", "weight": 1.0}, {"source": "bx_workflow_delete_workflow", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L119", "weight": 1.0}, {"source": "bx_workflow_delete_workflow", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L119", "weight": 1.0}], "raw_calls": [{"caller_nid": "bx_workflow_list_workflows", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L28"}, {"caller_nid": "bx_workflow_list_workflows", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L28"}, {"caller_nid": "bx_workflow_list_workflows", "callee": "get_paged", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L29"}, {"caller_nid": "bx_workflow_list_workflows", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L30"}, {"caller_nid": "bx_workflow_list_workflows", "callee": "PagedData", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L31"}, {"caller_nid": "bx_workflow_list_workflows", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L32"}, {"caller_nid": "bx_workflow_get_workflow_by_biz_type", "callee": "ensure_by_biz_type", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L41"}, {"caller_nid": "bx_workflow_get_workflow_by_biz_type", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L43"}, {"caller_nid": "bx_workflow_get_workflow_by_biz_type", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L44"}, {"caller_nid": "bx_workflow_get_workflow_by_biz_type", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L44"}, {"caller_nid": "bx_workflow_get_workflow", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L53"}, {"caller_nid": "bx_workflow_get_workflow", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L53"}, {"caller_nid": "bx_workflow_get_workflow", "callee": "get_by_id", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L54"}, {"caller_nid": "bx_workflow_get_workflow", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L56"}, {"caller_nid": "bx_workflow_get_workflow", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L57"}, {"caller_nid": "bx_workflow_get_workflow", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L57"}, {"caller_nid": "bx_workflow_create_workflow", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L66"}, {"caller_nid": "bx_workflow_create_workflow", "callee": "pop", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L67"}, {"caller_nid": "bx_workflow_create_workflow", "callee": "create", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L68"}, {"caller_nid": "bx_workflow_create_workflow", "callee": "save_nodes", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L70"}, {"caller_nid": "bx_workflow_create_workflow", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L71"}, {"caller_nid": "bx_workflow_create_workflow", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L72"}, {"caller_nid": "bx_workflow_create_workflow", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L73"}, {"caller_nid": "bx_workflow_create_workflow", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L73"}, {"caller_nid": "bx_workflow_update_workflow", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L83"}, {"caller_nid": "bx_workflow_update_workflow", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L83"}, {"caller_nid": "bx_workflow_update_workflow", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L84"}, {"caller_nid": "bx_workflow_update_workflow", "callee": "pop", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L85"}, {"caller_nid": "bx_workflow_update_workflow", "callee": "update", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L86"}, {"caller_nid": "bx_workflow_update_workflow", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L88"}, {"caller_nid": "bx_workflow_update_workflow", "callee": "save_nodes", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L90"}, {"caller_nid": "bx_workflow_update_workflow", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L91"}, {"caller_nid": "bx_workflow_update_workflow", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L92"}, {"caller_nid": "bx_workflow_update_workflow", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L93"}, {"caller_nid": "bx_workflow_update_workflow", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L93"}, {"caller_nid": "bx_workflow_save_workflow_nodes", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L103"}, {"caller_nid": "bx_workflow_save_workflow_nodes", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L103"}, {"caller_nid": "bx_workflow_save_workflow_nodes", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L104"}, {"caller_nid": "bx_workflow_save_workflow_nodes", "callee": "save_nodes", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L106"}, {"caller_nid": "bx_workflow_save_workflow_nodes", "callee": "rollback", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L108"}, {"caller_nid": "bx_workflow_save_workflow_nodes", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L109"}, {"caller_nid": "bx_workflow_save_workflow_nodes", "callee": "get_by_id", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L110"}, {"caller_nid": "bx_workflow_save_workflow_nodes", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L112"}, {"caller_nid": "bx_workflow_save_workflow_nodes", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L113"}, {"caller_nid": "bx_workflow_save_workflow_nodes", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L114"}, {"caller_nid": "bx_workflow_save_workflow_nodes", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L115"}, {"caller_nid": "bx_workflow_save_workflow_nodes", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L115"}, {"caller_nid": "bx_workflow_delete_workflow", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L124"}, {"caller_nid": "bx_workflow_delete_workflow", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L124"}, {"caller_nid": "bx_workflow_delete_workflow", "callee": "get_by_id", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L125"}, {"caller_nid": "bx_workflow_delete_workflow", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L127"}, {"caller_nid": "bx_workflow_delete_workflow", "callee": "soft_delete", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L128"}, {"caller_nid": "bx_workflow_delete_workflow", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L129"}, {"caller_nid": "bx_workflow_delete_workflow", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py", "source_location": "L130"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/df44e578fdf20815ad4dcda2476e44a82171dbd0dde03791233ff1f8bcf59f8d.json b/backend/graphify-out/cache/ast/df44e578fdf20815ad4dcda2476e44a82171dbd0dde03791233ff1f8bcf59f8d.json new file mode 100644 index 000000000..1b5f58077 --- /dev/null +++ b/backend/graphify-out/cache/ast/df44e578fdf20815ad4dcda2476e44a82171dbd0dde03791233ff1f8bcf59f8d.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "label": "reimburse.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L1"}, {"id": "bx_reimburse_reimburseservice", "label": "ReimburseService", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L29"}, {"id": "bx_reimburse_reimburseservice_tenant_no", "label": "._tenant_no()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L31"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L31"}, {"id": "bxusercontext", "label": "BxUserContext", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L31"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L31"}, {"id": "bx_reimburse_reimburseservice_get_by_id", "label": ".get_by_id()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L35"}, {"id": "bxreimburseapply", "label": "BxReimburseApply", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L35"}, {"id": "bx_reimburse_reimburseservice_get_paged", "label": ".get_paged()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L39"}, {"id": "int", "label": "int", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L39"}, {"id": "any", "label": "Any", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L39"}, {"id": "bx_reimburse_reimburseservice_soft_delete", "label": ".soft_delete()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L49"}, {"id": "bool", "label": "bool", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L49"}, {"id": "bx_reimburse_reimburseservice_workflow_nodes", "label": "._workflow_nodes()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L56"}, {"id": "bxworkflownode", "label": "BxWorkflowNode", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L56"}, {"id": "bx_reimburse_reimburseservice_pending_approval", "label": ".pending_approval()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L69"}, {"id": "bx_reimburse_reimburseservice_approved_by_me", "label": ".approved_by_me()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L125"}, {"id": "bx_reimburse_reimburseservice_submit", "label": ".submit()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L173"}, {"id": "bx_reimburse_reimburseservice_approve", "label": ".approve()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L190"}, {"id": "bx_reimburse_reimburseservice_reject", "label": ".reject()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L235"}, {"id": "bx_reimburse_reimburseservice_get_approvals", "label": ".get_approvals()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L272"}, {"id": "bx_reimburse_reimburseservice_create_with_details", "label": ".create_with_details()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L324"}, {"id": "bx_reimburse_reimburseservice_update_with_details", "label": ".update_with_details()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L370"}, {"id": "bx_reimburse_reimburseservice_get_details", "label": ".get_details()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L423"}, {"id": "bxreimbursedetail", "label": "BxReimburseDetail", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L423"}, {"id": "bx_reimburse_reimburseservice_out_rows_with_attachment_counts", "label": ".out_rows_with_attachment_counts()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L436"}, {"id": "reimburseapplyout", "label": "ReimburseApplyOut", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L436"}, {"id": "bx_reimburse_reimburseservice_out_one_with_attachment_counts", "label": ".out_one_with_attachment_counts()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L453"}, {"id": "bx_reimburse_reimburseservice_build_apply_out_with_details", "label": ".build_apply_out_with_details()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L459"}, {"id": "bx_reimburse_reimburseservice_global_status_counts", "label": ".global_status_counts()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L468"}, {"id": "bx_reimburse_reimburseservice_my_apply_stats", "label": ".my_apply_stats()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L478"}, {"id": "bx_reimburse_reimburseservice_pending_approval_stats", "label": ".pending_approval_stats()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L537"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "decimal", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L5", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "sqlalchemy", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L7", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L8", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "app_core_bx_auth", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L10", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "app_core_tenant_context", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L11", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "app_core_utils", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L12", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "app_models_bx_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L13", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "app_schemas_bx_reimburse", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L20", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "app_services_bx_attachment", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L21", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "app_services_bx_base", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L22", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "app_utils_bx_codegen", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L23", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "app_utils_bx_date_range", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L24", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "bx_reimburse_reimburseservice", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L29", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_tenant_no", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L31", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_tenant_no", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L31", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_tenant_no", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L31", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_tenant_no", "target": "str", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L31", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_get_by_id", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L35", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_by_id", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L35", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_by_id", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L35", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_by_id", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L35", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_by_id", "target": "bxreimburseapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L35", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_get_paged", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L39", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_paged", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L39", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_paged", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L39", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_paged", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L39", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_paged", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L39", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_paged", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L39", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_paged", "target": "bxreimburseapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L39", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_paged", "target": "int", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L39", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_soft_delete", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L49", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_soft_delete", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L49", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_soft_delete", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L49", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_soft_delete", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L49", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_soft_delete", "target": "bool", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L49", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_workflow_nodes", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L56", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_workflow_nodes", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L56", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_workflow_nodes", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L56", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_workflow_nodes", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L56", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_workflow_nodes", "target": "bxworkflownode", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L56", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_pending_approval", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L69", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pending_approval", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L69", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pending_approval", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L69", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pending_approval", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L69", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pending_approval", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L69", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pending_approval", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L69", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pending_approval", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L69", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pending_approval", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L69", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pending_approval", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L69", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_approved_by_me", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L125", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approved_by_me", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L125", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approved_by_me", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L125", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approved_by_me", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L125", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approved_by_me", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L125", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approved_by_me", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L125", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approved_by_me", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L125", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approved_by_me", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L125", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approved_by_me", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L125", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_submit", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L173", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_submit", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L173", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_submit", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L173", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_submit", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L173", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_submit", "target": "bxreimburseapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L173", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_approve", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L190", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approve", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L190", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approve", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L190", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approve", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L190", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approve", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L190", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approve", "target": "bxreimburseapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L190", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_reject", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L235", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_reject", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L235", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_reject", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L235", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_reject", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L235", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_reject", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L235", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_reject", "target": "bxreimburseapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L235", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_get_approvals", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L272", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approvals", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L272", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approvals", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L272", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approvals", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L272", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approvals", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L272", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approvals", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L272", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_create_with_details", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L324", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_create_with_details", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L324", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_create_with_details", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L324", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_create_with_details", "target": "bxreimburseapply", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L324", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_update_with_details", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L370", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_update_with_details", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L370", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_update_with_details", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L370", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_update_with_details", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L370", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_update_with_details", "target": "bxreimburseapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L370", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_get_details", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L423", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_details", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L423", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_details", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L423", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_details", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L423", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_details", "target": "bxreimbursedetail", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L423", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_out_rows_with_attachment_counts", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L436", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_out_rows_with_attachment_counts", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L436", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_out_rows_with_attachment_counts", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L436", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_out_rows_with_attachment_counts", "target": "bxreimburseapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L436", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_out_rows_with_attachment_counts", "target": "reimburseapplyout", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L436", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_out_one_with_attachment_counts", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L453", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_out_one_with_attachment_counts", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L453", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_out_one_with_attachment_counts", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L453", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_out_one_with_attachment_counts", "target": "bxreimburseapply", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L453", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_out_one_with_attachment_counts", "target": "reimburseapplyout", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L453", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_build_apply_out_with_details", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L459", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_build_apply_out_with_details", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L459", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_build_apply_out_with_details", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L459", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_build_apply_out_with_details", "target": "bxreimburseapply", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L459", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_build_apply_out_with_details", "target": "reimburseapplyout", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L459", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_global_status_counts", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L468", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_global_status_counts", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L468", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_global_status_counts", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L468", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_global_status_counts", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L468", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_global_status_counts", "target": "int", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L468", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_my_apply_stats", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L478", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_my_apply_stats", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L478", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_my_apply_stats", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L478", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_my_apply_stats", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L478", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_pending_approval_stats", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L537", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pending_approval_stats", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L537", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pending_approval_stats", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L537", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pending_approval_stats", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L537", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_soft_delete", "target": "bx_reimburse_reimburseservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L50", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_submit", "target": "bx_reimburse_reimburseservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L174", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_submit", "target": "bx_reimburse_reimburseservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L175", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_submit", "target": "bx_reimburse_reimburseservice_workflow_nodes", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L183", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approve", "target": "bx_reimburse_reimburseservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L193", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approve", "target": "bx_reimburse_reimburseservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L194", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approve", "target": "bx_reimburse_reimburseservice_workflow_nodes", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L197", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_reject", "target": "bx_reimburse_reimburseservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L238", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_reject", "target": "bx_reimburse_reimburseservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L239", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_reject", "target": "bx_reimburse_reimburseservice_workflow_nodes", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L242", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approvals", "target": "bx_reimburse_reimburseservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L273", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approvals", "target": "bx_reimburse_reimburseservice_workflow_nodes", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L279", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_create_with_details", "target": "bx_reimburse_reimburseservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L331", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_create_with_details", "target": "bxreimburseapply", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L337", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_create_with_details", "target": "bxreimbursedetail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L354", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_update_with_details", "target": "bx_reimburse_reimburseservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L378", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_update_with_details", "target": "bx_reimburse_reimburseservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L379", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_update_with_details", "target": "bxreimbursedetail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L397", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_out_one_with_attachment_counts", "target": "bx_reimburse_reimburseservice_out_rows_with_attachment_counts", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L456", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_build_apply_out_with_details", "target": "bx_reimburse_reimburseservice_out_one_with_attachment_counts", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L462", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_build_apply_out_with_details", "target": "bx_reimburse_reimburseservice_get_details", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L463", "weight": 1.0}], "raw_calls": [{"caller_nid": "bx_reimburse_reimburseservice_tenant_no", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L32"}, {"caller_nid": "bx_reimburse_reimburseservice_tenant_no", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L32"}, {"caller_nid": "bx_reimburse_reimburseservice_workflow_nodes", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L58"}, {"caller_nid": "bx_reimburse_reimburseservice_workflow_nodes", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L58"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "join", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L80"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L80"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "and_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L83"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L99"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L100"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L101"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "parse_create_time_day_bounds", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L106"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "subquery", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L112"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L113"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L113"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L113"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L113"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "limit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L115"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "offset", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L115"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L115"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "join", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L115"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L115"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L117"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "subquery", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L136"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "distinct", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L136"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L136"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "join", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L146"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L146"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L152"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L153"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L154"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "parse_create_time_day_bounds", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L159"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L163"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "limit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L165"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "offset", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L165"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L165"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L165"}, {"caller_nid": "bx_reimburse_reimburseservice_submit", "callee": "generate_apply_code", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L180"}, {"caller_nid": "bx_reimburse_reimburseservice_submit", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L186"}, {"caller_nid": "bx_reimburse_reimburseservice_approve", "callee": "BxReimburseApproval", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L210"}, {"caller_nid": "bx_reimburse_reimburseservice_approve", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L211"}, {"caller_nid": "bx_reimburse_reimburseservice_approve", "callee": "now", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L219"}, {"caller_nid": "bx_reimburse_reimburseservice_approve", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L224"}, {"caller_nid": "bx_reimburse_reimburseservice_approve", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L231"}, {"caller_nid": "bx_reimburse_reimburseservice_reject", "callee": "BxReimburseApproval", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L250"}, {"caller_nid": "bx_reimburse_reimburseservice_reject", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L251"}, {"caller_nid": "bx_reimburse_reimburseservice_reject", "callee": "now", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L259"}, {"caller_nid": "bx_reimburse_reimburseservice_reject", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L264"}, {"caller_nid": "bx_reimburse_reimburseservice_reject", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L268"}, {"caller_nid": "bx_reimburse_reimburseservice_get_approvals", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L283"}, {"caller_nid": "bx_reimburse_reimburseservice_get_approvals", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L294"}, {"caller_nid": "bx_reimburse_reimburseservice_get_approvals", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L296"}, {"caller_nid": "bx_reimburse_reimburseservice_get_approvals", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L309"}, {"caller_nid": "bx_reimburse_reimburseservice_create_with_details", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L333"}, {"caller_nid": "bx_reimburse_reimburseservice_create_with_details", "callee": "pop", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L334"}, {"caller_nid": "bx_reimburse_reimburseservice_create_with_details", "callee": "generate_title", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L334"}, {"caller_nid": "bx_reimburse_reimburseservice_create_with_details", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L338"}, {"caller_nid": "bx_reimburse_reimburseservice_create_with_details", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L341"}, {"caller_nid": "bx_reimburse_reimburseservice_create_with_details", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L342"}, {"caller_nid": "bx_reimburse_reimburseservice_create_with_details", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L350"}, {"caller_nid": "bx_reimburse_reimburseservice_create_with_details", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L351"}, {"caller_nid": "bx_reimburse_reimburseservice_create_with_details", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L355"}, {"caller_nid": "bx_reimburse_reimburseservice_create_with_details", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L360"}, {"caller_nid": "bx_reimburse_reimburseservice_create_with_details", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L365"}, {"caller_nid": "bx_reimburse_reimburseservice_create_with_details", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L366"}, {"caller_nid": "bx_reimburse_reimburseservice_update_with_details", "callee": "items", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L383"}, {"caller_nid": "bx_reimburse_reimburseservice_update_with_details", "callee": "update", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L387"}, {"caller_nid": "bx_reimburse_reimburseservice_update_with_details", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L387"}, {"caller_nid": "bx_reimburse_reimburseservice_update_with_details", "callee": "Decimal", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L393"}, {"caller_nid": "bx_reimburse_reimburseservice_update_with_details", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L398"}, {"caller_nid": "bx_reimburse_reimburseservice_update_with_details", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L403"}, {"caller_nid": "bx_reimburse_reimburseservice_update_with_details", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L408"}, {"caller_nid": "bx_reimburse_reimburseservice_update_with_details", "callee": "Decimal", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L409"}, {"caller_nid": "bx_reimburse_reimburseservice_update_with_details", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L419"}, {"caller_nid": "bx_reimburse_reimburseservice_get_details", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L425"}, {"caller_nid": "bx_reimburse_reimburseservice_get_details", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L425"}, {"caller_nid": "bx_reimburse_reimburseservice_out_rows_with_attachment_counts", "callee": "count_invoice_attach_by_biz_ids", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L442"}, {"caller_nid": "bx_reimburse_reimburseservice_out_rows_with_attachment_counts", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L447"}, {"caller_nid": "bx_reimburse_reimburseservice_out_rows_with_attachment_counts", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L448"}, {"caller_nid": "bx_reimburse_reimburseservice_out_rows_with_attachment_counts", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L449"}, {"caller_nid": "bx_reimburse_reimburseservice_out_rows_with_attachment_counts", "callee": "model_copy", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L449"}, {"caller_nid": "bx_reimburse_reimburseservice_build_apply_out_with_details", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L464"}, {"caller_nid": "bx_reimburse_reimburseservice_global_status_counts", "callee": "group_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L470"}, {"caller_nid": "bx_reimburse_reimburseservice_global_status_counts", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L470"}, {"caller_nid": "bx_reimburse_reimburseservice_global_status_counts", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L470"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "and_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L479"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L484"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L484"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L484"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L484"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L486"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L486"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L486"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L486"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L493"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L493"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L493"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L493"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "in_", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L495"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L500"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L500"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L500"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L500"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L507"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L507"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L507"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "in_", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L508"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "current_month_bounds", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L512"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L514"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L514"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L514"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L520"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L520"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L520"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L520"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval_stats", "callee": "subquery", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L538"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval_stats", "callee": "join", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L539"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L539"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval_stats", "callee": "and_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L542"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L556"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L556"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L556"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L556"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval_stats", "callee": "current_month_bounds", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L557"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L559"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval_stats", "callee": "join", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L559"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L559"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval_stats", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L559"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/e1776f2969dc96ebcd5a775ec67f445c75c51b2c0bcf6a0f60df96337b61aaf8.json b/backend/graphify-out/cache/ast/e1776f2969dc96ebcd5a775ec67f445c75c51b2c0bcf6a0f60df96337b61aaf8.json new file mode 100644 index 000000000..466bcc080 --- /dev/null +++ b/backend/graphify-out/cache/ast/e1776f2969dc96ebcd5a775ec67f445c75c51b2c0bcf6a0f60df96337b61aaf8.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_workflow_py", "label": "workflow.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L1"}, {"id": "bx_workflow_workflowservice", "label": "WorkflowService", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L14"}, {"id": "bx_workflow_workflowservice_tenant_no", "label": "._tenant_no()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L16"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L16"}, {"id": "bxusercontext", "label": "BxUserContext", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L16"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L16"}, {"id": "bx_workflow_workflowservice_get_by_id", "label": ".get_by_id()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L20"}, {"id": "bxworkflowdef", "label": "BxWorkflowDef", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L20"}, {"id": "bx_workflow_workflowservice_get_paged", "label": ".get_paged()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L24"}, {"id": "int", "label": "int", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L24"}, {"id": "bx_workflow_workflowservice_create", "label": ".create()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L33"}, {"id": "bx_workflow_workflowservice_update", "label": ".update()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L50"}, {"id": "bx_workflow_workflowservice_soft_delete", "label": ".soft_delete()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L68"}, {"id": "bool", "label": "bool", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L68"}, {"id": "bx_workflow_workflowservice_get_by_biz_type", "label": ".get_by_biz_type()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L82"}, {"id": "bx_workflow_workflowservice_save_nodes", "label": ".save_nodes()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L94"}, {"id": "bxworkflownode", "label": "BxWorkflowNode", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L94"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_workflow_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_workflow_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L5", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_workflow_py", "target": "app_core_bx_auth", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L7", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_workflow_py", "target": "app_core_tenant_context", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L8", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_workflow_py", "target": "app_core_utils", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L9", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_workflow_py", "target": "app_models_bx_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L10", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_workflow_py", "target": "app_services_bx_base", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L11", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_workflow_py", "target": "bx_workflow_workflowservice", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L14", "weight": 1.0}, {"source": "bx_workflow_workflowservice", "target": "bx_workflow_workflowservice_tenant_no", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L16", "weight": 1.0}, {"source": "bx_workflow_workflowservice_tenant_no", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L16", "weight": 1.0}, {"source": "bx_workflow_workflowservice_tenant_no", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L16", "weight": 1.0}, {"source": "bx_workflow_workflowservice_tenant_no", "target": "str", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L16", "weight": 1.0}, {"source": "bx_workflow_workflowservice", "target": "bx_workflow_workflowservice_get_by_id", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L20", "weight": 1.0}, {"source": "bx_workflow_workflowservice_get_by_id", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L20", "weight": 1.0}, {"source": "bx_workflow_workflowservice_get_by_id", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L20", "weight": 1.0}, {"source": "bx_workflow_workflowservice_get_by_id", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L20", "weight": 1.0}, {"source": "bx_workflow_workflowservice_get_by_id", "target": "bxworkflowdef", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L20", "weight": 1.0}, {"source": "bx_workflow_workflowservice", "target": "bx_workflow_workflowservice_get_paged", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L24", "weight": 1.0}, {"source": "bx_workflow_workflowservice_get_paged", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L24", "weight": 1.0}, {"source": "bx_workflow_workflowservice_get_paged", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L24", "weight": 1.0}, {"source": "bx_workflow_workflowservice_get_paged", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L24", "weight": 1.0}, {"source": "bx_workflow_workflowservice_get_paged", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L24", "weight": 1.0}, {"source": "bx_workflow_workflowservice_get_paged", "target": "bxworkflowdef", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L24", "weight": 1.0}, {"source": "bx_workflow_workflowservice_get_paged", "target": "int", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L24", "weight": 1.0}, {"source": "bx_workflow_workflowservice", "target": "bx_workflow_workflowservice_create", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L33", "weight": 1.0}, {"source": "bx_workflow_workflowservice_create", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L33", "weight": 1.0}, {"source": "bx_workflow_workflowservice_create", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L33", "weight": 1.0}, {"source": "bx_workflow_workflowservice_create", "target": "bxworkflowdef", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L33", "weight": 1.0}, {"source": "bx_workflow_workflowservice", "target": "bx_workflow_workflowservice_update", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L50", "weight": 1.0}, {"source": "bx_workflow_workflowservice_update", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L50", "weight": 1.0}, {"source": "bx_workflow_workflowservice_update", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L50", "weight": 1.0}, {"source": "bx_workflow_workflowservice_update", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L50", "weight": 1.0}, {"source": "bx_workflow_workflowservice_update", "target": "bxworkflowdef", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L50", "weight": 1.0}, {"source": "bx_workflow_workflowservice", "target": "bx_workflow_workflowservice_soft_delete", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L68", "weight": 1.0}, {"source": "bx_workflow_workflowservice_soft_delete", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L68", "weight": 1.0}, {"source": "bx_workflow_workflowservice_soft_delete", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L68", "weight": 1.0}, {"source": "bx_workflow_workflowservice_soft_delete", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L68", "weight": 1.0}, {"source": "bx_workflow_workflowservice_soft_delete", "target": "bool", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L68", "weight": 1.0}, {"source": "bx_workflow_workflowservice", "target": "bx_workflow_workflowservice_get_by_biz_type", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L82", "weight": 1.0}, {"source": "bx_workflow_workflowservice_get_by_biz_type", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L82", "weight": 1.0}, {"source": "bx_workflow_workflowservice_get_by_biz_type", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L82", "weight": 1.0}, {"source": "bx_workflow_workflowservice_get_by_biz_type", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L82", "weight": 1.0}, {"source": "bx_workflow_workflowservice_get_by_biz_type", "target": "bxworkflowdef", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L82", "weight": 1.0}, {"source": "bx_workflow_workflowservice", "target": "bx_workflow_workflowservice_save_nodes", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L94", "weight": 1.0}, {"source": "bx_workflow_workflowservice_save_nodes", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L94", "weight": 1.0}, {"source": "bx_workflow_workflowservice_save_nodes", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L94", "weight": 1.0}, {"source": "bx_workflow_workflowservice_save_nodes", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L94", "weight": 1.0}, {"source": "bx_workflow_workflowservice_save_nodes", "target": "bxworkflownode", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L94", "weight": 1.0}, {"source": "bx_workflow_workflowservice_create", "target": "bx_workflow_workflowservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L39", "weight": 1.0}, {"source": "bx_workflow_workflowservice_update", "target": "bx_workflow_workflowservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L57", "weight": 1.0}, {"source": "bx_workflow_workflowservice_soft_delete", "target": "bx_workflow_workflowservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L69", "weight": 1.0}, {"source": "bx_workflow_workflowservice_soft_delete", "target": "bx_workflow_workflowservice_update", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L74", "weight": 1.0}, {"source": "bx_workflow_workflowservice_save_nodes", "target": "bx_workflow_workflowservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L101", "weight": 1.0}, {"source": "bx_workflow_workflowservice_save_nodes", "target": "bx_workflow_workflowservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L102", "weight": 1.0}, {"source": "bx_workflow_workflowservice_save_nodes", "target": "bxworkflownode", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L121", "weight": 1.0}], "raw_calls": [{"caller_nid": "bx_workflow_workflowservice_tenant_no", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L17"}, {"caller_nid": "bx_workflow_workflowservice_tenant_no", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L17"}, {"caller_nid": "bx_workflow_workflowservice_soft_delete", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L74"}, {"caller_nid": "bx_workflow_workflowservice_soft_delete", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L78"}, {"caller_nid": "bx_workflow_workflowservice_get_by_biz_type", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L84"}, {"caller_nid": "bx_workflow_workflowservice_get_by_biz_type", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L84"}, {"caller_nid": "bx_workflow_workflowservice_save_nodes", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L104"}, {"caller_nid": "bx_workflow_workflowservice_save_nodes", "callee": "delete", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L106"}, {"caller_nid": "bx_workflow_workflowservice_save_nodes", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L106"}, {"caller_nid": "bx_workflow_workflowservice_save_nodes", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L114"}, {"caller_nid": "bx_workflow_workflowservice_save_nodes", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L119"}, {"caller_nid": "bx_workflow_workflowservice_save_nodes", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L120"}, {"caller_nid": "bx_workflow_workflowservice_save_nodes", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L122"}, {"caller_nid": "bx_workflow_workflowservice_save_nodes", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L123"}, {"caller_nid": "bx_workflow_workflowservice_save_nodes", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L124"}, {"caller_nid": "bx_workflow_workflowservice_save_nodes", "callee": "expire", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py", "source_location": "L125"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/e591563b9a6f84fb8f07bb4fcceac592d711c6ff85fce7cc83b000977f06b9e6.json b/backend/graphify-out/cache/ast/e591563b9a6f84fb8f07bb4fcceac592d711c6ff85fce7cc83b000977f06b9e6.json new file mode 100644 index 000000000..606fa4204 --- /dev/null +++ b/backend/graphify-out/cache/ast/e591563b9a6f84fb8f07bb4fcceac592d711c6ff85fce7cc83b000977f06b9e6.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_advance_py", "label": "advance.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L1"}, {"id": "bx_advance_advanceservice", "label": "AdvanceService", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L24"}, {"id": "bx_advance_advanceservice_tenant_no", "label": "._tenant_no()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L26"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L26"}, {"id": "bxusercontext", "label": "BxUserContext", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L26"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L26"}, {"id": "bx_advance_advanceservice_get_by_id", "label": ".get_by_id()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L30"}, {"id": "bxadvanceapply", "label": "BxAdvanceApply", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L30"}, {"id": "bx_advance_advanceservice_get_paged", "label": ".get_paged()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L34"}, {"id": "int", "label": "int", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L34"}, {"id": "any", "label": "Any", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L34"}, {"id": "bx_advance_advanceservice_create", "label": ".create()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L44"}, {"id": "bx_advance_advanceservice_update", "label": ".update()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L61"}, {"id": "bx_advance_advanceservice_soft_delete", "label": ".soft_delete()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L79"}, {"id": "bool", "label": "bool", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L79"}, {"id": "bx_advance_advanceservice_pending_approval", "label": ".pending_approval()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L86"}, {"id": "bx_advance_advanceservice_approved_by_me", "label": ".approved_by_me()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L142"}, {"id": "bx_advance_advanceservice_workflow_nodes", "label": "._workflow_nodes()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L190"}, {"id": "bxworkflownode", "label": "BxWorkflowNode", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L190"}, {"id": "bx_advance_advanceservice_submit", "label": ".submit()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L203"}, {"id": "bx_advance_advanceservice_approve", "label": ".approve()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L220"}, {"id": "bx_advance_advanceservice_reject", "label": ".reject()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L265"}, {"id": "bx_advance_advanceservice_get_approvals", "label": ".get_approvals()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L302"}, {"id": "bx_advance_advanceservice_global_status_counts", "label": ".global_status_counts()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L354"}, {"id": "bx_advance_advanceservice_my_apply_stats", "label": ".my_apply_stats()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L364"}, {"id": "bx_advance_advanceservice_pending_approval_stats", "label": ".pending_approval_stats()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L447"}, {"id": "bx_advance_advanceservice_offset_amount_map", "label": ".offset_amount_map()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L478"}, {"id": "float", "label": "float", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L478"}, {"id": "bx_advance_advanceservice_issue", "label": ".issue()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L497"}, {"id": "bx_advance_advanceservice_finance_issue_stats", "label": ".finance_issue_stats()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L522"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_advance_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_advance_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_advance_py", "target": "sqlalchemy", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L6", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_advance_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L7", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_advance_py", "target": "app_core_bx_auth", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L9", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_advance_py", "target": "app_core_tenant_context", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L10", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_advance_py", "target": "app_core_utils", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L11", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_advance_py", "target": "app_models_bx_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L12", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_advance_py", "target": "app_services_bx_base", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L19", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_advance_py", "target": "app_utils_bx_codegen", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L20", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_advance_py", "target": "app_utils_bx_date_range", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L21", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_advance_py", "target": "bx_advance_advanceservice", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L24", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_tenant_no", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L26", "weight": 1.0}, {"source": "bx_advance_advanceservice_tenant_no", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L26", "weight": 1.0}, {"source": "bx_advance_advanceservice_tenant_no", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L26", "weight": 1.0}, {"source": "bx_advance_advanceservice_tenant_no", "target": "str", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L26", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_get_by_id", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L30", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_by_id", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L30", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_by_id", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L30", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_by_id", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L30", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_by_id", "target": "bxadvanceapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L30", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_get_paged", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L34", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_paged", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L34", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_paged", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L34", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_paged", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L34", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_paged", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L34", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_paged", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L34", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_paged", "target": "bxadvanceapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L34", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_paged", "target": "int", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L34", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_create", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L44", "weight": 1.0}, {"source": "bx_advance_advanceservice_create", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L44", "weight": 1.0}, {"source": "bx_advance_advanceservice_create", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L44", "weight": 1.0}, {"source": "bx_advance_advanceservice_create", "target": "bxadvanceapply", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L44", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_update", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L61", "weight": 1.0}, {"source": "bx_advance_advanceservice_update", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L61", "weight": 1.0}, {"source": "bx_advance_advanceservice_update", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L61", "weight": 1.0}, {"source": "bx_advance_advanceservice_update", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L61", "weight": 1.0}, {"source": "bx_advance_advanceservice_update", "target": "bxadvanceapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L61", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_soft_delete", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L79", "weight": 1.0}, {"source": "bx_advance_advanceservice_soft_delete", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L79", "weight": 1.0}, {"source": "bx_advance_advanceservice_soft_delete", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L79", "weight": 1.0}, {"source": "bx_advance_advanceservice_soft_delete", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L79", "weight": 1.0}, {"source": "bx_advance_advanceservice_soft_delete", "target": "bool", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L79", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_pending_approval", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L86", "weight": 1.0}, {"source": "bx_advance_advanceservice_pending_approval", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L86", "weight": 1.0}, {"source": "bx_advance_advanceservice_pending_approval", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L86", "weight": 1.0}, {"source": "bx_advance_advanceservice_pending_approval", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L86", "weight": 1.0}, {"source": "bx_advance_advanceservice_pending_approval", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L86", "weight": 1.0}, {"source": "bx_advance_advanceservice_pending_approval", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L86", "weight": 1.0}, {"source": "bx_advance_advanceservice_pending_approval", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L86", "weight": 1.0}, {"source": "bx_advance_advanceservice_pending_approval", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L86", "weight": 1.0}, {"source": "bx_advance_advanceservice_pending_approval", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L86", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_approved_by_me", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L142", "weight": 1.0}, {"source": "bx_advance_advanceservice_approved_by_me", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L142", "weight": 1.0}, {"source": "bx_advance_advanceservice_approved_by_me", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L142", "weight": 1.0}, {"source": "bx_advance_advanceservice_approved_by_me", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L142", "weight": 1.0}, {"source": "bx_advance_advanceservice_approved_by_me", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L142", "weight": 1.0}, {"source": "bx_advance_advanceservice_approved_by_me", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L142", "weight": 1.0}, {"source": "bx_advance_advanceservice_approved_by_me", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L142", "weight": 1.0}, {"source": "bx_advance_advanceservice_approved_by_me", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L142", "weight": 1.0}, {"source": "bx_advance_advanceservice_approved_by_me", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L142", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_workflow_nodes", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L190", "weight": 1.0}, {"source": "bx_advance_advanceservice_workflow_nodes", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L190", "weight": 1.0}, {"source": "bx_advance_advanceservice_workflow_nodes", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L190", "weight": 1.0}, {"source": "bx_advance_advanceservice_workflow_nodes", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L190", "weight": 1.0}, {"source": "bx_advance_advanceservice_workflow_nodes", "target": "bxworkflownode", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L190", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_submit", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L203", "weight": 1.0}, {"source": "bx_advance_advanceservice_submit", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L203", "weight": 1.0}, {"source": "bx_advance_advanceservice_submit", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L203", "weight": 1.0}, {"source": "bx_advance_advanceservice_submit", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L203", "weight": 1.0}, {"source": "bx_advance_advanceservice_submit", "target": "bxadvanceapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L203", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_approve", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L220", "weight": 1.0}, {"source": "bx_advance_advanceservice_approve", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L220", "weight": 1.0}, {"source": "bx_advance_advanceservice_approve", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L220", "weight": 1.0}, {"source": "bx_advance_advanceservice_approve", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L220", "weight": 1.0}, {"source": "bx_advance_advanceservice_approve", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L220", "weight": 1.0}, {"source": "bx_advance_advanceservice_approve", "target": "bxadvanceapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L220", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_reject", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L265", "weight": 1.0}, {"source": "bx_advance_advanceservice_reject", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L265", "weight": 1.0}, {"source": "bx_advance_advanceservice_reject", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L265", "weight": 1.0}, {"source": "bx_advance_advanceservice_reject", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L265", "weight": 1.0}, {"source": "bx_advance_advanceservice_reject", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L265", "weight": 1.0}, {"source": "bx_advance_advanceservice_reject", "target": "bxadvanceapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L265", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_get_approvals", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L302", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_approvals", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L302", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_approvals", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L302", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_approvals", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L302", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_approvals", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L302", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_approvals", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L302", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_global_status_counts", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L354", "weight": 1.0}, {"source": "bx_advance_advanceservice_global_status_counts", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L354", "weight": 1.0}, {"source": "bx_advance_advanceservice_global_status_counts", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L354", "weight": 1.0}, {"source": "bx_advance_advanceservice_global_status_counts", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L354", "weight": 1.0}, {"source": "bx_advance_advanceservice_global_status_counts", "target": "int", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L354", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_my_apply_stats", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L364", "weight": 1.0}, {"source": "bx_advance_advanceservice_my_apply_stats", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L364", "weight": 1.0}, {"source": "bx_advance_advanceservice_my_apply_stats", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L364", "weight": 1.0}, {"source": "bx_advance_advanceservice_my_apply_stats", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L364", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_pending_approval_stats", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L447", "weight": 1.0}, {"source": "bx_advance_advanceservice_pending_approval_stats", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L447", "weight": 1.0}, {"source": "bx_advance_advanceservice_pending_approval_stats", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L447", "weight": 1.0}, {"source": "bx_advance_advanceservice_pending_approval_stats", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L447", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_offset_amount_map", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L478", "weight": 1.0}, {"source": "bx_advance_advanceservice_offset_amount_map", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L478", "weight": 1.0}, {"source": "bx_advance_advanceservice_offset_amount_map", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L478", "weight": 1.0}, {"source": "bx_advance_advanceservice_offset_amount_map", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L478", "weight": 1.0}, {"source": "bx_advance_advanceservice_offset_amount_map", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L478", "weight": 1.0}, {"source": "bx_advance_advanceservice_offset_amount_map", "target": "float", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L478", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_issue", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L497", "weight": 1.0}, {"source": "bx_advance_advanceservice_issue", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L497", "weight": 1.0}, {"source": "bx_advance_advanceservice_issue", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L497", "weight": 1.0}, {"source": "bx_advance_advanceservice_issue", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L497", "weight": 1.0}, {"source": "bx_advance_advanceservice_issue", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L497", "weight": 1.0}, {"source": "bx_advance_advanceservice_issue", "target": "float", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L497", "weight": 1.0}, {"source": "bx_advance_advanceservice_issue", "target": "bxadvanceapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L497", "weight": 1.0}, {"source": "bx_advance_advanceservice", "target": "bx_advance_advanceservice_finance_issue_stats", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L522", "weight": 1.0}, {"source": "bx_advance_advanceservice_finance_issue_stats", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L522", "weight": 1.0}, {"source": "bx_advance_advanceservice_finance_issue_stats", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L522", "weight": 1.0}, {"source": "bx_advance_advanceservice_create", "target": "bx_advance_advanceservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L50", "weight": 1.0}, {"source": "bx_advance_advanceservice_update", "target": "bx_advance_advanceservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L68", "weight": 1.0}, {"source": "bx_advance_advanceservice_soft_delete", "target": "bx_advance_advanceservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L80", "weight": 1.0}, {"source": "bx_advance_advanceservice_submit", "target": "bx_advance_advanceservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L204", "weight": 1.0}, {"source": "bx_advance_advanceservice_submit", "target": "bx_advance_advanceservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L205", "weight": 1.0}, {"source": "bx_advance_advanceservice_submit", "target": "bx_advance_advanceservice_workflow_nodes", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L213", "weight": 1.0}, {"source": "bx_advance_advanceservice_approve", "target": "bx_advance_advanceservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L223", "weight": 1.0}, {"source": "bx_advance_advanceservice_approve", "target": "bx_advance_advanceservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L224", "weight": 1.0}, {"source": "bx_advance_advanceservice_approve", "target": "bx_advance_advanceservice_workflow_nodes", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L227", "weight": 1.0}, {"source": "bx_advance_advanceservice_reject", "target": "bx_advance_advanceservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L268", "weight": 1.0}, {"source": "bx_advance_advanceservice_reject", "target": "bx_advance_advanceservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L269", "weight": 1.0}, {"source": "bx_advance_advanceservice_reject", "target": "bx_advance_advanceservice_workflow_nodes", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L272", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_approvals", "target": "bx_advance_advanceservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L303", "weight": 1.0}, {"source": "bx_advance_advanceservice_get_approvals", "target": "bx_advance_advanceservice_workflow_nodes", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L309", "weight": 1.0}, {"source": "bx_advance_advanceservice_issue", "target": "bx_advance_advanceservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L504", "weight": 1.0}, {"source": "bx_advance_advanceservice_issue", "target": "bx_advance_advanceservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L505", "weight": 1.0}], "raw_calls": [{"caller_nid": "bx_advance_advanceservice_tenant_no", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L27"}, {"caller_nid": "bx_advance_advanceservice_tenant_no", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L27"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "join", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L97"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L97"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "and_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L100"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L116"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L117"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L118"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "parse_create_time_day_bounds", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L123"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "subquery", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L129"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L130"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L130"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L130"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L130"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "limit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L132"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "offset", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L132"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L132"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "join", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L132"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L132"}, {"caller_nid": "bx_advance_advanceservice_pending_approval", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L134"}, {"caller_nid": "bx_advance_advanceservice_approved_by_me", "callee": "subquery", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L153"}, {"caller_nid": "bx_advance_advanceservice_approved_by_me", "callee": "distinct", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L153"}, {"caller_nid": "bx_advance_advanceservice_approved_by_me", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L153"}, {"caller_nid": "bx_advance_advanceservice_approved_by_me", "callee": "join", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L163"}, {"caller_nid": "bx_advance_advanceservice_approved_by_me", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L163"}, {"caller_nid": "bx_advance_advanceservice_approved_by_me", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L169"}, {"caller_nid": "bx_advance_advanceservice_approved_by_me", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L170"}, {"caller_nid": "bx_advance_advanceservice_approved_by_me", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L171"}, {"caller_nid": "bx_advance_advanceservice_approved_by_me", "callee": "parse_create_time_day_bounds", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L176"}, {"caller_nid": "bx_advance_advanceservice_approved_by_me", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L180"}, {"caller_nid": "bx_advance_advanceservice_approved_by_me", "callee": "limit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L182"}, {"caller_nid": "bx_advance_advanceservice_approved_by_me", "callee": "offset", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L182"}, {"caller_nid": "bx_advance_advanceservice_approved_by_me", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L182"}, {"caller_nid": "bx_advance_advanceservice_approved_by_me", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L182"}, {"caller_nid": "bx_advance_advanceservice_workflow_nodes", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L192"}, {"caller_nid": "bx_advance_advanceservice_workflow_nodes", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L192"}, {"caller_nid": "bx_advance_advanceservice_submit", "callee": "generate_apply_code", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L210"}, {"caller_nid": "bx_advance_advanceservice_submit", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L216"}, {"caller_nid": "bx_advance_advanceservice_approve", "callee": "BxAdvanceApproval", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L240"}, {"caller_nid": "bx_advance_advanceservice_approve", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L241"}, {"caller_nid": "bx_advance_advanceservice_approve", "callee": "now", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L249"}, {"caller_nid": "bx_advance_advanceservice_approve", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L254"}, {"caller_nid": "bx_advance_advanceservice_approve", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L261"}, {"caller_nid": "bx_advance_advanceservice_reject", "callee": "BxAdvanceApproval", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L280"}, {"caller_nid": "bx_advance_advanceservice_reject", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L281"}, {"caller_nid": "bx_advance_advanceservice_reject", "callee": "now", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L289"}, {"caller_nid": "bx_advance_advanceservice_reject", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L294"}, {"caller_nid": "bx_advance_advanceservice_reject", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L298"}, {"caller_nid": "bx_advance_advanceservice_get_approvals", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L313"}, {"caller_nid": "bx_advance_advanceservice_get_approvals", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L324"}, {"caller_nid": "bx_advance_advanceservice_get_approvals", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L326"}, {"caller_nid": "bx_advance_advanceservice_get_approvals", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L339"}, {"caller_nid": "bx_advance_advanceservice_global_status_counts", "callee": "group_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L356"}, {"caller_nid": "bx_advance_advanceservice_global_status_counts", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L356"}, {"caller_nid": "bx_advance_advanceservice_global_status_counts", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L356"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "and_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L365"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L370"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L370"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L370"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L370"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L372"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L372"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L372"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L372"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L379"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L379"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L379"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L379"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L386"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L386"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L386"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L386"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L394"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L394"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L394"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L394"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L401"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L401"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L401"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "current_month_bounds", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L406"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L408"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L408"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L408"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L414"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L414"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L414"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L414"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L421"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "join", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L421"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L421"}, {"caller_nid": "bx_advance_advanceservice_my_apply_stats", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L421"}, {"caller_nid": "bx_advance_advanceservice_pending_approval_stats", "callee": "subquery", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L448"}, {"caller_nid": "bx_advance_advanceservice_pending_approval_stats", "callee": "join", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L449"}, {"caller_nid": "bx_advance_advanceservice_pending_approval_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L449"}, {"caller_nid": "bx_advance_advanceservice_pending_approval_stats", "callee": "and_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L452"}, {"caller_nid": "bx_advance_advanceservice_pending_approval_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L466"}, {"caller_nid": "bx_advance_advanceservice_pending_approval_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L466"}, {"caller_nid": "bx_advance_advanceservice_pending_approval_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L466"}, {"caller_nid": "bx_advance_advanceservice_pending_approval_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L466"}, {"caller_nid": "bx_advance_advanceservice_pending_approval_stats", "callee": "current_month_bounds", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L467"}, {"caller_nid": "bx_advance_advanceservice_pending_approval_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L469"}, {"caller_nid": "bx_advance_advanceservice_pending_approval_stats", "callee": "join", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L469"}, {"caller_nid": "bx_advance_advanceservice_pending_approval_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L469"}, {"caller_nid": "bx_advance_advanceservice_pending_approval_stats", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L469"}, {"caller_nid": "bx_advance_advanceservice_offset_amount_map", "callee": "group_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L482"}, {"caller_nid": "bx_advance_advanceservice_offset_amount_map", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L482"}, {"caller_nid": "bx_advance_advanceservice_offset_amount_map", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L484"}, {"caller_nid": "bx_advance_advanceservice_offset_amount_map", "callee": "in_", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L487"}, {"caller_nid": "bx_advance_advanceservice_issue", "callee": "now", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L511"}, {"caller_nid": "bx_advance_advanceservice_issue", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L518"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "and_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L523"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "and_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L524"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L526"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "is_", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L526"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L528"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L528"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L528"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L528"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L530"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L530"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L530"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L530"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L537"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L537"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L537"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "current_month_bounds", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L542"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L543"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L545"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L545"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L545"}, {"caller_nid": "bx_advance_advanceservice_finance_issue_stats", "callee": "isnot", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py", "source_location": "L549"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/eb032c84478721c937c421e8cf457716875a593a75c15caa07adec83c80f8b3b.json b/backend/graphify-out/cache/ast/eb032c84478721c937c421e8cf457716875a593a75c15caa07adec83c80f8b3b.json new file mode 100644 index 000000000..bf6ccdf75 --- /dev/null +++ b/backend/graphify-out/cache/ast/eb032c84478721c937c421e8cf457716875a593a75c15caa07adec83c80f8b3b.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_expense_item_py", "label": "expense_item.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L1"}, {"id": "bx_expense_item_get_expense_item_tree", "label": "get_expense_item_tree()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L17"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L17"}, {"id": "bxusercontext", "label": "BxUserContext", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L17"}, {"id": "bx_expense_item_get_expense_item", "label": "get_expense_item()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L27"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L27"}, {"id": "bx_expense_item_create_expense_item", "label": "create_expense_item()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L40"}, {"id": "expenseitemcreate", "label": "ExpenseItemCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L40"}, {"id": "bx_expense_item_update_expense_item", "label": "update_expense_item()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L56"}, {"id": "expenseitemupdate", "label": "ExpenseItemUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L56"}, {"id": "bx_expense_item_delete_expense_item", "label": "delete_expense_item()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L77"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_expense_item_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L1", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_expense_item_py", "target": "fastapi", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_expense_item_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_expense_item_py", "target": "app_core_bx_auth", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L6", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_expense_item_py", "target": "app_core_database", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L7", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_expense_item_py", "target": "app_core_tenant_context", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L8", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_expense_item_py", "target": "app_schemas_bx_common", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L9", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_expense_item_py", "target": "app_schemas_bx_expense_item", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L10", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_expense_item_py", "target": "app_services_bx_expense_item", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L11", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_expense_item_py", "target": "bx_expense_item_get_expense_item_tree", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L17", "weight": 1.0}, {"source": "bx_expense_item_get_expense_item_tree", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L17", "weight": 1.0}, {"source": "bx_expense_item_get_expense_item_tree", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L17", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_expense_item_py", "target": "bx_expense_item_get_expense_item", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L27", "weight": 1.0}, {"source": "bx_expense_item_get_expense_item", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L27", "weight": 1.0}, {"source": "bx_expense_item_get_expense_item", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L27", "weight": 1.0}, {"source": "bx_expense_item_get_expense_item", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L27", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_expense_item_py", "target": "bx_expense_item_create_expense_item", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L40", "weight": 1.0}, {"source": "bx_expense_item_create_expense_item", "target": "expenseitemcreate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L40", "weight": 1.0}, {"source": "bx_expense_item_create_expense_item", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L40", "weight": 1.0}, {"source": "bx_expense_item_create_expense_item", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L40", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_expense_item_py", "target": "bx_expense_item_update_expense_item", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L56", "weight": 1.0}, {"source": "bx_expense_item_update_expense_item", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L56", "weight": 1.0}, {"source": "bx_expense_item_update_expense_item", "target": "expenseitemupdate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L56", "weight": 1.0}, {"source": "bx_expense_item_update_expense_item", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L56", "weight": 1.0}, {"source": "bx_expense_item_update_expense_item", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L56", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_expense_item_py", "target": "bx_expense_item_delete_expense_item", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L77", "weight": 1.0}, {"source": "bx_expense_item_delete_expense_item", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L77", "weight": 1.0}, {"source": "bx_expense_item_delete_expense_item", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L77", "weight": 1.0}, {"source": "bx_expense_item_delete_expense_item", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L77", "weight": 1.0}], "raw_calls": [{"caller_nid": "bx_expense_item_get_expense_item_tree", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L21"}, {"caller_nid": "bx_expense_item_get_expense_item_tree", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L21"}, {"caller_nid": "bx_expense_item_get_expense_item_tree", "callee": "get_item_tree", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L22"}, {"caller_nid": "bx_expense_item_get_expense_item_tree", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L23"}, {"caller_nid": "bx_expense_item_get_expense_item_tree", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L23"}, {"caller_nid": "bx_expense_item_get_expense_item", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L32"}, {"caller_nid": "bx_expense_item_get_expense_item", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L32"}, {"caller_nid": "bx_expense_item_get_expense_item", "callee": "get_by_id", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L33"}, {"caller_nid": "bx_expense_item_get_expense_item", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L35"}, {"caller_nid": "bx_expense_item_get_expense_item", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L36"}, {"caller_nid": "bx_expense_item_get_expense_item", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L36"}, {"caller_nid": "bx_expense_item_create_expense_item", "callee": "create", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L46"}, {"caller_nid": "bx_expense_item_create_expense_item", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L46"}, {"caller_nid": "bx_expense_item_create_expense_item", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L47"}, {"caller_nid": "bx_expense_item_create_expense_item", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L48"}, {"caller_nid": "bx_expense_item_create_expense_item", "callee": "rollback", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L50"}, {"caller_nid": "bx_expense_item_create_expense_item", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L51"}, {"caller_nid": "bx_expense_item_create_expense_item", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L52"}, {"caller_nid": "bx_expense_item_create_expense_item", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L52"}, {"caller_nid": "bx_expense_item_update_expense_item", "callee": "update", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L63"}, {"caller_nid": "bx_expense_item_update_expense_item", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L64"}, {"caller_nid": "bx_expense_item_update_expense_item", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L67"}, {"caller_nid": "bx_expense_item_update_expense_item", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L68"}, {"caller_nid": "bx_expense_item_update_expense_item", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L69"}, {"caller_nid": "bx_expense_item_update_expense_item", "callee": "rollback", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L71"}, {"caller_nid": "bx_expense_item_update_expense_item", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L72"}, {"caller_nid": "bx_expense_item_update_expense_item", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L73"}, {"caller_nid": "bx_expense_item_update_expense_item", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L73"}, {"caller_nid": "bx_expense_item_delete_expense_item", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L82"}, {"caller_nid": "bx_expense_item_delete_expense_item", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L82"}, {"caller_nid": "bx_expense_item_delete_expense_item", "callee": "get_by_id", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L83"}, {"caller_nid": "bx_expense_item_delete_expense_item", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L85"}, {"caller_nid": "bx_expense_item_delete_expense_item", "callee": "soft_delete", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L86"}, {"caller_nid": "bx_expense_item_delete_expense_item", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L87"}, {"caller_nid": "bx_expense_item_delete_expense_item", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py", "source_location": "L88"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/f287214c72345e41d9d122ca55b4d3e279635d99cbf10ed530de0ac32374f31c.json b/backend/graphify-out/cache/ast/f287214c72345e41d9d122ca55b4d3e279635d99cbf10ed530de0ac32374f31c.json new file mode 100644 index 000000000..50a677f85 --- /dev/null +++ b/backend/graphify-out/cache/ast/f287214c72345e41d9d122ca55b4d3e279635d99cbf10ed530de0ac32374f31c.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_attachment_py", "label": "attachment.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/attachment.py", "source_location": "L1"}, {"id": "bx_attachment_attachmentout", "label": "AttachmentOut", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/attachment.py", "source_location": "L9"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_attachment_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/attachment.py", "source_location": "L1", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_attachment_py", "target": "pydantic", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/attachment.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_attachment_py", "target": "pydantic_alias_generators", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/attachment.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_attachment_py", "target": "app_schemas_bx_common", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/attachment.py", "source_location": "L6", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_attachment_py", "target": "bx_attachment_attachmentout", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/attachment.py", "source_location": "L9", "weight": 1.0}, {"source": "bx_attachment_attachmentout", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/attachment.py", "source_location": "L9", "weight": 1.0}], "raw_calls": []} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/fe31dec3025948c4a34c5543e8ff1eeedca90c843821b8a2aa3aecedd04b188b.json b/backend/graphify-out/cache/ast/fe31dec3025948c4a34c5543e8ff1eeedca90c843821b8a2aa3aecedd04b188b.json new file mode 100644 index 000000000..12cd2e66a --- /dev/null +++ b/backend/graphify-out/cache/ast/fe31dec3025948c4a34c5543e8ff1eeedca90c843821b8a2aa3aecedd04b188b.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_models_bx_models_py", "label": "bx_models.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L1"}, {"id": "models_bx_models_bxexpenseitem", "label": "BxExpenseItem", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L10"}, {"id": "base", "label": "Base", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "models_bx_models_bxworkflowdef", "label": "BxWorkflowDef", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L33"}, {"id": "models_bx_models_bxworkflownode", "label": "BxWorkflowNode", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L61"}, {"id": "models_bx_models_bxadvanceapply", "label": "BxAdvanceApply", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L85"}, {"id": "models_bx_models_bxadvanceapproval", "label": "BxAdvanceApproval", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L118"}, {"id": "models_bx_models_bxreimburseapply", "label": "BxReimburseApply", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L141"}, {"id": "models_bx_models_bxreimbursedetail", "label": "BxReimburseDetail", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L177"}, {"id": "models_bx_models_bxreimburseapproval", "label": "BxReimburseApproval", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L198"}, {"id": "models_bx_models_bxreimburseoffset", "label": "BxReimburseOffset", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L221"}, {"id": "models_bx_models_bxattachment", "label": "BxAttachment", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L239"}, {"id": "models_bx_models_rationale_1", "label": "\u62a5\u9500\uff08bx\uff09\u6a21\u5757\u6570\u636e\u6a21\u578b \u2014 \u5bf9\u9f50 docs/sql/20260606_bx_tables.sql", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L1"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_bx_models_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L2", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_bx_models_py", "target": "sqlalchemy", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_bx_models_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L5", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_bx_models_py", "target": "app_core_database", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L7", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_bx_models_py", "target": "models_bx_models_bxexpenseitem", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L10", "weight": 1.0}, {"source": "models_bx_models_bxexpenseitem", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L10", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_bx_models_py", "target": "models_bx_models_bxworkflowdef", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L33", "weight": 1.0}, {"source": "models_bx_models_bxworkflowdef", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L33", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_bx_models_py", "target": "models_bx_models_bxworkflownode", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L61", "weight": 1.0}, {"source": "models_bx_models_bxworkflownode", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L61", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_bx_models_py", "target": "models_bx_models_bxadvanceapply", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L85", "weight": 1.0}, {"source": "models_bx_models_bxadvanceapply", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L85", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_bx_models_py", "target": "models_bx_models_bxadvanceapproval", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L118", "weight": 1.0}, {"source": "models_bx_models_bxadvanceapproval", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L118", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_bx_models_py", "target": "models_bx_models_bxreimburseapply", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L141", "weight": 1.0}, {"source": "models_bx_models_bxreimburseapply", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L141", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_bx_models_py", "target": "models_bx_models_bxreimbursedetail", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L177", "weight": 1.0}, {"source": "models_bx_models_bxreimbursedetail", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L177", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_bx_models_py", "target": "models_bx_models_bxreimburseapproval", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L198", "weight": 1.0}, {"source": "models_bx_models_bxreimburseapproval", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L198", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_bx_models_py", "target": "models_bx_models_bxreimburseoffset", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L221", "weight": 1.0}, {"source": "models_bx_models_bxreimburseoffset", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L221", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_bx_models_py", "target": "models_bx_models_bxattachment", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L239", "weight": 1.0}, {"source": "models_bx_models_bxattachment", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L239", "weight": 1.0}, {"source": "models_bx_models_rationale_1", "target": "users_zlwu_work_00code_shanxia2_0_backend_app_models_bx_models_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L1", "weight": 1.0}], "raw_calls": []} \ No newline at end of file diff --git a/backend/graphify-out/cache/stat-index.json b/backend/graphify-out/cache/stat-index.json index 19b99b80c..c745677b3 100644 --- a/backend/graphify-out/cache/stat-index.json +++ b/backend/graphify-out/cache/stat-index.json @@ -1 +1 @@ -{"/Users/zlwu/work/00code/shanxia2.0/backend/start-prod.sh":{"size":5362,"mtime_ns":1780108930820143914,"hash":"712114b9a96e370660a7d8455b0cb014b6387a352e25c114bb396bc9815d48e6"},"/Users/zlwu/work/00code/shanxia2.0/backend/start.sh":{"size":9548,"mtime_ns":1780114661446983244,"hash":"4d632863e8a0cd81194b491d83a0218a4157435ae812dec76a6f6197b4d48e57"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/__init__.py":{"size":21,"mtime_ns":1780113982281973984,"hash":"60a04ff08fd97084e83ea809fd13feda6d2848be20ebf309e31fc1dad7523230"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py":{"size":4532,"mtime_ns":1780201410113131199,"hash":"276f225cb323016de117038efef175f4e91a9474bced64b43dc0ea4bd976b057"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/tasks/__init__.py":{"size":1634,"mtime_ns":1780201410115316494,"hash":"9ee508b67da0044015aff95ebddaf52a5ba551ccfee772bf134ca88e2d482e72"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/auth.py":{"size":8744,"mtime_ns":1780201410112435240,"hash":"df84858ae3cea547e5ae0174a2ee76cd4df8835f4b75827843369e74ea91098b"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/api_crypto.py":{"size":1870,"mtime_ns":1780108930724444498,"hash":"c04b748aea86890a5971f749523c7b17dbad1ddd6f9f7f07a5679d159c984e33"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/login_crypto.py":{"size":3858,"mtime_ns":1780108930725155710,"hash":"b82d51afabf2293a9cb1fb2e5f994c383948e7f47ea95fe674686b4f3f3342b1"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/config.py":{"size":5505,"mtime_ns":1780131767561871048,"hash":"bd8940c34f0feef909d268e6af9fee67705b0a95eae4906ca82e712097e20748"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/wechat_pay.py":{"size":23585,"mtime_ns":1780108930725768130,"hash":"3d52265ce65d21e7103f94afa1e8547aee0823b5ea6d65c50317436ac81fb4fc"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/api_request_log_middleware.py":{"size":8978,"mtime_ns":1780108930724617124,"hash":"198e0861bb9933a7cee510524c4802001543468727a45e779bc4684d0214ffe2"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/database.py":{"size":1173,"mtime_ns":1780108930724965209,"hash":"8c45b5a56110164f2488c9c8db27db62fe77f0997cf22c53991c0bd1dde2043a"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/security.py":{"size":728,"mtime_ns":1780108930725470004,"hash":"df0f01115064f7b8de1c81dbe9a6db39360c236610b68c33b3234a51d7f0025b"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/request_payload.py":{"size":2842,"mtime_ns":1780108930725350836,"hash":"e9937151530ab1417ef297aef59111977725cf90be2a8fa76c00a0618789aba0"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/__init__.py":{"size":61,"mtime_ns":1780108930724312414,"hash":"3dd1842ee59b0c804176b03b4b8a323bd4a252b7feb1bbc32db64f3a8928570e"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/response.py":{"size":1824,"mtime_ns":1780108930725412462,"hash":"f1739352d65ea8287d76e282a59553aa8d63c97e35764c64ac378aa5bd9c347e"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/menu_guard.py":{"size":1611,"mtime_ns":1780108930725223002,"hash":"3e26077288c3620a4780038b891a326206b45bffe00aca545bdae30172487235"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/db_collation.py":{"size":548,"mtime_ns":1780108930725025043,"hash":"0c680e25a18244ca839a7de6ed1f4313b33bc8da118d89c463aee1b6af00c6f9"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/context.py":{"size":421,"mtime_ns":1780108930724824458,"hash":"83a10aee67162374993c10a30bf8bb8bd9c4b35cf48f42c832415ccebd91660f"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/utils.py":{"size":1498,"mtime_ns":1780108930725607296,"hash":"09323693661c1d4560458b86a954128ccff82bbaf6522da0b44f24da99ddf9ea"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/storage.py":{"size":13209,"mtime_ns":1780108930725541087,"hash":"c3138253eb34f65b09f4436e037fb3179d947f84d3b5fef007ed9a8e3bb135ee"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/order_status_compat.py":{"size":2828,"mtime_ns":1780108930725284669,"hash":"5349e5a0745ee6734c4a995337779307adefc46f453906171988a77de2081540"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/exceptions.py":{"size":4946,"mtime_ns":1780108930725084335,"hash":"79c997d964bca1a4f12f2b92fb1f181fdb9e2b3cf72eae39f4cc164d23794fd7"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/data_scope.py":{"size":5949,"mtime_ns":1780108930724890709,"hash":"c92a7dbcfe3d7440bfafc83a76e9ed431e2b054ddd95bc4bfac52b241635ab17"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/admin_request_json.py":{"size":2669,"mtime_ns":1780108930724378914,"hash":"4f68b3cf84291e7bddad6ecf4bb4d29ca5e1ec246a9f7f9c4cf5909d0ec1174a"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/api_crypto_middleware.py":{"size":11243,"mtime_ns":1780108930724537332,"hash":"0c2045d182138ec8e333356d36d418004a53948e2eda494cd419a36365ebbfae"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/wechat_message.py":{"size":11194,"mtime_ns":1780108930725684255,"hash":"5086070deb14d99d1a69e419b2299ec4ea2fe128de80fe321b0c3c531fea7a88"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/models/models.py":{"size":35246,"mtime_ns":1780201410114502659,"hash":"19d210fd54135bc8e94afdbce8812043a2fb92d2889f4317d4afe3f9c8aa6936"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/models/__init__.py":{"size":1155,"mtime_ns":1780112936528830094,"hash":"67396fe48b60d10ff4f4ff2fadf227fb5d15ef5fc873005c271023c910ce2ef5"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/models/base.py":{"size":2090,"mtime_ns":1780108930807298966,"hash":"fda71bbe87dcb29c6f0ffa9337e9f39c2c06d912df6cb75d521f0e87c7c73c6d"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/auth.py":{"size":1315,"mtime_ns":1780108930808197763,"hash":"018b82e42bbb055250549c54ba700ee01cf28cd753397d6c162f9e60185908e5"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/user.py":{"size":1911,"mtime_ns":1780108930810184774,"hash":"3d3c159018cab6ed1cd3de7034ffb1fe77a272b9099901a1882d07aa15fc90a0"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/__init__.py":{"size":1159,"mtime_ns":1780112973062398026,"hash":"4e8b0bda6680e2c8740c380b96eedb859ddc584a81bad568a18ba6beb001e480"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/menu.py":{"size":816,"mtime_ns":1780108930808681891,"hash":"17e35f2d7bf95cac00d81357f69fdcbe849e855daa05570c3302de8182b4df11"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/attachment.py":{"size":328,"mtime_ns":1780108930808144846,"hash":"300b74c51c66cb0fbf8c9f4d84a4b7bf29dcc9b6a67d922f8e1d0df05f9fc5bf"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/common.py":{"size":555,"mtime_ns":1780108930808426681,"hash":"caa0c03398e54017b25cca2a16cf8d232a59739893a16e4c33b51a5316d8964f"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/workflow.py":{"size":3949,"mtime_ns":1780108930810245983,"hash":"e5aed7afcf903c838a35cdaf2230a93d221c63f5c6baa1497e455afac8587a9a"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/leave.py":{"size":1449,"mtime_ns":1780108930808614098,"hash":"c54098a69bd4490290dd8d7809ed8764a3f38e8c38692eeef2b505293cdfaeb8"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/sample_code.py":{"size":12322,"mtime_ns":1780114002126415047,"hash":"5b74838b3920f9182d092f8a1b721697f1a62e8b90728b9f54101dbb96baa40e"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/post.py":{"size":4980,"mtime_ns":1780114001618387697,"hash":"7f283f282ae58414179cc7763a4cc681930666c7efd4c2887fcd66e4b3896732"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/user.py":{"size":13310,"mtime_ns":1780201410112732115,"hash":"4ad218f8ad0c21201866688941352bcde93e705d9086abb7f41b87e2c5c51157"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/dict_type.py":{"size":5353,"mtime_ns":1780108930727360347,"hash":"98ffd889f8dca70bd22e5801ccc13d3d10c5d883ae06428ba3edde84a345c4fe"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/tenant.py":{"size":5475,"mtime_ns":1780108930731996832,"hash":"d742062cce9f72daa523e5fc5375b9c835c182916b3db5ee0ff30c121fce61b4"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/biz_no_generator.py":{"size":2534,"mtime_ns":1780108930726090799,"hash":"e6bd375987e47f6ee80294686db64377938a286767bb28324f3eda2ad39ad546"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/__init__.py":{"size":169,"mtime_ns":1780108930725878047,"hash":"340e3c08174d61829012879e684f6166803b88c819c58b54a16a11d210dea85e"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/role.py":{"size":9233,"mtime_ns":1780114000027300001,"hash":"4e34836d4496b0af1449ad1f3a79e96bb2d642d6df369c7d62310fd92f95982b"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/menu.py":{"size":7416,"mtime_ns":1780113999264097679,"hash":"20bb62c7a3fcfca73462e643cd409d02b7d056620e4b53e44a5bf5a0c9edd402"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/site.py":{"size":6341,"mtime_ns":1780113998462910381,"hash":"c272ba4dfc2080cff859f55a180f35b48d7d74bb09a2ef8606d5a4fb01e99bdf"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/api_request_log.py":{"size":4349,"mtime_ns":1780108930725945840,"hash":"fb7f1e1413cee1b25ff401c150940bc769c4033140ef3249cd41bbe24a618488"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/dict_data.py":{"size":5054,"mtime_ns":1780112650117618702,"hash":"625ecf04ea9729969f643fba6a8c7cd789a8bfb67dbc76ce46f3e2b4122c8545"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/ethnic.py":{"size":1012,"mtime_ns":1780108930727448890,"hash":"7de1eb94b9fbb897a7b362ffdb5df5ab1020aa7247c7c37a2a2a2aa5cdbac8ad"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/workflow.py":{"size":24868,"mtime_ns":1780113998128399686,"hash":"41922492aec3a5030271abfc51444cb17e07cb4294deff92e23887a66dd78fae"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/dept.py":{"size":6420,"mtime_ns":1780113996907595730,"hash":"8ecc752ff4769e1a94f7dbd800bbf26ca6dc8118a627c7921dfd3419d1accee8"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/base.py":{"size":5360,"mtime_ns":1780108930726010257,"hash":"49fdea023825ea249923b1cb02d353dcede1850158d3555a2082887925e69b9b"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/leave.py":{"size":4620,"mtime_ns":1780113996115415235,"hash":"bc63d2287b05db9405c7902d9f8cd7c25e1fddf64572d05f5a7703480af0a261"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/public.py":{"size":10496,"mtime_ns":1780242127112912030,"hash":"c3b4d65b73ce9764fa60fa7e14e862c4644c7a47fd92d4699693bfbc0950d913"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/__init__.py":{"size":565,"mtime_ns":1780201410110465278,"hash":"cfdb87d67624346c0cbeb097283f8ad49f5426f168bdb7e2f3d79a0da340cf8a"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/menu.py":{"size":30938,"mtime_ns":1780211169108695182,"hash":"952658803753e0b8a210e61865daf1bd690cfb0ef8adc815e6d2a185099b8619"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/admin.py":{"size":49123,"mtime_ns":1780736311908714839,"hash":"5a444ae748b236a475977d7f2224264d03548e1c867a67a83d3ed5be1a8fbab7"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/workflow.py":{"size":19069,"mtime_ns":1780113993760417546,"hash":"d99ca63f875d76669fa648b5c1645755e91ce8e278da3848cd24f783d9c8fcb2"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/leave.py":{"size":6941,"mtime_ns":1780108930722643529,"hash":"e90d2fd6b3f1417f7ed6a5481a4bb09e5ca147e92645ee72f2f47d19e9723828"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/workflow_callback.py":{"size":3584,"mtime_ns":1780108930810395025,"hash":"a033c13c7bee7f4b636198c1efa47f2abba0d890657e52b0b7057568d4d83a52"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/workflow_engine.py":{"size":14042,"mtime_ns":1780113992914903818,"hash":"5c06a59c734f598d5c7ebe95d30f048ba3a97302b938bc9320d97e5a053c7aef"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/web_auth_roles.py":{"size":3432,"mtime_ns":1780201410114958118,"hash":"3d2409f428918cd8b2723fffc456290d0a83e379cbe166727efd0e790504e993"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/ws/__init__.py":{"size":26,"mtime_ns":1780108930810617026,"hash":"d4357444e9b5b0a8593000fb6e4dc37469ebe008e675bf42ec0d55d463f88fc6"},"/Users/zlwu/work/00code/shanxia2.0/backend/README.md":{"size":2752,"mtime_ns":1780114581291841672,"hash":"f5def8d25af0556a443c31a73e81f958883b60cfed8b31fac457f2832c2b6d58"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py":{"size":64202,"mtime_ns":1780743830221045470,"hash":"eb2d69511ac768622bcb47e55a4d0263fb9098409f633b9ab480e8bdec37b7ef"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/__init__.py":{"size":0,"mtime_ns":1780201410213315055,"hash":"a6d57250b43cbdecb56b7a9d55d29642b808be368733e14b7df2bd196f54d64d"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/product.py":{"size":7314,"mtime_ns":1780743830220875345,"hash":"75859ecc807b96f8559ec1ac1a6452c207e860f9d2bed1aa2ab7574fd37c3d85"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/__init__.py":{"size":0,"mtime_ns":1780201410210254759,"hash":"9b8fcaaabdc85883c9ef392b596b60db0bd3b2f1623fc8012e55003f234a9875"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py":{"size":24164,"mtime_ns":1780743830250534751,"hash":"ef1950976cc858bc0d1eba9b31968e736491056a3d15d86079df690662972249"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/crm.py":{"size":134947,"mtime_ns":1780743830246653903,"hash":"aa2b96720dcf3182deb45e888ec96b737709fa04b9786d4e1fc984925c9829a6"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/tasks/customer_pool.py":{"size":9646,"mtime_ns":1780202350147822837,"hash":"4f0ab87e7a12534011b69f58079ca206d5443eee594849ab4aae728bb847de0d"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/tenant_context.py":{"size":693,"mtime_ns":1780201410210198550,"hash":"0a810658d894d35b9e981faa1448e1d02d617ecbe563bd711f6ce5a8f9db1861"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/pool_rule.py":{"size":1848,"mtime_ns":1780202212734233591,"hash":"b0331e17e801d206fba2fa89df1a66d1758d850dc5547e076218e16c8211a3e8"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/customer_pool.py":{"size":1340,"mtime_ns":1780202198698231150,"hash":"7a6b76e0e39ada0783dfbee92280e9f06299b6662b08abb13ab1b0d9c70fe370"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/customer_follow.py":{"size":3716,"mtime_ns":1780201410213934514,"hash":"3979cecd62a4f2ee5dd925639572208e36b397620d91a9ce49a59adfcb2a9d55"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/customer.py":{"size":13811,"mtime_ns":1780713560843469785,"hash":"4102b586c625782b58c0a70a0c94f1c203dff427dc1708316d23a3689d78fa9c"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/contact.py":{"size":4856,"mtime_ns":1780742840975948859,"hash":"60c714cc254d70f39b43205bbcb7fb4c563e807ddd070eefaaa952ae96048377"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/pool_rule.py":{"size":8059,"mtime_ns":1780202270065620774,"hash":"a491d929e43bfe29a5207396039449a9c58788b7d10d5547a01fd49d1d47f8ba"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/customer_follow.py":{"size":6890,"mtime_ns":1780730768313192794,"hash":"aaa23bf3dbbf85ff162dde638384ba26357ba72710d14d24357c5e73ab39ae8e"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/customer.py":{"size":21791,"mtime_ns":1780713573612717052,"hash":"418a2eeba8f6c8f8d0e30ab4edbeb6af5c936e3012e279a1c60d3a22e232740f"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/contact.py":{"size":8718,"mtime_ns":1780742842033485622,"hash":"c364ede84e65795c465e44737c1a85d5f37a4c8351fdf82ed9cf2145159f802e"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/generate_dict_reimport_sql.py":{"size":10692,"mtime_ns":1780201410245078685,"hash":"a4faaf61f246dad04ec3933083ab4348e5d2987ae1ed34b1f6d8f19535642a05"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/statistics.py":{"size":412,"mtime_ns":1780201410215906642,"hash":"fb1957d0fe87f22c37ba5bdaa5f3bf2bb4a40685a21a05dce98326581bb4844b"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/customer_pool.py":{"size":3725,"mtime_ns":1780202237342131933,"hash":"0f26ac2bcb585241f25302787184db4db422934e5d896ca25bbe7efaf61d92c4"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/statistics.py":{"size":5239,"mtime_ns":1780201410212581471,"hash":"9f3b08eaa53b094e6c1c2c7e16a383408ff9276baf1d55a2abba3076d74331f1"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/invoice_info.py":{"size":3104,"mtime_ns":1780406386885207867,"hash":"a59df3aed2c976904e3b5325fedd1621435b322645aa71349f3356e0cdc17424"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/oss.py":{"size":1584,"mtime_ns":1780201410212966513,"hash":"9349799b02a3531d8e1b46f9f70d3b6630afd7306663c779bd11f25448a16013"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/invoice_info.py":{"size":5816,"mtime_ns":1780406390461433397,"hash":"1fd30d3af0fbb1cf9dcbdd5899d6a90d1e814ff67406246830f58d39bfb5540f"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/opportunity.py":{"size":9391,"mtime_ns":1780242127112297110,"hash":"2e068961824a1d3ec0da0a94a3c494b63582b3251e5f4e030ce3e12897e85002"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/contract.py":{"size":10565,"mtime_ns":1780743830220982137,"hash":"45d9dfeb58bda22227fcd242c738086431616466bb8ee9f1466927d75d4bec48"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/opportunity.py":{"size":40914,"mtime_ns":1780242127112316277,"hash":"c052a9663d4d1f28f5d04a2837a43a9d257bd1a4b3843b1f6f888113853dbcad"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/contract.py":{"size":88975,"mtime_ns":1780743830220954428,"hash":"3b566fb1e7607718a36af65a8db127de8462250ee773d928677dca998b6ce933"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/monitor/__init__.py":{"size":1,"mtime_ns":1780242127108406092,"hash":"bb5b318d3cb224c50a2e0286e145f89ea7278437437fd17d7c865d67ad148076"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/monitor/operlog.py":{"size":855,"mtime_ns":1780201410216225893,"hash":"8148db2d3d06053a61170cd7490b042f26ad3eb20322688688d4fcb35a848ccf"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/monitor/__init__.py":{"size":1,"mtime_ns":1780242127112307360,"hash":"0592c62ce1172d93aca98cbd9aaa54b9c2668022abf3581249516472db312293"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/monitor/oper_log.py":{"size":5032,"mtime_ns":1780201410212860471,"hash":"1b67d7003faa6c80318471de95bdcbeba7017f8d4b62f78ab657c67225e3be4c"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/monitor.py":{"size":2117,"mtime_ns":1780201410210099217,"hash":"d2a936ccd5bdae4ba8bfc7e1ed6f8375e2af3037817e71257ce26710b6abe237"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/clue.py":{"size":9417,"mtime_ns":1780215022189075651,"hash":"2676afaecac4bb6da185674a9421dfbd40834ca21520adf66bb6b175fb728677"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/clue_follow.py":{"size":6501,"mtime_ns":1780215022193542578,"hash":"f7fb6fb070698c047e5ce43d331ca83db85cf054dc63cc328964881d20e35d37"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/clue.py":{"size":24565,"mtime_ns":1780215022193645078,"hash":"5ed4483243252782afb0e1d195015c332087169fed3a4c628aadfcf201e637f0"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/clue_statistics.py":{"size":10556,"mtime_ns":1780743830229799879,"hash":"e00b5b5ffad38e3cfc30e3a49eb850e7e65d7e696a534901acce71a0ccd171b8"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/opportunity_follow.py":{"size":8559,"mtime_ns":1780242127112151734,"hash":"fa223fc4f89d1cd34d464df0d0ca217ea23f43c47227f219d92ab4d971ebe163"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/opportunity_product.py":{"size":9152,"mtime_ns":1780242127021803192,"hash":"3582ab562ab1b84723d9b4d8f6e8fe8e5c208a8374ddad9073e3594c2fe946c4"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/crm_export_columns.py":{"size":9594,"mtime_ns":1780743830255260394,"hash":"b20594507aab09cebc3d540acad04547bf780cac9c885187138f5d64718ed513"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/__init__.py":{"size":0,"mtime_ns":1780242127043319167,"hash":"a66deceefc987198863f61b8aa1b5715483a69c4a15ef47cd5586c5d8e429b97"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/excel_export.py":{"size":4411,"mtime_ns":1780242127113233948,"hash":"7fbde3fca845e4705487e7f801caee308bcc0c99a9da7d0c99681a96eaaf6076"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/supplier_info.py":{"size":3679,"mtime_ns":1780242127112269527,"hash":"8b797e9dee6ac7ff806a8ea23bef5fedce648502ea23287e1b417e9f96d22c2e"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/supplier_info.py":{"size":6127,"mtime_ns":1780242127113488782,"hash":"6d9e4f1a4c97bf9f020fcce9cfd66735bf2cce2becdc1b47fc366bbc40c30926"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py":{"size":12910,"mtime_ns":1780743830227404578,"hash":"fc1e19960a9431bb92d2fa1a4eb252d297a0b68f6cc88bd793297e9f4c56a949"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/quote.py":{"size":5961,"mtime_ns":1780745856749183842,"hash":"29c52786df396aededd0850e3c8a3a36f3fb6a952af03adbe1768dae212b6804"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote.py":{"size":46387,"mtime_ns":1780745858498556120,"hash":"9d90392069b624573be2086faf2f6893ff30fa9dc9cdad5fba19efde8f4bfde0"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py":{"size":9689,"mtime_ns":1780242127068587825,"hash":"6851b91549b1a09c8990f80543966ca4bb35453a080d7b1e8791c217c1583af2"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_share_log.py":{"size":3926,"mtime_ns":1780242127112437528,"hash":"8ea76d948a3440b43aac6efb353aa10773a2b95765c416aa72135e74695d4f68"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_approval.py":{"size":8620,"mtime_ns":1780736832004071102,"hash":"17ba1437b70857f9826087f24ac1305a74f366b6d0358ccc78948860f55dc35b"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/crm_quote_pdf.py":{"size":9877,"mtime_ns":1780242127112382277,"hash":"fec04892fccccc3601fbeb012c92c77110496910be44102de40b4610148fa58a"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/crm_quote_routes.py":{"size":23911,"mtime_ns":1780736833576480031,"hash":"9fa1fb08d3b1f1fd3006f19063083beb3eae0d5a447f8dbc37575db1c0df7166"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/contract_approval.py":{"size":13958,"mtime_ns":1780743830253744764,"hash":"3d7fbbb90728568a2577e52d8986ccbec8f599d04a0ef9e330939d1fe729bc98"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/crm_contract_routes.py":{"size":27213,"mtime_ns":1780743830220906928,"hash":"012206a175e5519cd321c95852ef5957b436a4be74481bd637088ffd27cace21"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/contract_template.py":{"size":2897,"mtime_ns":1780229101351431207,"hash":"935adfc7659e31201cd83ba8387bf6abcb39e7cdc63fa4692d699ed874cf113b"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/contract_change.py":{"size":2496,"mtime_ns":1780229100306468735,"hash":"05af42f088f6cc400c1e3445d4a2c96670edf482328b361aa4f231230d958729"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/contract_template.py":{"size":11858,"mtime_ns":1780229131746659196,"hash":"b9bdbe6a33c933aefcb25cc57e94b2fd2dc75f8e5822434f3912aa0153dfca00"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/contract_change.py":{"size":15985,"mtime_ns":1780229123819597506,"hash":"771b110d3d136c45106dd61171c724c559b5b4bf572ea7b8c2b648f0bfe629c1"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/crm_contract_sub_routes.py":{"size":23996,"mtime_ns":1780743830250271833,"hash":"154356115004a1b5674659219e40714eadf59a3581888ce9895fe792c8d00a82"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/attachment_biz.py":{"size":904,"mtime_ns":1780360597164980803,"hash":"aed5c1a7d86743861b5a541b60b6de8e7e53fcd2f98ae7e6386274c1755e301d"}} \ No newline at end of file +{"/Users/zlwu/work/00code/shanxia2.0/backend/start-prod.sh":{"size":5362,"mtime_ns":1780108930820143914,"hash":"712114b9a96e370660a7d8455b0cb014b6387a352e25c114bb396bc9815d48e6"},"/Users/zlwu/work/00code/shanxia2.0/backend/start.sh":{"size":9548,"mtime_ns":1780114661446983244,"hash":"4d632863e8a0cd81194b491d83a0218a4157435ae812dec76a6f6197b4d48e57"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/__init__.py":{"size":21,"mtime_ns":1780113982281973984,"hash":"60a04ff08fd97084e83ea809fd13feda6d2848be20ebf309e31fc1dad7523230"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py":{"size":4650,"mtime_ns":1780750556882139523,"hash":"5906745ed3a9a4a62ccfec436a8fac62e8c6cb5c5a61715bb1979a7e5bef804a"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/tasks/__init__.py":{"size":1634,"mtime_ns":1780201410115316494,"hash":"9ee508b67da0044015aff95ebddaf52a5ba551ccfee772bf134ca88e2d482e72"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/auth.py":{"size":8744,"mtime_ns":1780201410112435240,"hash":"df84858ae3cea547e5ae0174a2ee76cd4df8835f4b75827843369e74ea91098b"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/api_crypto.py":{"size":1870,"mtime_ns":1780108930724444498,"hash":"c04b748aea86890a5971f749523c7b17dbad1ddd6f9f7f07a5679d159c984e33"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/login_crypto.py":{"size":3858,"mtime_ns":1780108930725155710,"hash":"b82d51afabf2293a9cb1fb2e5f994c383948e7f47ea95fe674686b4f3f3342b1"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/config.py":{"size":5692,"mtime_ns":1780750556882308648,"hash":"a1404064f42d27efcdf287062da76d4cc863112aa1f2ace1bf86c2f72e8faef9"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/wechat_pay.py":{"size":23585,"mtime_ns":1780108930725768130,"hash":"3d52265ce65d21e7103f94afa1e8547aee0823b5ea6d65c50317436ac81fb4fc"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/api_request_log_middleware.py":{"size":8978,"mtime_ns":1780108930724617124,"hash":"198e0861bb9933a7cee510524c4802001543468727a45e779bc4684d0214ffe2"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/database.py":{"size":1173,"mtime_ns":1780108930724965209,"hash":"8c45b5a56110164f2488c9c8db27db62fe77f0997cf22c53991c0bd1dde2043a"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/security.py":{"size":728,"mtime_ns":1780108930725470004,"hash":"df0f01115064f7b8de1c81dbe9a6db39360c236610b68c33b3234a51d7f0025b"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/request_payload.py":{"size":2842,"mtime_ns":1780108930725350836,"hash":"e9937151530ab1417ef297aef59111977725cf90be2a8fa76c00a0618789aba0"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/__init__.py":{"size":61,"mtime_ns":1780108930724312414,"hash":"3dd1842ee59b0c804176b03b4b8a323bd4a252b7feb1bbc32db64f3a8928570e"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/response.py":{"size":1824,"mtime_ns":1780108930725412462,"hash":"f1739352d65ea8287d76e282a59553aa8d63c97e35764c64ac378aa5bd9c347e"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/menu_guard.py":{"size":1611,"mtime_ns":1780108930725223002,"hash":"3e26077288c3620a4780038b891a326206b45bffe00aca545bdae30172487235"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/db_collation.py":{"size":548,"mtime_ns":1780108930725025043,"hash":"0c680e25a18244ca839a7de6ed1f4313b33bc8da118d89c463aee1b6af00c6f9"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/context.py":{"size":421,"mtime_ns":1780108930724824458,"hash":"83a10aee67162374993c10a30bf8bb8bd9c4b35cf48f42c832415ccebd91660f"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/utils.py":{"size":1498,"mtime_ns":1780108930725607296,"hash":"09323693661c1d4560458b86a954128ccff82bbaf6522da0b44f24da99ddf9ea"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/storage.py":{"size":13209,"mtime_ns":1780108930725541087,"hash":"c3138253eb34f65b09f4436e037fb3179d947f84d3b5fef007ed9a8e3bb135ee"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/order_status_compat.py":{"size":2828,"mtime_ns":1780108930725284669,"hash":"5349e5a0745ee6734c4a995337779307adefc46f453906171988a77de2081540"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/exceptions.py":{"size":4946,"mtime_ns":1780108930725084335,"hash":"79c997d964bca1a4f12f2b92fb1f181fdb9e2b3cf72eae39f4cc164d23794fd7"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/data_scope.py":{"size":5949,"mtime_ns":1780108930724890709,"hash":"c92a7dbcfe3d7440bfafc83a76e9ed431e2b054ddd95bc4bfac52b241635ab17"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/admin_request_json.py":{"size":2669,"mtime_ns":1780108930724378914,"hash":"4f68b3cf84291e7bddad6ecf4bb4d29ca5e1ec246a9f7f9c4cf5909d0ec1174a"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/api_crypto_middleware.py":{"size":11243,"mtime_ns":1780108930724537332,"hash":"0c2045d182138ec8e333356d36d418004a53948e2eda494cd419a36365ebbfae"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/wechat_message.py":{"size":11194,"mtime_ns":1780108930725684255,"hash":"5086070deb14d99d1a69e419b2299ec4ea2fe128de80fe321b0c3c531fea7a88"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/models/models.py":{"size":35246,"mtime_ns":1780201410114502659,"hash":"19d210fd54135bc8e94afdbce8812043a2fb92d2889f4317d4afe3f9c8aa6936"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/models/__init__.py":{"size":1155,"mtime_ns":1780112936528830094,"hash":"67396fe48b60d10ff4f4ff2fadf227fb5d15ef5fc873005c271023c910ce2ef5"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/models/base.py":{"size":2090,"mtime_ns":1780108930807298966,"hash":"fda71bbe87dcb29c6f0ffa9337e9f39c2c06d912df6cb75d521f0e87c7c73c6d"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/auth.py":{"size":1315,"mtime_ns":1780108930808197763,"hash":"018b82e42bbb055250549c54ba700ee01cf28cd753397d6c162f9e60185908e5"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/user.py":{"size":1911,"mtime_ns":1780108930810184774,"hash":"3d3c159018cab6ed1cd3de7034ffb1fe77a272b9099901a1882d07aa15fc90a0"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/__init__.py":{"size":1159,"mtime_ns":1780112973062398026,"hash":"4e8b0bda6680e2c8740c380b96eedb859ddc584a81bad568a18ba6beb001e480"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/menu.py":{"size":816,"mtime_ns":1780108930808681891,"hash":"17e35f2d7bf95cac00d81357f69fdcbe849e855daa05570c3302de8182b4df11"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/attachment.py":{"size":328,"mtime_ns":1780108930808144846,"hash":"300b74c51c66cb0fbf8c9f4d84a4b7bf29dcc9b6a67d922f8e1d0df05f9fc5bf"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/common.py":{"size":555,"mtime_ns":1780108930808426681,"hash":"caa0c03398e54017b25cca2a16cf8d232a59739893a16e4c33b51a5316d8964f"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/workflow.py":{"size":3949,"mtime_ns":1780108930810245983,"hash":"e5aed7afcf903c838a35cdaf2230a93d221c63f5c6baa1497e455afac8587a9a"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/leave.py":{"size":1449,"mtime_ns":1780108930808614098,"hash":"c54098a69bd4490290dd8d7809ed8764a3f38e8c38692eeef2b505293cdfaeb8"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/sample_code.py":{"size":12322,"mtime_ns":1780114002126415047,"hash":"5b74838b3920f9182d092f8a1b721697f1a62e8b90728b9f54101dbb96baa40e"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/post.py":{"size":4980,"mtime_ns":1780114001618387697,"hash":"7f283f282ae58414179cc7763a4cc681930666c7efd4c2887fcd66e4b3896732"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/user.py":{"size":13310,"mtime_ns":1780201410112732115,"hash":"4ad218f8ad0c21201866688941352bcde93e705d9086abb7f41b87e2c5c51157"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/dict_type.py":{"size":5353,"mtime_ns":1780108930727360347,"hash":"98ffd889f8dca70bd22e5801ccc13d3d10c5d883ae06428ba3edde84a345c4fe"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/tenant.py":{"size":5475,"mtime_ns":1780108930731996832,"hash":"d742062cce9f72daa523e5fc5375b9c835c182916b3db5ee0ff30c121fce61b4"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/biz_no_generator.py":{"size":2534,"mtime_ns":1780108930726090799,"hash":"e6bd375987e47f6ee80294686db64377938a286767bb28324f3eda2ad39ad546"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/__init__.py":{"size":169,"mtime_ns":1780108930725878047,"hash":"340e3c08174d61829012879e684f6166803b88c819c58b54a16a11d210dea85e"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/role.py":{"size":9233,"mtime_ns":1780114000027300001,"hash":"4e34836d4496b0af1449ad1f3a79e96bb2d642d6df369c7d62310fd92f95982b"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/menu.py":{"size":7416,"mtime_ns":1780113999264097679,"hash":"20bb62c7a3fcfca73462e643cd409d02b7d056620e4b53e44a5bf5a0c9edd402"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/site.py":{"size":6341,"mtime_ns":1780113998462910381,"hash":"c272ba4dfc2080cff859f55a180f35b48d7d74bb09a2ef8606d5a4fb01e99bdf"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/api_request_log.py":{"size":4349,"mtime_ns":1780108930725945840,"hash":"fb7f1e1413cee1b25ff401c150940bc769c4033140ef3249cd41bbe24a618488"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/dict_data.py":{"size":5054,"mtime_ns":1780112650117618702,"hash":"625ecf04ea9729969f643fba6a8c7cd789a8bfb67dbc76ce46f3e2b4122c8545"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/ethnic.py":{"size":1012,"mtime_ns":1780108930727448890,"hash":"7de1eb94b9fbb897a7b362ffdb5df5ab1020aa7247c7c37a2a2a2aa5cdbac8ad"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/workflow.py":{"size":24868,"mtime_ns":1780113998128399686,"hash":"41922492aec3a5030271abfc51444cb17e07cb4294deff92e23887a66dd78fae"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/dept.py":{"size":6420,"mtime_ns":1780113996907595730,"hash":"8ecc752ff4769e1a94f7dbd800bbf26ca6dc8118a627c7921dfd3419d1accee8"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/base.py":{"size":5360,"mtime_ns":1780108930726010257,"hash":"49fdea023825ea249923b1cb02d353dcede1850158d3555a2082887925e69b9b"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/leave.py":{"size":4620,"mtime_ns":1780113996115415235,"hash":"bc63d2287b05db9405c7902d9f8cd7c25e1fddf64572d05f5a7703480af0a261"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/public.py":{"size":10496,"mtime_ns":1780242127112912030,"hash":"c3b4d65b73ce9764fa60fa7e14e862c4644c7a47fd92d4699693bfbc0950d913"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/__init__.py":{"size":615,"mtime_ns":1780750556883158277,"hash":"3d3ad114f06247fcff5e1a5c0d9467f4ecd507b3729c29d3bdeb3421300cca01"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/menu.py":{"size":30938,"mtime_ns":1780211169108695182,"hash":"952658803753e0b8a210e61865daf1bd690cfb0ef8adc815e6d2a185099b8619"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/admin.py":{"size":49123,"mtime_ns":1780736311908714839,"hash":"5a444ae748b236a475977d7f2224264d03548e1c867a67a83d3ed5be1a8fbab7"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/workflow.py":{"size":19069,"mtime_ns":1780113993760417546,"hash":"d99ca63f875d76669fa648b5c1645755e91ce8e278da3848cd24f783d9c8fcb2"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/leave.py":{"size":6941,"mtime_ns":1780108930722643529,"hash":"e90d2fd6b3f1417f7ed6a5481a4bb09e5ca147e92645ee72f2f47d19e9723828"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/workflow_callback.py":{"size":3584,"mtime_ns":1780108930810395025,"hash":"a033c13c7bee7f4b636198c1efa47f2abba0d890657e52b0b7057568d4d83a52"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/workflow_engine.py":{"size":14042,"mtime_ns":1780113992914903818,"hash":"5c06a59c734f598d5c7ebe95d30f048ba3a97302b938bc9320d97e5a053c7aef"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/web_auth_roles.py":{"size":3432,"mtime_ns":1780201410114958118,"hash":"3d2409f428918cd8b2723fffc456290d0a83e379cbe166727efd0e790504e993"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/ws/__init__.py":{"size":26,"mtime_ns":1780108930810617026,"hash":"d4357444e9b5b0a8593000fb6e4dc37469ebe008e675bf42ec0d55d463f88fc6"},"/Users/zlwu/work/00code/shanxia2.0/backend/README.md":{"size":2752,"mtime_ns":1780114581291841672,"hash":"f5def8d25af0556a443c31a73e81f958883b60cfed8b31fac457f2832c2b6d58"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py":{"size":64202,"mtime_ns":1780743830221045470,"hash":"eb2d69511ac768622bcb47e55a4d0263fb9098409f633b9ab480e8bdec37b7ef"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/__init__.py":{"size":0,"mtime_ns":1780201410213315055,"hash":"a6d57250b43cbdecb56b7a9d55d29642b808be368733e14b7df2bd196f54d64d"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/product.py":{"size":7314,"mtime_ns":1780743830220875345,"hash":"75859ecc807b96f8559ec1ac1a6452c207e860f9d2bed1aa2ab7574fd37c3d85"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/__init__.py":{"size":0,"mtime_ns":1780201410210254759,"hash":"9b8fcaaabdc85883c9ef392b596b60db0bd3b2f1623fc8012e55003f234a9875"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py":{"size":24164,"mtime_ns":1780743830250534751,"hash":"ef1950976cc858bc0d1eba9b31968e736491056a3d15d86079df690662972249"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/crm.py":{"size":134947,"mtime_ns":1780743830246653903,"hash":"aa2b96720dcf3182deb45e888ec96b737709fa04b9786d4e1fc984925c9829a6"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/tasks/customer_pool.py":{"size":9646,"mtime_ns":1780202350147822837,"hash":"4f0ab87e7a12534011b69f58079ca206d5443eee594849ab4aae728bb847de0d"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/tenant_context.py":{"size":693,"mtime_ns":1780201410210198550,"hash":"0a810658d894d35b9e981faa1448e1d02d617ecbe563bd711f6ce5a8f9db1861"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/pool_rule.py":{"size":1848,"mtime_ns":1780202212734233591,"hash":"b0331e17e801d206fba2fa89df1a66d1758d850dc5547e076218e16c8211a3e8"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/customer_pool.py":{"size":1340,"mtime_ns":1780202198698231150,"hash":"7a6b76e0e39ada0783dfbee92280e9f06299b6662b08abb13ab1b0d9c70fe370"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/customer_follow.py":{"size":3716,"mtime_ns":1780201410213934514,"hash":"3979cecd62a4f2ee5dd925639572208e36b397620d91a9ce49a59adfcb2a9d55"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/customer.py":{"size":13811,"mtime_ns":1780713560843469785,"hash":"4102b586c625782b58c0a70a0c94f1c203dff427dc1708316d23a3689d78fa9c"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/contact.py":{"size":4856,"mtime_ns":1780742840975948859,"hash":"60c714cc254d70f39b43205bbcb7fb4c563e807ddd070eefaaa952ae96048377"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/pool_rule.py":{"size":8059,"mtime_ns":1780202270065620774,"hash":"a491d929e43bfe29a5207396039449a9c58788b7d10d5547a01fd49d1d47f8ba"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/customer_follow.py":{"size":6890,"mtime_ns":1780730768313192794,"hash":"aaa23bf3dbbf85ff162dde638384ba26357ba72710d14d24357c5e73ab39ae8e"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/customer.py":{"size":21791,"mtime_ns":1780713573612717052,"hash":"418a2eeba8f6c8f8d0e30ab4edbeb6af5c936e3012e279a1c60d3a22e232740f"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/contact.py":{"size":8718,"mtime_ns":1780742842033485622,"hash":"c364ede84e65795c465e44737c1a85d5f37a4c8351fdf82ed9cf2145159f802e"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/generate_dict_reimport_sql.py":{"size":10692,"mtime_ns":1780201410245078685,"hash":"a4faaf61f246dad04ec3933083ab4348e5d2987ae1ed34b1f6d8f19535642a05"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/statistics.py":{"size":412,"mtime_ns":1780201410215906642,"hash":"fb1957d0fe87f22c37ba5bdaa5f3bf2bb4a40685a21a05dce98326581bb4844b"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/customer_pool.py":{"size":3725,"mtime_ns":1780202237342131933,"hash":"0f26ac2bcb585241f25302787184db4db422934e5d896ca25bbe7efaf61d92c4"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/statistics.py":{"size":5239,"mtime_ns":1780201410212581471,"hash":"9f3b08eaa53b094e6c1c2c7e16a383408ff9276baf1d55a2abba3076d74331f1"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/invoice_info.py":{"size":3104,"mtime_ns":1780406386885207867,"hash":"a59df3aed2c976904e3b5325fedd1621435b322645aa71349f3356e0cdc17424"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/oss.py":{"size":1584,"mtime_ns":1780201410212966513,"hash":"9349799b02a3531d8e1b46f9f70d3b6630afd7306663c779bd11f25448a16013"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/invoice_info.py":{"size":5816,"mtime_ns":1780406390461433397,"hash":"1fd30d3af0fbb1cf9dcbdd5899d6a90d1e814ff67406246830f58d39bfb5540f"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/opportunity.py":{"size":9391,"mtime_ns":1780242127112297110,"hash":"2e068961824a1d3ec0da0a94a3c494b63582b3251e5f4e030ce3e12897e85002"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/contract.py":{"size":10565,"mtime_ns":1780758461405229612,"hash":"45d9dfeb58bda22227fcd242c738086431616466bb8ee9f1466927d75d4bec48"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/opportunity.py":{"size":40914,"mtime_ns":1780242127112316277,"hash":"c052a9663d4d1f28f5d04a2837a43a9d257bd1a4b3843b1f6f888113853dbcad"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/contract.py":{"size":88975,"mtime_ns":1780758461405088403,"hash":"3b566fb1e7607718a36af65a8db127de8462250ee773d928677dca998b6ce933"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/monitor/__init__.py":{"size":1,"mtime_ns":1780242127108406092,"hash":"bb5b318d3cb224c50a2e0286e145f89ea7278437437fd17d7c865d67ad148076"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/monitor/operlog.py":{"size":855,"mtime_ns":1780201410216225893,"hash":"8148db2d3d06053a61170cd7490b042f26ad3eb20322688688d4fcb35a848ccf"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/monitor/__init__.py":{"size":1,"mtime_ns":1780242127112307360,"hash":"0592c62ce1172d93aca98cbd9aaa54b9c2668022abf3581249516472db312293"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/monitor/oper_log.py":{"size":5032,"mtime_ns":1780201410212860471,"hash":"1b67d7003faa6c80318471de95bdcbeba7017f8d4b62f78ab657c67225e3be4c"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/monitor.py":{"size":2117,"mtime_ns":1780201410210099217,"hash":"d2a936ccd5bdae4ba8bfc7e1ed6f8375e2af3037817e71257ce26710b6abe237"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/clue.py":{"size":9417,"mtime_ns":1780215022189075651,"hash":"2676afaecac4bb6da185674a9421dfbd40834ca21520adf66bb6b175fb728677"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/clue_follow.py":{"size":6501,"mtime_ns":1780215022193542578,"hash":"f7fb6fb070698c047e5ce43d331ca83db85cf054dc63cc328964881d20e35d37"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/clue.py":{"size":24565,"mtime_ns":1780215022193645078,"hash":"5ed4483243252782afb0e1d195015c332087169fed3a4c628aadfcf201e637f0"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/clue_statistics.py":{"size":10556,"mtime_ns":1780758461405325778,"hash":"e00b5b5ffad38e3cfc30e3a49eb850e7e65d7e696a534901acce71a0ccd171b8"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/opportunity_follow.py":{"size":8559,"mtime_ns":1780242127112151734,"hash":"fa223fc4f89d1cd34d464df0d0ca217ea23f43c47227f219d92ab4d971ebe163"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/opportunity_product.py":{"size":9152,"mtime_ns":1780242127021803192,"hash":"3582ab562ab1b84723d9b4d8f6e8fe8e5c208a8374ddad9073e3594c2fe946c4"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/crm_export_columns.py":{"size":9594,"mtime_ns":1780743830255260394,"hash":"b20594507aab09cebc3d540acad04547bf780cac9c885187138f5d64718ed513"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/__init__.py":{"size":0,"mtime_ns":1780242127043319167,"hash":"a66deceefc987198863f61b8aa1b5715483a69c4a15ef47cd5586c5d8e429b97"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/excel_export.py":{"size":4411,"mtime_ns":1780242127113233948,"hash":"7fbde3fca845e4705487e7f801caee308bcc0c99a9da7d0c99681a96eaaf6076"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/supplier_info.py":{"size":3679,"mtime_ns":1780242127112269527,"hash":"8b797e9dee6ac7ff806a8ea23bef5fedce648502ea23287e1b417e9f96d22c2e"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/supplier_info.py":{"size":6127,"mtime_ns":1780242127113488782,"hash":"6d9e4f1a4c97bf9f020fcce9cfd66735bf2cce2becdc1b47fc366bbc40c30926"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py":{"size":12910,"mtime_ns":1780758461405257028,"hash":"fc1e19960a9431bb92d2fa1a4eb252d297a0b68f6cc88bd793297e9f4c56a949"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/quote.py":{"size":5961,"mtime_ns":1780745856749183842,"hash":"29c52786df396aededd0850e3c8a3a36f3fb6a952af03adbe1768dae212b6804"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote.py":{"size":46387,"mtime_ns":1780745858498556120,"hash":"9d90392069b624573be2086faf2f6893ff30fa9dc9cdad5fba19efde8f4bfde0"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_product.py":{"size":9689,"mtime_ns":1780242127068587825,"hash":"6851b91549b1a09c8990f80543966ca4bb35453a080d7b1e8791c217c1583af2"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_share_log.py":{"size":3926,"mtime_ns":1780242127112437528,"hash":"8ea76d948a3440b43aac6efb353aa10773a2b95765c416aa72135e74695d4f68"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/quote_approval.py":{"size":8620,"mtime_ns":1780736832004071102,"hash":"17ba1437b70857f9826087f24ac1305a74f366b6d0358ccc78948860f55dc35b"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/crm_quote_pdf.py":{"size":9877,"mtime_ns":1780242127112382277,"hash":"fec04892fccccc3601fbeb012c92c77110496910be44102de40b4610148fa58a"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/crm_quote_routes.py":{"size":23911,"mtime_ns":1780736833576480031,"hash":"9fa1fb08d3b1f1fd3006f19063083beb3eae0d5a447f8dbc37575db1c0df7166"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/contract_approval.py":{"size":13958,"mtime_ns":1780758461405296487,"hash":"3d7fbbb90728568a2577e52d8986ccbec8f599d04a0ef9e330939d1fe729bc98"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/crm_contract_routes.py":{"size":27213,"mtime_ns":1780758461405109236,"hash":"012206a175e5519cd321c95852ef5957b436a4be74481bd637088ffd27cace21"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/contract_template.py":{"size":2897,"mtime_ns":1780229101351431207,"hash":"935adfc7659e31201cd83ba8387bf6abcb39e7cdc63fa4692d699ed874cf113b"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/contract_change.py":{"size":2496,"mtime_ns":1780229100306468735,"hash":"05af42f088f6cc400c1e3445d4a2c96670edf482328b361aa4f231230d958729"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/contract_template.py":{"size":11858,"mtime_ns":1780229131746659196,"hash":"b9bdbe6a33c933aefcb25cc57e94b2fd2dc75f8e5822434f3912aa0153dfca00"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/contract_change.py":{"size":15985,"mtime_ns":1780229123819597506,"hash":"771b110d3d136c45106dd61171c724c559b5b4bf572ea7b8c2b648f0bfe629c1"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/crm_contract_sub_routes.py":{"size":23996,"mtime_ns":1780758461406041448,"hash":"154356115004a1b5674659219e40714eadf59a3581888ce9895fe792c8d00a82"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/attachment_biz.py":{"size":1013,"mtime_ns":1780750904057179495,"hash":"b30a46c6fab214ca58787ff4e42a9ab2fdf933f1c4b6ee224d1799d9dd8918a6"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/bx_auth.py":{"size":1136,"mtime_ns":1780750556882334857,"hash":"38eb2cb16c0b187b946287ad8d6e0a2b5d008798cf3e99914ce29a6a3b3ab2ce"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_date_range.py":{"size":947,"mtime_ns":1780750556881768980,"hash":"2bbe961ad71f0be530f10d515b69615dbf887257028e339d4252b9ff2a5aba2b"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py":{"size":1589,"mtime_ns":1780750556882959109,"hash":"c9d8d20d9af9ccc1c30f6d7116e7666b53817693f4ab25c01ea451dc46a7f12a"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py":{"size":16454,"mtime_ns":1780752873936800885,"hash":"5cbe170d19fdb5f5abf34d2e87709430e9dd89f2fd5cb13314af556dd0867582"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/__init__.py":{"size":81,"mtime_ns":1780750556881734563,"hash":"07c3422f745afbff1c8162b3782fbb4b8de65084e7e9bbcf45abb9d433d65f98"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/common.py":{"size":1238,"mtime_ns":1780750556882896026,"hash":"1b8a1b82dcabdcb1a2957ac9c53d2ae128869a55439c77208ec3b0342380eeed"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/__init__.py":{"size":777,"mtime_ns":1780751360180065853,"hash":"3525eb716c238682a07a116818d318b8a494fb24b9cefca5114d30bc50d095a5"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/expense_item.py":{"size":1632,"mtime_ns":1780750595661330050,"hash":"718cda4882de824f750f0d99bcc12c3240f29acb7979f1a6e04d903feb1f434c"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/workflow.py":{"size":1641,"mtime_ns":1780750597002327548,"hash":"c38fd9400bf1c8d181b084347f47bb02e67a6d2ce14a0556284372e4bf044560"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py":{"size":3329,"mtime_ns":1780750631640905361,"hash":"eb032c84478721c937c421e8cf457716875a593a75c15caa07adec83c80f8b3b"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py":{"size":4940,"mtime_ns":1780756089730425856,"hash":"dc0691cec4589587fdbacf2dbc9334e3a99face5e924b7ead29b3531d7752c5d"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py":{"size":3977,"mtime_ns":1780750601219153355,"hash":"ac31c58cf246f27a3f875920f583dd42af66a09f09dc879a215ce05a056d450f"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/__init__.py":{"size":34,"mtime_ns":1780750594045301798,"hash":"583b12a6d2c9fd4411b652741e73324df9256138946ee873a0ed03169f8dae2a"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py":{"size":5133,"mtime_ns":1780756089144403380,"hash":"10ac1660a2a6d6daa4c313f57667df78b082c742e49780cec4270b1333b3cb1f"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py":{"size":2754,"mtime_ns":1780750593829062278,"hash":"a69603083acd513274bec92f033d2d496f175b17de6aec59d8d2b6f63391abac"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/attachment.py":{"size":525,"mtime_ns":1780750871480000584,"hash":"f287214c72345e41d9d122ca55b4d3e279635d99cbf10ed530de0ac32374f31c"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py":{"size":4522,"mtime_ns":1780757815269786891,"hash":"680cf05a952f4069441e8fe432c96d2feb6cb9e8cddd24ca1109d5f89f5fb06c"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py":{"size":5707,"mtime_ns":1780750903379992073,"hash":"59572b469529962b623accad7a5e21f5a5299a69285977acfa93af8c12ec7703"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py":{"size":12830,"mtime_ns":1780758906507042443,"hash":"0448e5ccd69b876402d03bb69647207497aef22b24f8686784bea2266c636607"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py":{"size":3966,"mtime_ns":1780750887666369032,"hash":"011868ea9a25a17816882b6bc0dc097eeca74adaf8c1a00943397a2a1bbdb389"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py":{"size":22304,"mtime_ns":1780758906889243180,"hash":"6705c068242c66ac0ad917e925935ee615e87ecccddcc948c4a4bfc87e90eb28"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/storage.py":{"size":3656,"mtime_ns":1780750869826924187,"hash":"ac98980bd5b6cbab6a9394b6debc678b050cf4df969eccbc5f2d419b615937cd"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py":{"size":5389,"mtime_ns":1780751335184916214,"hash":"d6aa4d137ee5f96962ddc7c35a719aa658338f13ccbd378d35758fa73d76de70"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py":{"size":13829,"mtime_ns":1780758906744178121,"hash":"db3a00f89c6343929dbbd1cf5891821fea7670d9630a83ef826da3b7abddc596"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py":{"size":28550,"mtime_ns":1780758908405342166,"hash":"c49d87c90dd0169443162e7d2fc637f739e0c61712ecbeee34a967ae052306a5"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py":{"size":15276,"mtime_ns":1780751365941052105,"hash":"4dcc1c902bd56c5ad6cc5144093afcf2e3776c1d4a0cd416d4186b9c35c49dae"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/approval_cycle.py":{"size":1296,"mtime_ns":1780758200904804714,"hash":"308c087d94ac253bfc7e2d5455a06ae8ceac034adda41b5c61dd315dc167efaf"}} \ No newline at end of file diff --git a/backend/graphify-out/graph.html b/backend/graphify-out/graph.html index 29ffa0b7f..12104667d 100644 --- a/backend/graphify-out/graph.html +++ b/backend/graphify-out/graph.html @@ -63,12 +63,12 @@
-
2643 nodes · 18676 edges · 106 communities
+
3047 nodes · 20600 edges · 130 communities
+ + + + diff --git a/web-admin/src/components/bx/base/ApprovalHistoryView.vue b/web-admin/src/components/bx/base/ApprovalHistoryView.vue new file mode 100644 index 000000000..5b4e0455d --- /dev/null +++ b/web-admin/src/components/bx/base/ApprovalHistoryView.vue @@ -0,0 +1,202 @@ + + + + + diff --git a/web-admin/src/components/bx/base/BaseButton.vue b/web-admin/src/components/bx/base/BaseButton.vue new file mode 100644 index 000000000..ad4b0dd66 --- /dev/null +++ b/web-admin/src/components/bx/base/BaseButton.vue @@ -0,0 +1,29 @@ + + + diff --git a/web-admin/src/components/bx/base/BaseClampText.vue b/web-admin/src/components/bx/base/BaseClampText.vue new file mode 100644 index 000000000..dbd079689 --- /dev/null +++ b/web-admin/src/components/bx/base/BaseClampText.vue @@ -0,0 +1,124 @@ + + + + + diff --git a/web-admin/src/components/bx/base/BaseDetailTableSection.vue b/web-admin/src/components/bx/base/BaseDetailTableSection.vue new file mode 100644 index 000000000..5d97ba501 --- /dev/null +++ b/web-admin/src/components/bx/base/BaseDetailTableSection.vue @@ -0,0 +1,20 @@ + + + diff --git a/web-admin/src/components/bx/base/BaseDialog.vue b/web-admin/src/components/bx/base/BaseDialog.vue new file mode 100644 index 000000000..64df2963f --- /dev/null +++ b/web-admin/src/components/bx/base/BaseDialog.vue @@ -0,0 +1,17 @@ + + + diff --git a/web-admin/src/components/bx/base/BaseInput.vue b/web-admin/src/components/bx/base/BaseInput.vue new file mode 100644 index 000000000..337ef4757 --- /dev/null +++ b/web-admin/src/components/bx/base/BaseInput.vue @@ -0,0 +1,32 @@ + + + diff --git a/web-admin/src/components/bx/base/BaseOpButton.vue b/web-admin/src/components/bx/base/BaseOpButton.vue new file mode 100644 index 000000000..5096827d4 --- /dev/null +++ b/web-admin/src/components/bx/base/BaseOpButton.vue @@ -0,0 +1,26 @@ + + + + diff --git a/web-admin/src/components/bx/base/BaseSelect.vue b/web-admin/src/components/bx/base/BaseSelect.vue new file mode 100644 index 000000000..3098d1091 --- /dev/null +++ b/web-admin/src/components/bx/base/BaseSelect.vue @@ -0,0 +1,26 @@ + + + diff --git a/web-admin/src/components/bx/base/BaseTable.vue b/web-admin/src/components/bx/base/BaseTable.vue new file mode 100644 index 000000000..88715367d --- /dev/null +++ b/web-admin/src/components/bx/base/BaseTable.vue @@ -0,0 +1,40 @@ + + + diff --git a/web-admin/src/components/bx/base/BaseTag.vue b/web-admin/src/components/bx/base/BaseTag.vue new file mode 100644 index 000000000..116fd3b3c --- /dev/null +++ b/web-admin/src/components/bx/base/BaseTag.vue @@ -0,0 +1,16 @@ + + + diff --git a/web-admin/src/components/bx/base/BxAttachmentReadonly.vue b/web-admin/src/components/bx/base/BxAttachmentReadonly.vue new file mode 100644 index 000000000..373a9b022 --- /dev/null +++ b/web-admin/src/components/bx/base/BxAttachmentReadonly.vue @@ -0,0 +1,99 @@ + + + + + diff --git a/web-admin/src/components/bx/base/BxAttachmentUpload.vue b/web-admin/src/components/bx/base/BxAttachmentUpload.vue new file mode 100644 index 000000000..b4cadcfcb --- /dev/null +++ b/web-admin/src/components/bx/base/BxAttachmentUpload.vue @@ -0,0 +1,242 @@ + + + + + diff --git a/web-admin/src/components/bx/base/WorkflowNodeCell.vue b/web-admin/src/components/bx/base/WorkflowNodeCell.vue new file mode 100644 index 000000000..49d74660b --- /dev/null +++ b/web-admin/src/components/bx/base/WorkflowNodeCell.vue @@ -0,0 +1,23 @@ + + + diff --git a/web-admin/src/components/bx/template/DataTablePanel.vue b/web-admin/src/components/bx/template/DataTablePanel.vue new file mode 100644 index 000000000..7ef7acf5d --- /dev/null +++ b/web-admin/src/components/bx/template/DataTablePanel.vue @@ -0,0 +1,12 @@ + + + diff --git a/web-admin/src/components/bx/template/FilterBlock.vue b/web-admin/src/components/bx/template/FilterBlock.vue new file mode 100644 index 000000000..9760a9166 --- /dev/null +++ b/web-admin/src/components/bx/template/FilterBlock.vue @@ -0,0 +1,51 @@ + + + diff --git a/web-admin/src/components/bx/template/ListPageScaffold.vue b/web-admin/src/components/bx/template/ListPageScaffold.vue new file mode 100644 index 000000000..651764fcd --- /dev/null +++ b/web-admin/src/components/bx/template/ListPageScaffold.vue @@ -0,0 +1,103 @@ + + + diff --git a/web-admin/src/components/bx/template/ListToolbar.vue b/web-admin/src/components/bx/template/ListToolbar.vue new file mode 100644 index 000000000..dbb7e831a --- /dev/null +++ b/web-admin/src/components/bx/template/ListToolbar.vue @@ -0,0 +1,18 @@ + + + diff --git a/web-admin/src/components/core/layouts/art-menus/art-sidebar-menu/index.vue b/web-admin/src/components/core/layouts/art-menus/art-sidebar-menu/index.vue index 70d79a3bb..e40894571 100644 --- a/web-admin/src/components/core/layouts/art-menus/art-sidebar-menu/index.vue +++ b/web-admin/src/components/core/layouts/art-menus/art-sidebar-menu/index.vue @@ -287,7 +287,7 @@ const isCollapsed = isDualMenu.value && !menuOpen.value return { transform: isCollapsed ? 'translateY(-50px)' : 'translateY(0)', - height: isCollapsed ? 'calc(100% + 50px)' : 'calc(100% - 72px)', + height: isCollapsed ? 'calc(100% + 50px)' : 'calc(100% - 56px)', transition: 'transform 0.3s ease' } }) diff --git a/web-admin/src/components/core/layouts/art-menus/art-sidebar-menu/style.scss b/web-admin/src/components/core/layouts/art-menus/art-sidebar-menu/style.scss index ced451e13..e83bb5b91 100755 --- a/web-admin/src/components/core/layouts/art-menus/art-sidebar-menu/style.scss +++ b/web-admin/src/components/core/layouts/art-menus/art-sidebar-menu/style.scss @@ -169,8 +169,8 @@ align-items: center; justify-content: center; width: 100%; - height: 72px; - padding: 10px 12px 8px; + height: 56px; + padding: 0 12px; overflow: hidden; line-height: normal; cursor: pointer; @@ -179,10 +179,10 @@ .header-brand { display: flex; - flex-direction: column; + flex-direction: row; align-items: center; justify-content: center; - gap: 4px; + gap: 8px; width: 100%; min-width: 0; } @@ -196,19 +196,21 @@ position: static; box-sizing: border-box; display: block; - width: 100%; + flex: 0 1 auto; + width: auto; + min-width: 0; margin: 0; - font-size: 12px; + font-size: 14px; font-weight: 600; line-height: 1.3; color: #111827 !important; - text-align: center; + text-align: left; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; &.is-dual-menu-name { - margin: auto; + margin: 0 auto; } } diff --git a/web-admin/src/components/core/layouts/art-menus/art-sidebar-menu/theme.scss b/web-admin/src/components/core/layouts/art-menus/art-sidebar-menu/theme.scss index 171be17b4..a31019b9c 100644 --- a/web-admin/src/components/core/layouts/art-menus/art-sidebar-menu/theme.scss +++ b/web-admin/src/components/core/layouts/art-menus/art-sidebar-menu/theme.scss @@ -107,12 +107,16 @@ $popup-menu-radius: 6px; // 菜单折叠样式 .menu-left-close { .header { + .header-brand { + justify-content: center; + } + .header-brand-title { display: none; } .logo { - margin: 0 auto; + margin: 0; } } } diff --git a/web-admin/src/hooks/bx/useApplicantOptions.ts b/web-admin/src/hooks/bx/useApplicantOptions.ts new file mode 100644 index 000000000..c27cadb97 --- /dev/null +++ b/web-admin/src/hooks/bx/useApplicantOptions.ts @@ -0,0 +1,21 @@ +import { ref } from 'vue' +import { fetchUserOptions } from '@/api/admin' + +export function useApplicantOptions() { + const applicantOptions = ref<{ label: string; value: string }[]>([]) + + async function loadApplicantOptions() { + try { + const res = await fetchUserOptions() + const data = (res as any)?.data ?? res ?? [] + applicantOptions.value = (Array.isArray(data) ? data : []).map((u: any) => ({ + value: String(u.value ?? u.id ?? ''), + label: String(u.label ?? u.nickName ?? u.realName ?? u.username ?? '') + })) + } catch { + applicantOptions.value = [] + } + } + + return { applicantOptions, loadApplicantOptions } +} diff --git a/web-admin/src/hooks/bx/useApproveMenuBadge.ts b/web-admin/src/hooks/bx/useApproveMenuBadge.ts new file mode 100644 index 000000000..90ab087df --- /dev/null +++ b/web-admin/src/hooks/bx/useApproveMenuBadge.ts @@ -0,0 +1,61 @@ +import { ref } from 'vue' +import { advanceApi, reimburseApi } from '@/api/bx' +import type { AppRouteRecord } from '@/types/router' + +export const advanceApproverStats = ref({ pendingTotal: 0, monthPendingAmount: 0 }) +export const reimburseApproverStats = ref({ pendingTotal: 0, monthPendingAmount: 0 }) + +function collectMenuCodes(items: AppRouteRecord[]): Set { + const codes = new Set() + function walk(list: AppRouteRecord[]) { + for (const item of list) { + const code = item.meta?.menuCode as string | undefined + if (code) codes.add(code) + if (item.children?.length) walk(item.children) + } + } + walk(items) + return codes +} + +export function getMenuPendingCount(menuCode?: string | null): number { + if (menuCode === 'bx:advanceApprove:list') return advanceApproverStats.value.pendingTotal + if (menuCode === 'bx:reimburseApprove:list') return reimburseApproverStats.value.pendingTotal + return 0 +} + +/** 刷新侧栏「备用金审批 / 报销审批」待办数量(按用户菜单权限按需请求) */ +export async function refreshApproveMenuBadges(menuList: AppRouteRecord[]) { + const codes = collectMenuCodes(menuList) + const tasks: Promise[] = [] + + if (codes.has('bx:advanceApprove:list')) { + tasks.push( + advanceApi.pendingApprovalStats().then((res: any) => { + const d = res.data || {} + advanceApproverStats.value = { + pendingTotal: Number(d.pendingTotal ?? 0), + monthPendingAmount: Number(d.monthPendingAmount ?? 0) + } + }) + ) + } else { + advanceApproverStats.value = { pendingTotal: 0, monthPendingAmount: 0 } + } + + if (codes.has('bx:reimburseApprove:list')) { + tasks.push( + reimburseApi.pendingApprovalStats().then((res: any) => { + const d = res.data || {} + reimburseApproverStats.value = { + pendingTotal: Number(d.pendingTotal ?? 0), + monthPendingAmount: Number(d.monthPendingAmount ?? 0) + } + }) + ) + } else { + reimburseApproverStats.value = { pendingTotal: 0, monthPendingAmount: 0 } + } + + await Promise.allSettled(tasks) +} diff --git a/web-admin/src/hooks/bx/useExpenseItemTree.ts b/web-admin/src/hooks/bx/useExpenseItemTree.ts new file mode 100644 index 000000000..80100243d --- /dev/null +++ b/web-admin/src/hooks/bx/useExpenseItemTree.ts @@ -0,0 +1,73 @@ +import { ref, onMounted } from 'vue' +import { ElMessage } from 'element-plus' +import { expenseItemApi } from '@/api/bx' + +export interface ExpenseItem { + id: string + parentId: string + itemName: string + itemCode: string + level: number + sortOrder: number + status: number | string + childCount: number + children?: ExpenseItem[] +} + +/** + * 加载费用项目树形数据,供 el-tree-select 使用。 + * + * 用法: + * const { expenseTree, flatList, displayName, load } = useExpenseItemTree() + */ +export function useExpenseItemTree() { + const expenseTree = ref([]) + const loading = ref(false) + + /** 扁平列表(含所有层级),用于根据 ID 查找名称 */ + const flatList = ref([]) + + async function load() { + loading.value = true + try { + const res: any = await expenseItemApi.tree() + const tree: ExpenseItem[] = res.data ?? [] + expenseTree.value = tree + flatList.value = flattenTree(tree) + } catch (e: any) { + ElMessage.error(e?.message || '加载费用项目失败') + } finally { + loading.value = false + } + } + + onMounted(load) + + return { expenseTree, flatList, loading, load } +} + +function flattenTree(tree: ExpenseItem[]): ExpenseItem[] { + const result: ExpenseItem[] = [] + for (const node of tree) { + result.push(node) + if (node.children?.length) result.push(...flattenTree(node.children)) + } + return result +} + +/** + * 根据费用项目 ID 查找并返回展示名称。 + * - 二级项目 → "一级名称/二级名称" + * - 一级项目 → "一级名称" + * + * @param id 费用项目 ID + * @param flatList 扁平列表(由 useExpenseItemTree 提供) + */ +export function formatExpenseName(id: string | null | undefined, flatList: ExpenseItem[]): string { + if (id == null) return '-' + const item = flatList.find(i => i.id === id) + if (!item) return '-' + if (item.level === 1) return item.itemName + const parent = flatList.find(i => i.id === item.parentId) + return parent ? `${parent.itemName}/${item.itemName}` : item.itemName +} diff --git a/web-admin/src/hooks/bx/usePagedTable.ts b/web-admin/src/hooks/bx/usePagedTable.ts new file mode 100644 index 000000000..0814cf0e8 --- /dev/null +++ b/web-admin/src/hooks/bx/usePagedTable.ts @@ -0,0 +1,46 @@ +import { computed, ref, type ComputedRef, type Ref } from 'vue' + +type Source = Ref | ComputedRef | (() => T[]) + +interface UsePagedTableOptions { + initialPage?: number + initialPageSize?: number +} + +export function usePagedTable(source: Source, options: UsePagedTableOptions = {}) { + const currentPage = ref(options.initialPage ?? 1) + const pageSize = ref(options.initialPageSize ?? 10) + + const sourceRows = computed(() => { + if (typeof source === 'function') return source() + return source.value + }) + + const total = computed(() => sourceRows.value.length) + + const pagedRows = computed(() => { + const start = (currentPage.value - 1) * pageSize.value + const end = start + pageSize.value + return sourceRows.value.slice(start, end) + }) + + const rangeText = computed(() => { + const count = total.value + const start = count === 0 ? 0 : (currentPage.value - 1) * pageSize.value + 1 + const end = Math.min(currentPage.value * pageSize.value, count) + return `显示 ${start}-${end} / ${count}` + }) + + function onSizeChange() { + currentPage.value = 1 + } + + return { + currentPage, + pageSize, + total, + pagedRows, + rangeText, + onSizeChange + } +} diff --git a/web-admin/src/hooks/bx/useServerPaged.ts b/web-admin/src/hooks/bx/useServerPaged.ts new file mode 100644 index 000000000..76738ac2a --- /dev/null +++ b/web-admin/src/hooks/bx/useServerPaged.ts @@ -0,0 +1,74 @@ +import { ref, computed, watch } from 'vue' +import type { Ref } from 'vue' + +interface UseServerPagedOptions { + initialPage?: number + initialPageSize?: number +} + +export function useServerPaged( + fetchFn: (params: { page: number; pageSize: number; [k: string]: any }) => Promise<{ rows: T[]; total: number }>, + options: UseServerPagedOptions = {}, +) { + const currentPage = ref(options.initialPage ?? 1) + const pageSize = ref(options.initialPageSize ?? 10) + const total = ref(0) + const rows: Ref = ref([]) as Ref + const loading = ref(false) + const searchParams = ref>({}) + const skipNextWatchRefresh = ref(false) + + const rangeText = computed(() => { + const count = total.value + const start = count === 0 ? 0 : (currentPage.value - 1) * pageSize.value + 1 + const end = Math.min(currentPage.value * pageSize.value, count) + return `显示 ${start}-${end} / ${count}` + }) + + async function refresh(extraParams: Record = {}) { + if (Object.keys(extraParams).length > 0) { + searchParams.value = { ...extraParams } + } + loading.value = true + try { + const res = await fetchFn({ page: currentPage.value, pageSize: pageSize.value, ...searchParams.value }) + rows.value = res.rows + total.value = res.total + } finally { + loading.value = false + } + } + + async function search(extraParams: Record = {}) { + searchParams.value = { ...extraParams } + if (currentPage.value !== 1) { + skipNextWatchRefresh.value = true + currentPage.value = 1 + } + await refresh() + } + + function onSizeChange() { + currentPage.value = 1 + } + + watch([currentPage, pageSize], async () => { + if (skipNextWatchRefresh.value) { + skipNextWatchRefresh.value = false + return + } + await refresh() + }) + + return { + currentPage, + pageSize, + total, + rows, + loading, + rangeText, + refresh, + search, + onSizeChange, + } +} diff --git a/web-admin/src/router/modules/sqxp.ts b/web-admin/src/router/modules/sqxp.ts index 109b4eaa0..4e345e269 100644 --- a/web-admin/src/router/modules/sqxp.ts +++ b/web-admin/src/router/modules/sqxp.ts @@ -1,8 +1,8 @@ import type { AppRouteRecord } from '@/types/router' /** - * 前端路由(4 个一级菜单:控制台、CRM 管理、工作流管理、系统管理) - * 与后端菜单对齐时请同步 `backend/app/api/menu.py`。 + * 前端路由(控制台、报销管理、CRM 管理、工作流管理、系统管理) + * 与后端菜单对齐时请同步 `backend/app/api/menu.py` 与 `sys_menu`(bx 见 docs/sql/20260606_bx_menu.sql)。 */ export const sqxpAdminRoutes: AppRouteRecord[] = [ // ────────────────────────────────────────────── @@ -22,7 +22,157 @@ export const sqxpAdminRoutes: AppRouteRecord[] = [ }, // ────────────────────────────────────────────── - // 2. CRM 管理 + // 2. 报销管理(bx) + // ────────────────────────────────────────────── + { + id: 'BX00000000000000000000000000001', + name: 'BxManagement', + path: '/bx', + component: '/index/index', + meta: { + title: '报销管理', + icon: 'ri:wallet-3-line', + keepAlive: false, + roles: ['admin'] + }, + children: [ + { + id: 'BX00000000000000000000000000003', + name: 'BxExpenseItem', + path: 'config/expense-item', + component: '/bx/expense-item/index', + meta: { + title: '费用项目管理', + keepAlive: true, + menuCode: 'bx:expenseItem:list' + } + }, + { + id: 'BX00000000000000000000000000004', + name: 'BxWorkflowAdvance', + path: 'config/workflow-advance', + component: '/bx/workflow/advance/index', + meta: { + title: '工作流配置(备用金)', + keepAlive: true, + menuCode: 'bx:workflowAdvance:list' + } + }, + { + id: 'BX00000000000000000000000000005', + name: 'BxWorkflowReimburse', + path: 'config/workflow-reimburse', + component: '/bx/workflow/reimburse/index', + meta: { + title: '工作流配置(报销单)', + keepAlive: true, + menuCode: 'bx:workflowReimburse:list' + } + }, + { + id: 'BX00000000000000000000000000007', + name: 'BxAdvanceApply', + path: 'advance/apply', + component: '/bx/advance/apply/index', + meta: { + title: '备用金申请', + keepAlive: true, + menuCode: 'bx:advanceApply:list' + } + }, + { + id: 'BX00000000000000000000000000008', + name: 'BxAdvanceApprove', + path: 'advance/approve', + component: '/bx/advance/approve/index', + meta: { + title: '备用金审批', + keepAlive: true, + menuCode: 'bx:advanceApprove:list' + } + }, + { + id: 'BX00000000000000000000000000009', + name: 'BxAdvanceIssue', + path: 'advance/issue', + component: '/bx/advance/issue/index', + meta: { + title: '备用金发放管理', + keepAlive: true, + menuCode: 'bx:advanceIssue:list' + } + }, + { + id: 'BX00000000000000000000000000011', + name: 'BxReimburseApply', + path: 'reimburse/apply', + component: '/bx/reimburse/apply/index', + meta: { + title: '报销申请', + keepAlive: true, + menuCode: 'bx:reimburseApply:list' + } + }, + { + id: 'BX00000000000000000000000000012', + name: 'BxReimburseApprove', + path: 'reimburse/approve', + component: '/bx/reimburse/approve/index', + meta: { + title: '报销审批', + keepAlive: true, + menuCode: 'bx:reimburseApprove:list' + } + }, + { + id: 'BX00000000000000000000000000013', + name: 'BxPayment', + path: 'reimburse/payment', + component: '/bx/payment/index', + meta: { + title: '支付管理(发放/冲抵)', + keepAlive: true, + menuCode: 'bx:payment:list' + } + }, + { + id: 'BX00000000000000000000000000015', + name: 'BxViewMine', + path: 'view/mine', + component: '/bx/view/mine/index', + meta: { + title: '我的申请单', + keepAlive: true, + menuCode: 'bx:viewMine:list' + } + }, + { + id: 'BX00000000000000000000000000016', + name: 'BxViewTodo', + path: 'view/todo', + component: '/bx/view/todo/index', + meta: { + title: '待我审批', + keepAlive: true, + menuCode: 'bx:viewTodo:list' + } + }, + { + id: 'BX00000000000000000000000000017', + name: 'BxViewAll', + path: 'view/all', + component: '/bx/view/all/index', + meta: { + title: '全部申请单(总经理)', + keepAlive: true, + menuCode: 'bx:viewAll:list' + } + } + ] + }, + + // ────────────────────────────────────────────── + // 3. CRM 管理 // ────────────────────────────────────────────── { id: 'CRM00000000000000000000000000001', @@ -276,7 +426,7 @@ export const sqxpAdminRoutes: AppRouteRecord[] = [ }, // ────────────────────────────────────────────── - // 3. 工作流管理 + // 4. 工作流管理 // ────────────────────────────────────────────── { id: 'WKF00000000000000000000000000001', @@ -350,7 +500,7 @@ export const sqxpAdminRoutes: AppRouteRecord[] = [ }, // ────────────────────────────────────────────── - // 4. 系统管理 + // 5. 系统管理 // ────────────────────────────────────────────── { id: 'SYSM000000000000000000000000000001', diff --git a/web-admin/src/styles/bx/attachment.scss b/web-admin/src/styles/bx/attachment.scss new file mode 100644 index 000000000..f1186c121 --- /dev/null +++ b/web-admin/src/styles/bx/attachment.scss @@ -0,0 +1,153 @@ +.attachment-upload { + width: 100%; +} + +.attachment-list { + display: flex; + flex-wrap: wrap; + gap: 12px; +} + +.upload-card { + width: 140px; + height: 96px; + border: 1px dashed #a7f3d0; + border-radius: 8px; + background: #f0fdf4; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + gap: 6px; + cursor: pointer; + + &:hover { + border-color: #10b981; + border-style: solid; + background: #ecfdf5; + } +} + +.upload-card-text { + font-size: 12px; + color: #10b981; + font-weight: 500; + line-height: 1; +} + +.upload-hint { + display: block; + font-size: 11px; + color: #94a3b8; + margin-top: 8px; + line-height: 1.4; +} + +.attachment-item { + width: 140px; + border: 1px solid #e2e8f0; + border-radius: 8px; + background: #fff; + overflow: hidden; + + &.is-uploading { + opacity: 0.6; + pointer-events: none; + } + + &:hover { + border-color: #10b981; + box-shadow: 0 2px 8px rgba(16, 185, 129, 0.1); + } +} + +.attachment-preview { + width: 100%; + height: 96px; + display: flex; + align-items: center; + justify-content: center; + background: #f8fafc; + overflow: hidden; + cursor: pointer; + + img { + width: 100%; + height: 100%; + object-fit: cover; + display: block; + } +} + +.attachment-preview__icon { + width: 48px; + height: 48px; + border-radius: 10px; + display: flex; + align-items: center; + justify-content: center; + + &--video { + background: #ede9fe; + color: #7c3aed; + } + + &--doc { + background: #e0f2fe; + color: #0284c7; + } +} + +.attachment-footer { + display: flex; + flex-direction: column; + padding: 6px 8px; +} + +.attachment-name { + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; + overflow: hidden; + font-size: 11px; + color: #334155; + line-height: 1.4; + word-break: break-all; +} + +.attachment-actions { + display: flex; + justify-content: center; + gap: 8px; + margin-top: 4px; +} + +.action-btn { + width: 22px; + height: 22px; + border-radius: 4px; + background: #f1f5f9; + color: #64748b; + cursor: pointer; + + &:hover { + background: #10b981; + color: #fff; + } + + &--danger:hover { + background: #ef4444; + color: #fff; + } +} + +.bx-attachment-preview-media { + display: block; + max-width: 100%; + max-height: 70vh; + margin: 0 auto; +} + +.attachment-upload :deep(.el-upload) { + display: block; +} diff --git a/web-admin/src/styles/bx/index.scss b/web-admin/src/styles/bx/index.scss new file mode 100644 index 000000000..9dc61eb63 --- /dev/null +++ b/web-admin/src/styles/bx/index.scss @@ -0,0 +1,1922 @@ +:root { + --primary: #10b981; + --primary-dark: #059669; + --primary-bg: #ecfdf5; + --success: #059669; + --success-bg: #ecfdf5; + --warning: #d97706; + --warning-bg: #fffbeb; + --danger: #dc2626; + --danger-bg: #fef2f2; + --info: #64748b; + --info-bg: #f8fafc; + --text: #1e293b; + --text-muted: #64748b; + --border: #d9e8e2; + --bg-page: #fefefe; + --surface: #ffffff; + --table-head: #f8fafc; + --row-alt: #fafafa; + --row-hover: #f1f5f9; + --shadow: 0 1px 3px rgba(0, 0, 0, 0.05); + --radius: 10px; + --radius-md: 8px; + --control-h: 36px; + --sidebar-width: 260px; + + /* Element Plus 全局主题色(fresh-mint-green 对齐) */ + --el-color-primary: var(--primary); + --el-color-primary-dark-2: var(--primary-dark); + --el-color-primary-light-3: #34d399; + --el-color-primary-light-5: #66d9b3; + --el-color-primary-light-7: #99e9cb; + --el-color-primary-light-8: #c5f3e2; + --el-color-primary-light-9: var(--primary-bg); + + --el-color-success: var(--success); + --el-color-success-dark-2: #0b5e58; + --el-color-success-light-3: #34b6ad; + --el-color-success-light-5: #7dd3c7; + --el-color-success-light-7: #a7f3d0; + --el-color-success-light-8: #d1fae5; + --el-color-success-light-9: var(--success-bg); + + --el-color-warning: var(--warning); + --el-color-warning-dark-2: #b45309; + --el-color-warning-light-3: #f59e0b; + --el-color-warning-light-5: #fbbf24; + --el-color-warning-light-7: #fde68a; + --el-color-warning-light-8: #fef3c7; + --el-color-warning-light-9: var(--warning-bg); + + --el-color-danger: var(--danger); + --el-color-danger-dark-2: #b91c1c; + --el-color-danger-light-3: #ef4444; + --el-color-danger-light-5: #f87171; + --el-color-danger-light-7: #fca5a5; + --el-color-danger-light-8: #fecaca; + --el-color-danger-light-9: var(--danger-bg); + + --el-color-info: var(--info); + --el-color-info-dark-2: #115e59; + --el-color-info-light-3: #14b8a6; + --el-color-info-light-5: #2dd4bf; + --el-color-info-light-7: #5eead4; + --el-color-info-light-8: #99f6e4; + --el-color-info-light-9: var(--info-bg); + + --el-text-color-primary: var(--text); + --el-text-color-regular: var(--text-muted); + --el-border-color: var(--border); + --el-border-color-light: #edf0f3; + --el-fill-color-light: #f8fafc; + --el-bg-color: var(--surface); +} + +* { + box-sizing: border-box; +} + +button, +[role="button"], +.el-button, +a, +.menu-link, +.tab-chip, +.tab-close, +.icon-btn, +.bx-btn, +.bx-op-btn, +summary, +.nav-details > summary { + cursor: default; +} + +body { + margin: 0; + min-height: 100vh; + font-family: Inter, -apple-system, sans-serif; + font-size: 14px; + line-height: 1.5; + color: var(--text); + background: var(--bg-page); +} + +#app { + min-height: 100vh; +} + +.bx-layout { + display: flex; + height: 100vh; + min-height: 0; + overflow: hidden; +} + +.sidebar { + width: var(--sidebar-width); + flex-shrink: 0; + display: flex; + flex-direction: column; + min-height: 0; + background: var(--surface); + border-right: 1px solid var(--border); + padding: 24px 16px; + transition: width 0.2s ease, padding 0.2s ease, border-color 0.2s ease; + overflow: hidden; +} + +/* 侧栏菜单区单独纵向滚动(logo 固定) */ +.sidebar > .el-scrollbar { + flex: 1; + min-height: 0; +} + +.sidebar.collapsed { + width: 0; + padding-left: 0; + padding-right: 0; + border-right-color: transparent; +} + +.logo { + flex-shrink: 0; + display: flex; + flex-direction: column; + align-items: center; + gap: 8px; + font-size: 16px; + font-weight: 700; + color: var(--text-muted); + margin-bottom: 8px; +} + +.logo-mark { + flex-shrink: 0; + display: inline-flex; + align-items: center; + justify-content: center; + width: 100%; + max-height: 40px; +} + +.logo-img { + display: block; + height: 36px; + width: auto; + max-width: min(100%, 220px); + object-fit: contain; +} + +.logo-title { + color: var(--primary); + font-weight: 700; + letter-spacing: 0.02em; + font-size: 18px; + line-height: 1.2; + text-align: center; +} + +.nav-tree { + padding-bottom: 8px; +} + +.nav-details { + border: none; + margin: 0 0 4px; + padding: 0; +} + +.nav-details > summary { + list-style: none; + cursor: pointer; + display: flex; + align-items: center; + justify-content: space-between; + padding: 8px 12px; + margin: 0; + border-radius: var(--radius); + font-size: 12px; + font-weight: 700; + color: var(--text-muted); + letter-spacing: 0.02em; + user-select: none; +} + +.nav-details > summary::-webkit-details-marker { + display: none; +} + +.nav-details > summary::after { + content: ""; + width: 6px; + height: 6px; + border-right: 2px solid var(--text-muted); + border-bottom: 2px solid var(--text-muted); + transform: rotate(-45deg); + transition: transform 0.2s ease, border-color 0.15s ease; +} + +.nav-details[open] > summary::after { + transform: rotate(45deg); + margin-top: -2px; +} + +.nav-details > summary:hover { + background: var(--row-alt); + color: var(--text); +} + +.nav-details > summary:hover::after { + border-right-color: var(--text); + border-bottom-color: var(--text); +} + +.nav-summary-main { + display: flex; + align-items: center; + gap: 8px; + min-width: 0; + flex: 1; +} + +.nav-summary-text { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.nav-summary-ico { + flex-shrink: 0; + font-size: 16px; + color: var(--text-muted); +} + +.nav-details > summary:hover .nav-summary-ico { + color: var(--text); +} + +.nav-sub { + padding: 2px 0 6px 4px; + margin-left: 4px; + border-left: 2px solid var(--border); +} + +.nav-sub .nav-sub { + margin-left: 10px; + padding-left: 8px; + border-left-style: dashed; + border-left-width: 1px; +} + +.nav-sub .nav-details > summary { + font-size: 12px; + font-weight: 600; + padding: 6px 10px; +} + +.menu-link { + display: flex; + align-items: center; + gap: 8px; + margin: 2px 0; + padding: 8px 12px 8px 14px; + border-radius: var(--radius); + color: var(--text-muted); + text-decoration: none; + font-size: 13px; + font-weight: 500; +} + +.menu-link-ico { + flex-shrink: 0; + font-size: 16px; + color: var(--text-muted); +} + +.menu-link-text { + min-width: 0; + flex: 1; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.menu-pending-count { + flex-shrink: 0; + margin-left: 2px; + font-size: 12px; + font-weight: 600; + color: var(--danger); + line-height: 1.2; +} + +.menu-link.active .menu-pending-count { + color: var(--danger); +} + +.menu-link:hover { + background: var(--row-alt); + color: var(--text); +} + +.menu-link:hover .menu-link-ico { + color: var(--text); +} + +.menu-link.active { + background: var(--primary-bg); + color: var(--primary-dark); + font-weight: 600; +} + +.menu-link.active .menu-link-ico { + color: var(--primary-dark); +} + +/* 根级单菜单(无二级,如首页) */ +.menu-link.menu-link--l1-root { + margin: 0 0 4px; + padding: 8px 12px; + font-size: 12px; + font-weight: 700; + letter-spacing: 0.02em; +} + +.main { + flex: 1; + min-width: 0; + min-height: 0; + display: flex; + flex-direction: column; + overflow: hidden; +} + +.main > .header { + flex-shrink: 0; + height: 56px; + padding: 0 24px; + display: flex; + align-items: center; + justify-content: space-between; + background: var(--primary-dark); + border-bottom: 1px solid #047857; +} + +.main > .header .crumb { + color: rgba(255, 255, 255, 0.82); +} + +.main > .header .crumb b { + color: #fff; +} + +.main > .header .icon-btn { + color: rgba(255, 255, 255, 0.88); +} + +.main > .header .icon-btn:hover { + color: #fff; + background: rgba(255, 255, 255, 0.14); +} + +.main > .header .user-trigger { + color: #fff; + background: transparent; +} + +.main > .header .user-trigger:hover { + background: transparent; +} + +.main > .header .user-avatar { + box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.35); +} + +.header-left { + display: flex; + align-items: center; + gap: 3px; + min-width: 0; +} + +.header-actions { + display: inline-flex; + align-items: center; + gap: 3px; + flex-shrink: 0; +} + +.icon-btn { + appearance: none; + border: none; + color: var(--text-muted); + width: 32px; + height: 32px; + border-radius: 8px; + padding: 0; + margin: 0; + box-shadow: none; + background: transparent; + display: inline-flex; + align-items: center; + justify-content: center; + cursor: pointer; +} + +.icon-btn:hover { + color: var(--text); + background: var(--row-alt); +} + +.icon-btn .el-icon { + width: auto; + height: auto; + padding: 0; + margin: 0; + line-height: 1; + display: inline-flex; + align-items: center; + justify-content: center; + flex: 0 0 auto; +} + +.icon-btn .el-icon svg { + width: 20px; + height: 20px; + padding: 0; + margin: 0; + display: block; +} + +.crumb { + font-size: 13px; + color: var(--text-muted); + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.crumb b { + color: var(--text); + font-weight: 600; +} + +.header-right { + position: relative; + display: flex; + align-items: center; + gap: 10px; +} + +.user-trigger { + appearance: none; + border: none; + color: var(--text); + font-size: 13px; + font-weight: 600; + padding: 4px 8px 4px 4px; + border-radius: 999px; + background: transparent; + box-shadow: none; + margin: 0; + min-height: auto; + display: inline-flex; + align-items: center; + gap: 8px; + cursor: pointer; +} + +.user-trigger:hover { + background: var(--row-alt); +} + +.user-avatar { + width: 24px; + height: 24px; + border-radius: 50%; + color: #fff; + display: inline-flex; + align-items: center; + justify-content: center; + font-size: 12px; + font-weight: 700; +} + +.user-name { + font-size: 13px; + font-weight: 600; + line-height: 1; +} + +.content { + flex: 1; + min-height: 0; + display: flex; + flex-direction: column; + overflow: hidden; + padding: 24px; + background: var(--bg-page); +} + +/* 右侧业务内容区单独纵向滚动(页签条固定在上) */ +.content-scroll { + flex: 1; + min-height: 0; + overflow-x: hidden; + overflow-y: auto; +} + +.tabs-strip { + display: flex; + flex-wrap: wrap; + align-items: flex-end; + gap: 4px; + margin: 0 0 16px; + padding: 0 2px 10px; + border-bottom: 1px solid var(--border); +} + +.tab-chip { + border: 1px solid var(--border); + background: var(--surface); + color: var(--text-muted); + font-size: 13px; + font-weight: 600; + padding: 8px 14px; + border-radius: 8px 8px 0 0; + margin-bottom: -11px; + display: inline-flex; + align-items: center; + gap: 6px; + max-width: min(var(--sidebar-width), 320px); + cursor: pointer; +} + +.tab-chip:hover { + color: var(--text); + background: var(--row-alt); +} + +.tab-chip.active { + color: var(--primary-dark); + border-bottom-color: var(--surface); + box-shadow: 0 -2px 0 var(--primary) inset; +} + +.tab-chip .tab-close:hover { + opacity: 1; + background: rgba(100, 116, 139, 0.14); +} + +.tab-label { + min-width: 0; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.tab-close { + width: 16px; + height: 16px; + border: none; + border-radius: 4px; + background: transparent; + color: inherit; + opacity: 0.7; + cursor: pointer; + padding: 0; + display: inline-flex; + align-items: center; + justify-content: center; +} + +.tab-close .el-icon { + width: 12px; + height: 12px; +} + +.tab-context-menu { + position: fixed; + z-index: 1000; + width: max-content; + border: 1px solid var(--border); + border-radius: 10px; + background: var(--surface); + box-shadow: 0 8px 24px rgba(15, 23, 42, 0.12); + padding: 6px; +} + +.menu-item { + width: auto; + display: block; + border: 0; + background: transparent; + text-align: left; + color: var(--text); + padding: 8px 10px; + border-radius: 8px; + font-size: 13px; + cursor: pointer; + white-space: nowrap; +} + +.menu-item:hover { + background: var(--row-alt); +} + +.page-head { + margin-bottom: 16px; +} + +.page-head h1 { + margin: 0 0 4px; + font-size: 20px; + font-weight: 700; +} + +.desc { + margin: 0; + color: var(--text-muted); + font-size: 13px; +} + +/* 各页顶部统计卡:单行不换行,窄屏卡片等分变窄(原 grid auto-fit 会换行) */ +.stats { + display: flex; + flex-direction: row; + flex-wrap: nowrap; + align-items: stretch; + width: 100%; + min-width: 0; + gap: clamp(6px, 1.2vw, 12px); + margin-bottom: 16px; +} + +.stats > .stat { + flex: 1 1 0; + min-width: 0; + max-width: 100%; + box-sizing: border-box; + padding: clamp(8px, 1.8vw, 12px) clamp(6px, 1.2vw, 14px); + overflow: hidden; +} + +.stats > .stat .k { + margin: 0 0 6px; + font-size: clamp(11px, 2.4vw, 14px); + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.stats > .stat .v { + margin: 0; + font-size: clamp(13px, 3.8vw, 22px); + font-weight: 700; + color: var(--primary-dark); + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.stat { + background: #fff; + border: 1px solid var(--border); + border-radius: var(--radius); + padding: 12px 14px; + box-shadow: var(--shadow); +} + +.stat .k { + margin: 0 0 8px; + font-size: 14px; + font-weight: 600; +} + +.stat .v { + margin: 0; + font-size: 22px; + font-weight: 700; + color: var(--primary-dark); +} + +.visual-check { + margin-bottom: 16px; + padding: 12px 14px; + border: 1px solid var(--border); + border-radius: var(--radius-md); + background: var(--surface); +} + +.visual-check-head { + display: flex; + align-items: center; + justify-content: space-between; + gap: 8px; + margin-bottom: 10px; +} + +.visual-check-head h3 { + margin: 0; + font-size: 14px; + font-weight: 600; + color: var(--text); +} + +.visual-check-group { + display: flex; + align-items: center; + flex-wrap: wrap; + gap: 8px; + margin-bottom: 8px; +} + +.visual-check-alerts .el-alert { + max-width: 220px; +} + +.visual-check-label { + min-width: 42px; + font-size: 12px; + font-weight: 600; + color: var(--text-muted); +} + +.visual-check-switch-text { + font-size: 12px; + color: var(--text-muted); +} + +.panel { + background: #fff; + border: 1px solid var(--border); + border-radius: var(--radius); + box-shadow: var(--shadow); + overflow: hidden; + margin-bottom: 16px; +} + +.panel :is(.el-table__footer-wrapper td, .el-table__fixed-footer-wrapper td) { + background: var(--primary-bg) !important; + border-top: 2px solid var(--primary); + font-weight: 600; +} + +.simple-panel { + padding: 16px; +} + +.panel-top { + padding: 10px 16px; + border-bottom: 1px solid var(--border); + font-size: 14px; + font-weight: 600; + color: #000; +} + +.table-scroll { + overflow-x: auto; + overflow-y: hidden; +} + +.table-scroll .bx-table { + min-width: 920px; +} + +.filter-block { + padding: 12px 16px 10px; + border-bottom: 1px solid var(--border); +} + +.filter-actions { + padding-top: 10px; + display: flex; + justify-content: flex-start; + align-items: center; + gap: 10px; +} + +.btn-link.el-button { + height: 36px; + padding: 0 8px; + color: var(--primary-dark); +} + +.btn-link.el-button:hover { + background: var(--primary-bg); + border-radius: 8px; +} + +.filter-actions-end { + display: inline-flex; + align-items: center; + gap: 8px; + /* 无「展开更多条件」时仍把重置/查询固定在行尾 */ + margin-left: auto; +} + +/* 检索栏右侧按钮(重置/查询)按标准固定样式 */ +.filter-actions-end .filter-reset.el-button, +.filter-actions-end .filter-search.el-button { + height: 36px; + padding: 0 14px; + border-radius: 8px; + font-size: 14px; + font-weight: 600; + margin: 0; +} + +.filter-actions-end .filter-reset.el-button { + border: 1px solid var(--border); + background: var(--surface); + color: var(--text); +} + +.filter-actions-end .filter-reset.el-button:hover { + background: var(--row-alt); +} + +/* 查询:主色描边(无背景)+ 带搜索 icon */ +.filter-actions-end .filter-search.el-button { + border: 1px solid var(--primary); + background: transparent; + color: var(--primary-dark); +} + +.filter-actions-end .filter-search.el-button:hover { + border-color: var(--primary-dark); +} + +.filter-grid { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 10px 14px; + margin-bottom: 10px; +} + +@media (max-width: 1100px) { + .filter-grid { + grid-template-columns: repeat(2, 1fr); + } +} + +@media (max-width: 560px) { + .filter-grid { + grid-template-columns: 1fr; + } +} + +.filter-field label { + display: block; + font-size: 11px; + font-weight: 500; + color: var(--text-muted); + margin-bottom: 4px; +} + +.filter-field :is(.bx-input, .bx-select, .bx-date-picker) { + width: 100%; + min-width: 0; +} + +.list-toolbar { + background: var(--table-head); + border-bottom: 1px solid var(--border); + padding: 0; +} + +.list-toolbar-row { + padding: 8px 16px; + display: flex; + align-items: center; + gap: 8px; + flex-wrap: wrap; +} + +.list-toolbar-selected { + font-size: 12px; + font-weight: 600; + color: var(--text-muted); + min-height: 36px; + display: inline-flex; + align-items: center; + border-right: 1px solid var(--border); + padding-right: 12px; + margin-right: 4px; +} + +.list-toolbar-selected .sel-num { + color: var(--primary-dark); + font-weight: 700; + margin: 0 2px; +} + +.list-toolbar-actions { + display: inline-flex; + flex-wrap: wrap; + gap: 8px; + align-items: center; +} + +.list-toolbar-actions .bx-btn.el-button:not(.el-button--primary) { + background: var(--surface); + border-color: var(--border); + color: var(--text); +} + +.list-toolbar-actions .bx-btn.el-button:not(.el-button--primary):hover { + background: var(--row-alt); +} + +.list-pager { + display: flex; + flex-wrap: wrap; + align-items: center; + justify-content: space-between; + gap: 10px 12px; + padding: 8px 16px; + border-top: 1px solid var(--border); + background: var(--surface); + color: var(--text-muted); + font-size: 13px; +} + +.list-range { + white-space: nowrap; +} + +/* BX 页内 list-pager-bar:左 range 文案 + 右 el-pagination,垂直居中对齐 */ +.page-container .pagination.list-pager-bar { + display: flex; + flex-wrap: wrap; + align-items: center; + justify-content: space-between; + gap: 10px 12px; +} + +.page-container .pagination.list-pager-bar .list-range { + display: inline-flex; + align-items: center; + min-height: 32px; + font-size: 13px; + color: var(--text-muted); + line-height: 1; +} + +.page-container .pagination.list-pager-bar .el-pagination { + display: inline-flex; + flex-wrap: wrap; + align-items: center; + gap: 8px; + --el-pagination-button-height: 32px; + --el-pagination-button-width: 36px; + --el-pagination-font-size: 13px; + color: var(--text-muted); +} + +.page-container .pagination.list-pager-bar .el-pagination .el-pagination__total { + display: inline-flex; + align-items: center; + height: 32px; + line-height: 32px; + margin-right: 0; +} + +.page-container .pagination.list-pager-bar .el-pagination button, +.page-container .pagination.list-pager-bar .el-pagination .el-pager li { + min-width: 36px; + height: 32px; + line-height: 32px; + border-radius: 8px; +} + +.page-container .pagination.list-pager-bar .el-pagination .el-pagination__sizes .el-select__wrapper { + min-height: 32px; + border-radius: 8px; + min-width: 72px; +} + +.list-pager-right { + display: flex; + flex-wrap: wrap; + align-items: center; + gap: 8px; +} + +.pager-size-label, +.pager-size-suffix { + font-size: 13px; + color: var(--text-muted); + margin: 0; + white-space: nowrap; +} + +.list-pager .el-pagination { + --el-pagination-button-height: 32px; + --el-pagination-button-width: 36px; + --el-pagination-font-size: 13px; + color: var(--text-muted); + display: inline-flex; + align-items: center; + gap: 3px; +} + +.list-pager .el-pagination button, +.list-pager .el-pagination .el-pager li { + min-width: 36px; + height: 32px; + line-height: 32px; + border-radius: 8px; +} + +.list-pager .el-pagination .btn-prev, +.list-pager .el-pagination .btn-next, +.list-pager .el-pagination .el-pager li { + border: 1px solid var(--border); + background: var(--surface); + margin: 0; +} + +.list-pager .el-pagination .el-pager { + display: inline-flex; + align-items: center; + gap: 3px; + margin: 0; +} + +.list-pager .el-pagination .btn-prev, +.list-pager .el-pagination .btn-next { + padding: 0 10px; + min-width: 68px; +} + +.list-pager .el-pagination .el-pager li.is-active { + background: var(--primary); + border-color: var(--primary); + color: #fff; +} + +.list-pager .el-pagination .el-pager li.is-active:hover { + background: var(--primary-dark); + border-color: var(--primary-dark); +} + +.list-pager .el-pagination .el-pagination__sizes .el-select__wrapper { + min-height: 32px; + border-radius: 8px; + min-width: 72px; +} + +.panel :is(.el-table__footer-wrapper td, .el-table__fixed-footer-wrapper td) { + background: var(--primary-bg) !important; + border-top: 2px solid var(--primary); + font-weight: 600; + padding-top: 14px; + padding-bottom: 14px; +} + +.panel :is(.el-table__footer-wrapper td, .el-table__fixed-footer-wrapper td) .cell { + white-space: nowrap; + text-align: center; + color: #000; +} + +/* 合计行吸底固定(跟随列表滚动容器) */ +.panel .el-table__footer-wrapper, +.panel .el-table__fixed-footer-wrapper { + position: sticky; + bottom: 0; + z-index: 4; +} + +.ic { + width: 16px; + height: 16px; +} + +.ic-sm { + width: 14px; + height: 14px; +} + +.bx-input.el-input, +.bx-select.el-select, +.bx-date-picker.el-date-editor { + width: 100%; +} + +.bx-input .el-input__wrapper, +.bx-select .el-select__wrapper, +.bx-date-picker .el-input__wrapper { + min-height: var(--control-h); + border-radius: var(--radius-md); + box-shadow: none; + border: 1px solid var(--border); + background: var(--surface); +} + +.bx-input .el-input__wrapper.is-focus, +.bx-select .el-select__wrapper.is-focus, +.bx-date-picker .el-input__wrapper.is-focus { + border-color: var(--primary); + box-shadow: 0 0 0 2px rgba(16, 185, 129, 0.2); +} + +.bx-input .el-input__inner { + height: var(--control-h); + font-size: 14px; +} + +.bx-select .el-select__placeholder, +.bx-select .el-input__inner { + font-size: 14px; +} + +.bx-table.el-table { + --el-table-border-color: var(--border); + --el-table-header-bg-color: var(--table-head); + --el-table-row-hover-bg-color: var(--row-hover); + --el-table-text-color: #000; + --el-table-header-text-color: #000; + --el-table-bg-color: var(--surface); + --el-table-tr-bg-color: var(--surface); +} + +.bx-table .el-table__header-wrapper th { + font-size: 12px; + font-weight: 600; + color: #000; +} + +.bx-table .el-table__header-wrapper th .cell { + color: #000; +} + +.bx-table .el-table__body .el-table__cell .cell { + color: #000; +} + +.bx-table .el-table__cell { + padding: 10px 12px; +} + +.bx-table.el-table--border { + border: none; +} + +.bx-table .el-table__inner-wrapper::before { + background-color: var(--border); +} + +.bx-table .el-table__cell { + border-bottom: 1px solid var(--border); +} + +.bx-table .el-table__header-wrapper th { + background: var(--table-head) !important; +} + +.bx-table .el-table__row td { + background: var(--surface) !important; +} + +/* 列表:默认单元格居中;金额列右对齐、显式左对齐列等覆盖 */ +.bx-table .el-table__cell .cell, +.view-detail-table .el-table__cell .cell, +.dlg-view .el-table .el-table__cell .cell, +.bx-dialog .el-dialog__body .el-table .el-table__cell .cell, +.form-section .el-table .el-table__cell .cell, +.panel .el-table .el-table__cell .cell { + text-align: center; + color: #000; +} + +.view-detail-table .el-table__header-wrapper th, +.view-detail-table .el-table__header-wrapper th .cell, +.dlg-view .el-table .el-table__header-wrapper th, +.dlg-view .el-table .el-table__header-wrapper th .cell, +.bx-dialog .el-dialog__body .el-table .el-table__header-wrapper th, +.bx-dialog .el-dialog__body .el-table .el-table__header-wrapper th .cell, +.form-section .el-table .el-table__header-wrapper th, +.form-section .el-table .el-table__header-wrapper th .cell, +.panel .el-table .el-table__header-wrapper th, +.panel .el-table .el-table__header-wrapper th .cell { + color: #000; +} + +.bx-table :is(.col-align-left) .cell, +.view-detail-table :is(.col-align-left) .cell, +.dlg-view .el-table :is(.col-align-left) .cell, +.bx-dialog .el-dialog__body .el-table :is(.col-align-left) .cell, +.form-section .el-table :is(.col-align-left) .cell, +.panel .el-table :is(.col-align-left) .cell, +.bx-table th.col-align-left .cell, +.view-detail-table th.col-align-left .cell, +.panel .el-table th.col-align-left .cell { + text-align: left !important; +} + +.bx-table .col-money .cell, +.panel .list-table .col-money .cell, +.page-container .list-table td.el-table__cell.col-money, +.page-container .list-table td.el-table__cell.col-money > .cell, +.view-detail-table .col-money .cell, +.view-detail-table td.el-table__cell.col-money > .cell, +.dlg-view .el-table .col-money .cell, +.dlg-view .el-table td.el-table__cell.col-money > .cell, +.bx-dialog .el-dialog__body .el-table .col-money .cell, +.form-section .el-table .col-money .cell, +.el-dialog .list-table td.el-table__cell.col-money > .cell { + text-align: right; + font-variant-numeric: tabular-nums; + color: var(--danger); + font-weight: 600; +} + +/* 合计行:金额列强制右对齐(覆盖表尾默认居中) */ +.bx-table .el-table__footer-wrapper td.col-money .cell, +.bx-table .el-table__fixed-footer-wrapper td.col-money .cell, +.panel .list-table .el-table__footer-wrapper td.col-money .cell, +.panel .list-table .el-table__fixed-footer-wrapper td.col-money .cell, +.view-detail-table .el-table__footer-wrapper td.col-money .cell, +.view-detail-table .el-table__fixed-footer-wrapper td.col-money .cell, +.dlg-view .el-table .el-table__footer-wrapper td.col-money .cell, +.bx-dialog .el-dialog__body .el-table .el-table__footer-wrapper td.col-money .cell, +.form-section .el-table .el-table__footer-wrapper td.col-money .cell { + text-align: right !important; + font-variant-numeric: tabular-nums; + color: var(--danger); + font-weight: 600; +} + +/* 多选列:勾选框水平垂直居中 */ +.bx-table .el-table-column--selection .cell, +.form-section .el-table .el-table-column--selection .cell, +.bx-dialog .el-dialog__body .el-table .el-table-column--selection .cell { + display: flex !important; + justify-content: center; + align-items: center; + padding-left: 0; + padding-right: 0; +} + +.bx-table .col-actions .cell { + white-space: nowrap; + display: inline-flex; + flex-wrap: nowrap; + align-items: center; + gap: 6px; + justify-content: flex-start; +} + +/* 列表「当前节点」为空:无标签 */ +.node-current-empty { + color: #000; +} + +/* 列表合计:第 4 列常为「本页合计(n单)」加粗(备用金申请页除外,见下条) */ +.table-scroll.table-page-summary:not(.advance-apply-summary-merge) + .el-table__footer-wrapper + td:nth-child(4) + .cell { + font-weight: 600; + color: #000; +} + +/* 备用金申请:合计行首格 colspan=4 合并多选+序号+单号+申请人 */ +.table-scroll.table-page-summary.advance-apply-summary-merge + .el-table__footer-wrapper + td:first-child + .cell { + font-weight: 600; + color: #000; + text-align: center; +} + +.bx-table .col-actions .cell > * { + vertical-align: middle; +} + +.bx-table .el-table__body tr:hover > td { + background: var(--row-hover) !important; +} + +/* 列表偶数行浅底(整行同色;不按列斑马) */ +.bx-table .el-table__body tr.el-table__row:nth-child(even) > td.el-table__cell { + background: var(--row-alt) !important; +} + +.bx-table .el-table__body tr:hover td { + background: var(--row-hover) !important; +} + +.bx-tag { + display: inline-flex; + align-items: center; + padding: 3px 10px; + border-radius: 999px; + font-size: 12px; + font-weight: 600; + background: #fff; + border: none; + white-space: nowrap; +} + +.bx-tag--pending { color: #475569; } +.bx-tag--processing { color: #00a874; } +.bx-tag--done { color: #0f766e; } +.bx-tag--warning { + color: #b45309; + background: #fffbeb; +} +/* 历史误用 tone=warn 时与 warning 对齐 */ +.bx-tag--warn { + color: #b45309; + background: #fffbeb; +} +.bx-tag--error { color: #dc2626; } +.bx-tag--info { color: #0f766e; } + +.bx-btn.el-button { + height: var(--control-h); + border-radius: var(--radius-md); + font-size: 14px; + font-weight: 600; + gap: 2px; +} + +.bx-btn.el-button--primary { + background: var(--primary); + border-color: var(--primary); +} + +.bx-btn.el-button--primary:hover { + background: var(--primary-dark); + border-color: var(--primary-dark); +} + +/* 列表工具栏首按钮:主色描边(无背景) */ +.bx-btn.el-button--primary.is-plain { + background: transparent; + border-color: var(--primary); + color: var(--primary-dark); +} + +.bx-btn.el-button--primary.is-plain:hover { + background: transparent; + border-color: var(--primary-dark); + color: var(--primary-dark); +} + +.bx-op-btn.el-button { + height: 28px; + padding: 0 8px; + font-size: 12px; + font-weight: 600; + gap: 2px; + border-radius: 8px; + border: 1px solid var(--border); + background: var(--surface); + color: var(--text); +} + +.bx-op-btn.el-button.primary { + border-color: var(--primary); + background: transparent; + color: var(--primary-dark); +} + +.bx-op-btn.el-button.primary:hover { + border-color: var(--primary-dark); + background: transparent; + color: var(--primary-dark); +} + +.bx-op-btn.el-button:not(.primary):hover { + background: var(--row-alt); +} + +.el-table .el-button + .el-button { + margin-left: 8px; +} + +/* 按钮内所有 icon(含 loading)颜色跟随文字 currentColor */ +.el-button .el-icon { + color: currentColor; +} + +.el-button .el-icon svg { + fill: currentColor; + stroke: currentColor; +} + +.el-button.is-loading .el-icon { + color: currentColor; +} + +.bx-dialog .el-dialog { + border: 1px solid var(--border); + border-radius: var(--radius); + box-shadow: 0 16px 48px rgba(0, 0, 0, 0.12); + overflow: hidden; + display: flex; + flex-direction: column; + max-height: calc(100vh - 64px); +} + +.bx-dialog .el-dialog__header { + padding: 16px 22px; + border-bottom: 1px solid var(--border); + flex-shrink: 0; +} + +.bx-dialog .el-dialog__title { + font-size: 18px; + font-weight: 700; + color: var(--text); + letter-spacing: -0.02em; +} + +.bx-dialog .el-dialog__body { + padding: 20px 22px; + overflow-y: auto; + flex: 1; + max-height: calc(100vh - 200px); +} + +.bx-dialog .el-dialog__footer { + padding: 12px 22px; + border-top: 1px solid var(--border); + background: var(--table-head); + display: flex; + justify-content: flex-end; + gap: 8px; + flex-shrink: 0; +} + +.bx-dialog .el-dialog__headerbtn { + width: 32px; + height: 32px; + border-radius: 8px; + top: 12px; + right: 14px; +} + +.bx-dialog .el-dialog__headerbtn:hover { + background: var(--row-alt); +} + +.bx-dialog .el-dialog__close { + color: var(--text-muted); +} + +.bx-dialog .el-dialog__headerbtn:hover .el-dialog__close { + color: var(--text); +} + +.dlg-view { + padding: 0; +} + +.dlg-view-hero { + padding: 20px 22px; + background: linear-gradient(135deg, var(--primary-bg) 0%, var(--surface) 55%); + border-bottom: 1px solid var(--border); +} + +.dlg-view-hero-top { + display: flex; + align-items: center; + justify-content: space-between; + gap: 12px; + flex-wrap: wrap; +} + +.dlg-view-title { + margin: 0; + font-size: 18px; + font-weight: 700; + letter-spacing: -0.02em; +} + +.dlg-view-tags { + display: inline-flex; + align-items: center; + flex-wrap: wrap; + gap: 8px; +} + +.dlg-view-meta { + margin: 10px 0 0; + font-size: 13px; + color: var(--text-muted); + line-height: 1.5; +} + +.dlg-view-section { + padding: 20px 22px; + border-bottom: 1px solid var(--border); +} + +.dlg-view-section:last-child { + border-bottom: none; +} + +.dlg-view-section-title { + display: flex; + align-items: center; + gap: 8px; + margin: 0 0 10px; + font-size: 14px; + font-weight: 600; + color: var(--text, #1e293b); + + &::before { + content: ''; + width: 4px; + height: 14px; + border-radius: 999px; + background: var(--primary, #10b981); + flex-shrink: 0; + } +} + +.dlg-kv { + display: grid; + grid-template-columns: 96px minmax(0, 1fr) 96px minmax(0, 1fr); + gap: 14px 28px; + font-size: 13px; + align-items: start; +} + +.dlg-kv .v .clamp-wrap { + width: 100%; +} + +.dialog-view-xl .el-dialog, +.bx-dialog.dialog-view-xl .el-dialog { + width: min(920px, calc(100vw - 32px)) !important; +} + +.money-em, +.money-value, +.money-display { + color: var(--danger); + font-weight: 700; + font-variant-numeric: tabular-nums; +} + +.page-container .stats > .stat.stat-money .v { + color: var(--danger); + font-weight: 700; + font-variant-numeric: tabular-nums; +} + +.page-container .detail-total b, +.detail-total b { + color: var(--danger); + font-weight: 700; + font-variant-numeric: tabular-nums; +} + +/* 报销明细行内:单价 / 金额 / 总金额输入与展示 */ +.detail-table .col-amount, +.detail-table .col-price, +.detail-table .col-total { + :is(.el-input__inner, .el-input-number .el-input__inner) { + color: var(--danger); + font-weight: 600; + font-variant-numeric: tabular-nums; + } +} + +/* 弹窗/表单内金额字段(申请金额、发放金额、冲抵金额等) */ +.field-amount, +.field-amount-danger { + .el-form-item__label { + color: var(--danger); + font-weight: 600; + } + + :is(.el-input__inner, .el-input-number .el-input__inner, .el-input.is-disabled .el-input__inner) { + color: var(--danger); + font-weight: 600; + font-variant-numeric: tabular-nums; + } +} + +.section-gap-tight { + margin-top: 10px; +} + +.inline-row { + display: flex; + gap: 8px; + margin-bottom: 10px; + align-items: center; +} + +.inline-grow { + flex: 1; + min-width: 0; +} + +.field-no-margin { + margin: 0; +} + +.form-section-last { + border-bottom: none !important; + margin-bottom: 0 !important; + padding-bottom: 0 !important; +} + +.section-title-tight { + margin-bottom: 8px; +} + +.tag-list { + display: flex; + flex-wrap: wrap; + gap: 8px; +} + +.desc-tight { + margin-bottom: 12px; +} + +.fill-100 { + width: 100%; +} + +.tree-panel { + max-height: 400px; + overflow: auto; + border: 1px solid var(--el-border-color-light); + border-radius: 6px; + padding: 8px; +} + +.center-pad-lg { + text-align: center; + padding: 32px 0; +} + +.muted { + color: var(--text-muted); +} +.align-right { + display: flex; + justify-content: flex-end; + margin-top: 8px; +} + +.img-preview-wrap { + text-align: center; +} + +.img-preview { + max-width: 100%; + max-height: 60vh; +} + +.dlg-kv .k { + color: var(--text-muted); + font-size: 12px; + font-weight: 600; + line-height: 1.5; + word-break: break-word; +} + +.dlg-kv .v { + color: var(--text); + font-weight: 500; + min-width: 0; + line-height: 1.5; + word-break: break-word; +} + +/* kv-full:仅适合紧跟「行首 col1 的 .k」;若前面已是 k,v,k 占满三列,下一值请用普通 .v。 */ +.dlg-kv .v.kv-full { + grid-column: 2 / -1; +} + +.dlg-kv.dlg-kv--triple { + grid-template-columns: 96px minmax(0, 1fr) 96px minmax(0, 1fr); +} + +@media (max-width: 1280px) { + .dlg-kv { + grid-template-columns: 90px minmax(0, 1fr) 90px minmax(0, 1fr); + gap: 10px 16px; + } + + .dlg-kv.dlg-kv--triple { + grid-template-columns: 90px minmax(0, 1fr) 90px minmax(0, 1fr); + } +} + +@media (max-width: 900px) { + .dlg-kv { + grid-template-columns: 90px minmax(0, 1fr); + } + + .dlg-kv.dlg-kv--triple { + grid-template-columns: 90px minmax(0, 1fr); + } + + .dlg-kv .v.kv-full { + grid-column: auto; + } +} + +.dlg-note { + margin: 0 0 16px; + font-size: 13px; + color: var(--text-muted); +} + +.flow-scroll { + max-height: 320px; + overflow-y: auto; + padding-right: 4px; +} + +@media (max-width: 900px) { + .flow-scroll { + max-height: 260px; + } +} + +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border: 0; +} + +.wf-info-bar { + padding: 12px 16px; + display: flex; + gap: 24px; + align-items: center; + background: var(--primary-bg); + border-bottom: 1px solid var(--border); +} + +.field { + margin-bottom: 12px; +} + +.field label { + display: block; + font-size: 13px; + font-weight: 500; + margin-bottom: 6px; + color: var(--text); +} + +.form-section { + margin-bottom: 20px; + padding-bottom: 16px; + border-bottom: 1px dashed var(--border); +} + +.form-section:last-of-type { + border-bottom: none; + margin-bottom: 0; + padding-bottom: 0; +} + +.form-section h4 { + margin: 0 0 12px; + font-size: 13px; + font-weight: 700; + color: var(--text-muted); + letter-spacing: 0.04em; +} + +.form-grid-2 { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 12px 16px; +} + +@media (max-width: 560px) { + .form-grid-2 { + grid-template-columns: 1fr; + } +} + +/* Element Plus 组件语义色视觉对齐(fresh-mint-green) */ +.el-tag { + border-radius: 999px; + padding: 3px 10px; + font-size: 12px; + font-weight: 600; + line-height: 1.3; + background: #fff; + border: none; + box-shadow: none; + --el-tag-border-color: transparent; +} + +.el-tag.el-tag--success { + color: #0f766e; + background: #fff; + border: none; +} + +.el-tag.el-tag--warning { + color: #d97706; + background: #fff; + border: none; +} + +.el-tag.el-tag--danger { + color: #dc2626; + background: #fff; + border: none; +} + +.el-tag.el-tag--info { + color: #0f766e; + background: #fff; + border: none; +} + +.el-alert { + border-radius: var(--radius-md); + border: 1px solid transparent; +} + +.el-alert--success { + background: var(--success-bg); + border-color: #a7f3d0; + color: #0f766e; +} + +.el-alert--warning { + background: var(--warning-bg); + border-color: #fde68a; + color: #b45309; +} + +.el-alert--error { + background: var(--danger-bg); + border-color: #fecaca; + color: #b91c1c; +} + +.el-alert--info { + background: var(--info-bg); + border-color: #99f6e4; + color: #115e59; +} + +.el-message { + border-radius: var(--radius-md); + border: 1px solid transparent; + box-shadow: var(--shadow); +} + +.el-message--success { + background: var(--success-bg); + border-color: #a7f3d0; +} + +.el-message--warning { + background: var(--warning-bg); + border-color: #fde68a; +} + +.el-message--error { + background: var(--danger-bg); + border-color: #fecaca; +} + +.el-message--info { + background: var(--info-bg); + border-color: #99f6e4; +} + +.el-switch { + --el-switch-on-color: var(--primary); + --el-switch-off-color: #d1d5db; +} + +/* 工作流配置信息栏 */ +.wf-info-bar { + padding: 12px 16px; + display: flex; + gap: 24px; + align-items: center; + background: var(--primary-bg); + border-bottom: 1px solid var(--border); +} diff --git a/web-admin/src/utils/bx/attachment.ts b/web-admin/src/utils/bx/attachment.ts new file mode 100644 index 000000000..377bab98a --- /dev/null +++ b/web-admin/src/utils/bx/attachment.ts @@ -0,0 +1,103 @@ +import { attachmentApi, type BxId } from '@/api/bx' +import { ElMessage } from 'element-plus' + +export type BxAttachmentItem = { + id: number | string + fileName: string + fileType?: string + fileSize?: number + previewUrl?: string + _uploading?: boolean + _existing?: boolean +} + +const IMAGE_EXT = /\.(png|jpe?g|gif|webp|bmp|svg)$/i +const VIDEO_EXT = /\.(mp4|webm|ogg|mov|avi)$/i + +export function isBxImageFile(file: { fileName?: string; fileType?: string }) { + const name = String(file.fileName || '').toLowerCase() + const type = String(file.fileType || '').toLowerCase() + return type.startsWith('image/') || IMAGE_EXT.test(name) +} + +export function isBxVideoFile(file: { fileName?: string; fileType?: string }) { + const name = String(file.fileName || '').toLowerCase() + const type = String(file.fileType || '').toLowerCase() + return type.startsWith('video/') || VIDEO_EXT.test(name) +} + +export function canBxPreview(file: BxAttachmentItem) { + if (file._uploading) return false + return isBxImageFile(file) || isBxVideoFile(file) +} + +export async function fillBxAttachmentPreviews(files: BxAttachmentItem[]) { + const tasks = files + .filter((file) => isBxImageFile(file) && !file.previewUrl) + .map(async (file) => { + try { + const res: any = await attachmentApi.preview(file.id) + file.previewUrl = res.data?.url || '' + } catch { + /* preview optional */ + } + }) + await Promise.all(tasks) +} + +export async function loadBxAttachments(bizType: string, bizId: BxId): Promise { + const res: any = await attachmentApi.listByBiz(bizType, bizId) + const files: BxAttachmentItem[] = (res.data || []).map((item: any) => ({ + id: item.id, + fileName: item.fileName, + fileType: item.fileType || '', + fileSize: item.fileSize, + previewUrl: '', + _existing: true + })) + await fillBxAttachmentPreviews(files) + return files +} + +export async function downloadBxAttachment(file: { id: number | string; fileName: string }) { + try { + const res: any = await attachmentApi.download(file.id) + const blob = new Blob([res], { type: 'application/octet-stream' }) + const url = URL.createObjectURL(blob) + const anchor = document.createElement('a') + anchor.href = url + anchor.download = file.fileName + anchor.click() + URL.revokeObjectURL(url) + } catch (error: any) { + ElMessage.error(error?.message || '下载失败') + throw error + } +} + +export async function previewBxAttachment(file: BxAttachmentItem) { + if (isBxVideoFile(file)) { + try { + const res: any = await attachmentApi.preview(file.id) + return { type: 'video' as const, url: res.data?.url || '', fileName: file.fileName } + } catch (error: any) { + ElMessage.error(error?.message || '预览失败') + throw error + } + } + if (isBxImageFile(file)) { + if (file.previewUrl) { + return { type: 'image' as const, url: file.previewUrl, fileName: file.fileName } + } + try { + const res: any = await attachmentApi.preview(file.id) + file.previewUrl = res.data?.url || '' + return { type: 'image' as const, url: file.previewUrl, fileName: file.fileName } + } catch (error: any) { + ElMessage.error(error?.message || '预览失败') + throw error + } + } + await downloadBxAttachment(file) + return null +} diff --git a/web-admin/src/utils/bx/expenseItemCode.ts b/web-admin/src/utils/bx/expenseItemCode.ts new file mode 100644 index 000000000..fbd139f32 --- /dev/null +++ b/web-admin/src/utils/bx/expenseItemCode.ts @@ -0,0 +1,56 @@ +import { pinyin } from 'pinyin-pro' + +/** 递归收集树上已有项目编码(含子节点) */ +export function flattenExpenseItemCodes(nodes: unknown[]): string[] { + const out: string[] = [] + const walk = (arr: unknown[]) => { + for (const n of arr) { + const row = n as { itemCode?: string; children?: unknown[] } + if (row.itemCode != null && String(row.itemCode).trim() !== '') { + out.push(String(row.itemCode).trim()) + } + if (Array.isArray(row.children) && row.children.length) { + walk(row.children) + } + } + } + walk(nodes) + return out +} + +/** 项目名称 → 拼音首字母缩写(大写、字母数字) */ +export function itemNameToCodeBase(name: string): string { + const s = name.trim() + if (!s) return '' + const py = pinyin(s, { + pattern: 'first', + toneType: 'none', + type: 'string', + separator: '' + }) + return py + .toUpperCase() + .replace(/[^A-Z0-9]/g, '') + .slice(0, 32) +} + +/** 在已有编码集合中分配不重复编码:优先 base,冲突则 base01、base02… */ +export function allocateItemCode(base: string, existingCodes: string[]): string { + const upperExisting = new Set(existingCodes.map((c) => c.toUpperCase())) + let b = base.toUpperCase().replace(/[^A-Z0-9]/g, '') + if (!b) b = 'XM' + if (!upperExisting.has(b)) return b + for (let n = 1; n <= 999; n++) { + const candidate = `${b}${String(n).padStart(2, '0')}` + if (!upperExisting.has(candidate)) return candidate + } + return `${b}${Date.now().toString().slice(-6)}` +} + +/** 根据当前费用项目树生成建议的项目编码 */ +export function suggestExpenseItemCode(itemName: string, treeNodes: unknown[]): string { + if (!itemName.trim()) return '' + const base = itemNameToCodeBase(itemName) + const existing = flattenExpenseItemCodes(treeNodes) + return allocateItemCode(base || 'XM', existing) +} diff --git a/web-admin/src/utils/bx/format.ts b/web-admin/src/utils/bx/format.ts new file mode 100644 index 000000000..9f96d4972 --- /dev/null +++ b/web-admin/src/utils/bx/format.ts @@ -0,0 +1,144 @@ +export function statusLabel(status: number | string | null | undefined): string { + if (status == null) return '-' + const map: Record = { + 1: '启用', + 0: '禁用', + draft: '待提交', + pending: '审批中', + approved: '审批通过', + rejected: '审批驳回', + issued: '已发放', + paid: '已发放', + offset: '已冲抵', + processed: '已处理', + } + return map[status] ?? String(status) +} + +export function statusTone(status: number | string | null | undefined): string { + if (status == null) return 'info' + const map: Record = { + 1: 'done', + 0: 'info', + draft: 'info', + pending: 'warning', + approved: 'done', + rejected: 'error', + issued: 'done', + paid: 'done', + offset: 'done', + processed: 'done', + } + return map[status] ?? 'info' +} + +/** bx 状态 → Element Plus Tag type(对齐 OpenSpec 语义色) */ +export function statusTagType( + status: number | string | null | undefined +): 'success' | 'warning' | 'danger' | 'info' | 'primary' { + const tone = statusTone(status) + const map: Record = { + done: 'success', + error: 'danger', + warning: 'warning', + info: 'info', + processing: 'primary', + } + return map[tone] ?? 'info' +} + +export function menuTypeLabel(type: number): string { + const map: Record = { 1: '目录', 2: '菜单', 3: '按钮' } + return map[type] ?? String(type) +} + +function formatMoneyNumber(value: unknown): string { + const n = Number(value) + if (!Number.isFinite(n)) return '0.00' + return n.toLocaleString('zh-CN', { minimumFractionDigits: 2, maximumFractionDigits: 2 }) +} + +/** 金额展示:¥ + 固定两位小数(500 → ¥500.00) */ +export function formatMoney(value: unknown): string { + return `¥${formatMoneyNumber(value)}` +} + +/** 带 ¥ 前缀的金额展示(与 formatMoney 一致,保留别名便于语义区分) */ +export function formatMoneyYuan(value: unknown): string { + return formatMoney(value) +} + +/** 列表合计行金额展示 */ +export function formatSumMoney(n: number): string { + return formatMoney(n) +} + +/** el-table-column 金额列 formatter */ +export function moneyTableFormatter(_row: unknown, _column: unknown, cellValue: unknown): string { + return formatMoney(cellValue) +} + +/** 列表「当前节点」是否有可展示文案(空/null/空白串视为无) */ +export function hasWorkflowNode(value: unknown): boolean { + if (value == null) return false + return String(value).trim() !== '' +} + +const DRAFT_STATUS_SET = new Set(['draft', '待提交', '未提交']) +const COMPLETED_NODE_STATUS_SET = new Set([ + 'approved', + 'issued', + 'paid', + 'offset', + 'processed', + '审批通过', + '已发放', + '已冲抵', + '已处理', +]) + +/** 当前节点展示文案:无节点名时按单据状态回退(如未提交、已完成) */ +export function workflowNodeLabel(currentNode: unknown, status: unknown): string | null { + if (hasWorkflowNode(currentNode)) return String(currentNode).trim() + const s = String(status ?? '').trim() + if (!s) return null + if (DRAFT_STATUS_SET.has(s)) return '未提交' + if (COMPLETED_NODE_STATUS_SET.has(s)) return '已完成' + if (s === 'rejected' || s === '审批驳回') return '已驳回' + return null +} + +/** 当前节点标签语义色 */ +export function workflowNodeTone(currentNode: unknown, status: unknown): string { + if (hasWorkflowNode(currentNode)) return statusTone(currentNode) + const label = workflowNodeLabel(currentNode, status) + if (label === '未提交') return 'info' + if (label === '已完成') return 'done' + if (label === '已驳回') return 'error' + return 'info' +} + +export function shouldShowWorkflowNodeTag(currentNode: unknown, status: unknown): boolean { + return workflowNodeLabel(currentNode, status) != null +} + +/** 当前节点 → Element Plus Tag type */ +export function workflowNodeTagType( + currentNode: unknown, + status: unknown +): 'success' | 'warning' | 'danger' | 'info' | 'primary' { + const tone = workflowNodeTone(currentNode, status) + const map: Record = { + done: 'success', + error: 'danger', + warning: 'warning', + info: 'info', + processing: 'primary', + } + return map[tone] ?? 'info' +} + +/** 详情键值区等纯文本展示 */ +export function workflowNodeDisplay(currentNode: unknown, status: unknown): string { + return workflowNodeLabel(currentNode, status) ?? '-' +} diff --git a/web-admin/src/utils/http/bx.ts b/web-admin/src/utils/http/bx.ts new file mode 100644 index 000000000..efcacd569 --- /dev/null +++ b/web-admin/src/utils/http/bx.ts @@ -0,0 +1,86 @@ +/** + * bx 报销模块 HTTP 客户端 + * 协议:code === 0、msg、data.rows(与门户 request code===200 分离) + */ +import axios, { type AxiosRequestConfig, type InternalAxiosRequestConfig } from 'axios' +import { ElMessage } from 'element-plus' +import { useUserStore } from '@/store/modules/user' + +export interface BxApiResponse { + code: number + msg: string + data?: T +} + +const bxAxios = axios.create({ + baseURL: '/api', + timeout: 60000, + headers: { 'Content-Type': 'application/json' } +}) + +bxAxios.interceptors.request.use((config: InternalAxiosRequestConfig) => { + const token = useUserStore().accessToken + if (token) { + config.headers.Authorization = `Bearer ${token}` + } + return config +}) + +bxAxios.interceptors.response.use( + async (res) => { + if (res.config.responseType === 'blob') { + const contentType = String(res.headers['content-type'] || '') + if (contentType.includes('application/json')) { + const text = await (res.data as Blob).text() + try { + const json = JSON.parse(text) as BxApiResponse + if (json.code !== 0) { + ElMessage.error(json.msg || '请求失败') + return Promise.reject(new Error(json.msg)) + } + } catch { + /* 非 JSON blob 直出 */ + } + } + return res.data + } + + const body = res.data as BxApiResponse + if (body?.code !== undefined && body.code !== 0) { + ElMessage.error(body.msg || '请求失败') + return Promise.reject(new Error(body.msg || '请求失败')) + } + return body + }, + async (err) => { + if (err.response?.status === 401) { + const userStore = useUserStore() + await userStore.logOut() + } else { + const detail = err.response?.data?.detail || err.response?.data?.msg + ElMessage.error(detail || err.message || '网络异常') + } + return Promise.reject(err) + } +) + +function request(config: AxiosRequestConfig) { + return bxAxios.request>(config) +} + +const bxRequest = { + get(url: string, config?: AxiosRequestConfig) { + return request({ ...config, url, method: 'GET' }) + }, + post(url: string, data?: unknown, config?: AxiosRequestConfig) { + return request({ ...config, url, method: 'POST', data }) + }, + put(url: string, data?: unknown, config?: AxiosRequestConfig) { + return request({ ...config, url, method: 'PUT', data }) + }, + delete(url: string, config?: AxiosRequestConfig) { + return request({ ...config, url, method: 'DELETE' }) + } +} + +export default bxRequest diff --git a/web-admin/src/views/bx/advance/apply/index.vue b/web-admin/src/views/bx/advance/apply/index.vue new file mode 100644 index 000000000..63e3fb04f --- /dev/null +++ b/web-admin/src/views/bx/advance/apply/index.vue @@ -0,0 +1,802 @@ + + + + + diff --git a/web-admin/src/views/bx/advance/approve/index.vue b/web-admin/src/views/bx/advance/approve/index.vue new file mode 100644 index 000000000..c1bf94e37 --- /dev/null +++ b/web-admin/src/views/bx/advance/approve/index.vue @@ -0,0 +1,653 @@ + + + + + diff --git a/web-admin/src/views/bx/advance/issue/index.vue b/web-admin/src/views/bx/advance/issue/index.vue new file mode 100644 index 000000000..f6caa4e30 --- /dev/null +++ b/web-admin/src/views/bx/advance/issue/index.vue @@ -0,0 +1,718 @@ + + + + + diff --git a/web-admin/src/views/bx/expense-item/index.vue b/web-admin/src/views/bx/expense-item/index.vue new file mode 100644 index 000000000..92bffdfb2 --- /dev/null +++ b/web-admin/src/views/bx/expense-item/index.vue @@ -0,0 +1,586 @@ + + + + + diff --git a/web-admin/src/views/bx/payment/index.vue b/web-admin/src/views/bx/payment/index.vue new file mode 100644 index 000000000..3e69a545f --- /dev/null +++ b/web-admin/src/views/bx/payment/index.vue @@ -0,0 +1,1171 @@ + + + + + + + diff --git a/web-admin/src/views/bx/reimburse/apply/index.vue b/web-admin/src/views/bx/reimburse/apply/index.vue new file mode 100644 index 000000000..29df2207b --- /dev/null +++ b/web-admin/src/views/bx/reimburse/apply/index.vue @@ -0,0 +1,977 @@ + + + + + + + diff --git a/web-admin/src/views/bx/reimburse/approve/index.vue b/web-admin/src/views/bx/reimburse/approve/index.vue new file mode 100644 index 000000000..2200241ca --- /dev/null +++ b/web-admin/src/views/bx/reimburse/approve/index.vue @@ -0,0 +1,857 @@ + + + + + + + diff --git a/web-admin/src/views/bx/view/all/index.vue b/web-admin/src/views/bx/view/all/index.vue new file mode 100644 index 000000000..aae5c63cf --- /dev/null +++ b/web-admin/src/views/bx/view/all/index.vue @@ -0,0 +1,482 @@ + + + + + diff --git a/web-admin/src/views/bx/view/mine/index.vue b/web-admin/src/views/bx/view/mine/index.vue new file mode 100644 index 000000000..ed1cfba48 --- /dev/null +++ b/web-admin/src/views/bx/view/mine/index.vue @@ -0,0 +1,459 @@ + + + + + diff --git a/web-admin/src/views/bx/view/todo/index.vue b/web-admin/src/views/bx/view/todo/index.vue new file mode 100644 index 000000000..e3ff041f6 --- /dev/null +++ b/web-admin/src/views/bx/view/todo/index.vue @@ -0,0 +1,636 @@ + + + + + diff --git a/web-admin/src/views/bx/workflow/advance/index.vue b/web-admin/src/views/bx/workflow/advance/index.vue new file mode 100644 index 000000000..dfeca328d --- /dev/null +++ b/web-admin/src/views/bx/workflow/advance/index.vue @@ -0,0 +1,419 @@ + + + + + diff --git a/web-admin/src/views/bx/workflow/reimburse/index.vue b/web-admin/src/views/bx/workflow/reimburse/index.vue new file mode 100644 index 000000000..f2ae9409a --- /dev/null +++ b/web-admin/src/views/bx/workflow/reimburse/index.vue @@ -0,0 +1,419 @@ + + + + + diff --git a/web-admin/src/views/index/route-parent.vue b/web-admin/src/views/index/route-parent.vue new file mode 100644 index 000000000..2988dbe42 --- /dev/null +++ b/web-admin/src/views/index/route-parent.vue @@ -0,0 +1,8 @@ + + + +