diff --git a/backend/app.pid b/backend/app.pid index 57b1cd123..eeb69bc0f 100644 --- a/backend/app.pid +++ b/backend/app.pid @@ -1 +1 @@ -90023 +4800 diff --git a/backend/app/api/pl/freight.py b/backend/app/api/pl/freight.py index a0906b904..f8ae75882 100644 --- a/backend/app/api/pl/freight.py +++ b/backend/app/api/pl/freight.py @@ -1,38 +1,32 @@ """运输计划管理 - 运费结算 API""" from datetime import date from typing import Optional -import json from fastapi import APIRouter, Depends, HTTPException, Query, status -from sqlalchemy import func from sqlalchemy.orm import Session from app.core.database import get_db from app.core.db_auth import DbUserContext, get_db_current_user from app.core.tenant_context import get_tenant_no -from app.core.utils import generate_uuid -from app.models.pl_models import ( - PlFreightSettlement, - PlFreightSettlementTransport, - PlRemittanceVoucher, - PlTransport, -) +from app.models.pl_models import PlFreightSettlement from app.schemas.pl.freight import ( + FreightSettlementApprovalActionBody, FreightSettlementCreate, - FreightSettlementListQuery, + FreightSettlementDisburseBody, FreightSettlementListResponse, FreightSettlementRead, + FreightSettlementSubmitApprovalBody, FreightSettlementUpdate, FreightSettlementWithTransports, - RemittanceVoucherCreate, RemittanceVoucherRead, + UnsettledPlanListResponse, ) +from app.services import pl_freight_settlement_service as freight_svc router = APIRouter(prefix="/freight", tags=["运输计划-运费结算"]) def _generate_settlement_no(db: Session) -> str: - """生成结算单编号""" today = date.today() prefix = f"SXJS{today.strftime('%Y%m%d')}" @@ -46,51 +40,55 @@ def _generate_settlement_no(db: Session) -> str: .first() ) - if last: - last_seq = int(last.settlement_no[-4:]) - seq = last_seq + 1 - else: - seq = 1 - + seq = int(last.settlement_no[-4:]) + 1 if last else 1 return f"{prefix}{seq:04d}" -# ============================================================================= -# 结算单列表 -# ============================================================================= +@router.get("/unsettled-plans", response_model=UnsettledPlanListResponse) +def list_unsettled_plans( + q: Optional[str] = Query(default=None), + plan_type: Optional[str] = Query(default=None, alias="planType"), + license_plate: Optional[str] = Query(default=None, alias="licensePlate"), + page: int = Query(default=1, ge=1), + page_size: int = Query(default=20, ge=1, le=100, alias="pageSize"), + db: Session = Depends(get_db), + user: DbUserContext = Depends(get_db_current_user), +) -> UnsettledPlanListResponse: + tenant_no = get_tenant_no(db, user.to_tenant_user_dict()) + total, items = freight_svc.list_unsettled_plans( + db, + tenant_no=tenant_no, + q=q, + plan_type=plan_type, + license_plate=license_plate, + page=page, + page_size=page_size, + ) + return UnsettledPlanListResponse(total=total, list=items) @router.get("/", response_model=FreightSettlementListResponse) def list_settlements( - q: Optional[str] = Query(default=None, description="模糊搜索"), - settlement_status: Optional[str] = Query(default=None, alias="settlementStatus", description="结算状态"), + q: Optional[str] = Query(default=None), + settlement_status: Optional[str] = Query(default=None, alias="settlementStatus"), + tab: Optional[str] = Query(default=None, description="bills|disburse|settled"), page: int = Query(default=1, ge=1), page_size: int = Query(default=20, ge=1, le=100, alias="pageSize"), db: Session = Depends(get_db), user: DbUserContext = Depends(get_db_current_user), ) -> FreightSettlementListResponse: tenant_no = get_tenant_no(db, user.to_tenant_user_dict()) - query = db.query(PlFreightSettlement).filter( - PlFreightSettlement.tenant_no == tenant_no, - PlFreightSettlement.del_flag == 0, + total, items = freight_svc.list_settlements_enriched( + db, + tenant_no=tenant_no, + user_id=user.id, + q=q, + settlement_status=settlement_status, + tab=tab, + page=page, + page_size=page_size, ) - - if settlement_status: - query = query.filter(PlFreightSettlement.settlement_status == settlement_status) - - if q: - query = query.filter(PlFreightSettlement.settlement_no.contains(q)) - - total = query.count() - offset = (page - 1) * page_size - settlements = query.order_by(PlFreightSettlement.create_time.desc()).offset(offset).limit(page_size).all() - - return FreightSettlementListResponse(total=total, list=settlements) - - -# ============================================================================= -# 生成结算单 -# ============================================================================= + return FreightSettlementListResponse(total=total, list=items) @router.post("/", response_model=FreightSettlementRead, status_code=status.HTTP_201_CREATED) @@ -100,59 +98,18 @@ def create_settlement( user: DbUserContext = Depends(get_db_current_user), ) -> FreightSettlementRead: tenant_no = get_tenant_no(db, user.to_tenant_user_dict()) - - # 计算总运费 - transports = ( - db.query(PlTransport) - .filter( - PlTransport.id.in_(payload.transport_ids), - PlTransport.tenant_no == tenant_no, - PlTransport.del_flag == 0, - ) - .all() - ) - - if not transports: - raise HTTPException(status_code=400, detail="请选择有效的运输单") - - total_freight = sum(float(t.freight_amount or 0) for t in transports) - - settlement_no = _generate_settlement_no(db) - - settlement = PlFreightSettlement( - id=generate_uuid(), + settlement = freight_svc.create_settlement( + db, tenant_no=tenant_no, - settlement_no=settlement_no, - total_freight=total_freight, - settlement_status="pending", - create_by=user.id, - create_dept_id=user.dept_id, + plan_ids=payload.plan_ids, + transport_ids=payload.transport_ids, + user_id=user.id, + dept_id=user.dept_id, + settlement_no=_generate_settlement_no(db), ) - db.add(settlement) - - # 关联运输单 - for t in transports: - st = PlFreightSettlementTransport( - id=generate_uuid(), - tenant_no=tenant_no, - settlement_id=settlement.id, - transport_id=t.id, - freight_amount=t.freight_amount, - create_by=user.id, - create_dept_id=user.dept_id, - ) - db.add(st) - - db.commit() - db.refresh(settlement) return settlement -# ============================================================================= -# 获取结算单详情 -# ============================================================================= - - @router.get("/{id}", response_model=FreightSettlementWithTransports) def get_settlement( id: str, @@ -160,34 +117,10 @@ def get_settlement( user: DbUserContext = Depends(get_db_current_user), ) -> FreightSettlementWithTransports: tenant_no = get_tenant_no(db, user.to_tenant_user_dict()) - - settlement = _get_settlement(db, tenant_no, id) - - # 获取关联的运输单 - transport_links = ( - db.query(PlFreightSettlementTransport) - .filter( - PlFreightSettlementTransport.settlement_id == id, - PlFreightSettlementTransport.del_flag == 0, - ) - .all() + detail = freight_svc.get_settlement_detail( + db, tenant_no=tenant_no, settlement_id=id, user_id=user.id ) - - transport_ids = [t.transport_id for t in transport_links] - transports = ( - db.query(PlTransport) - .filter(PlTransport.id.in_(transport_ids), PlTransport.del_flag == 0) - .all() - ) - - result = FreightSettlementWithTransports.model_validate(settlement) - result.transports = transports - return result - - -# ============================================================================= -# 更新结算单 -# ============================================================================= + return FreightSettlementWithTransports.model_validate(detail) @router.put("/{id}", response_model=FreightSettlementRead) @@ -198,98 +131,119 @@ def update_settlement( user: DbUserContext = Depends(get_db_current_user), ) -> FreightSettlementRead: tenant_no = get_tenant_no(db, user.to_tenant_user_dict()) - settlement = _get_settlement(db, tenant_no, id) - - update_data = payload.model_dump(exclude_unset=True) - for key, value in update_data.items(): - setattr(settlement, key, value) - - settlement.update_by = user.id - db.commit() - db.refresh(settlement) - return settlement - - -# ============================================================================= -# 提交结算单 -# ============================================================================= - - -@router.post("/{id}/submit", response_model=FreightSettlementRead) -def submit_settlement( - id: str, - db: Session = Depends(get_db), - user: DbUserContext = Depends(get_db_current_user), -) -> FreightSettlementRead: - tenant_no = get_tenant_no(db, user.to_tenant_user_dict()) - settlement = _get_settlement(db, tenant_no, id) - - if settlement.settlement_status != "pending": - raise HTTPException(status_code=400, detail="当前状态不允许提交") - - settlement.settlement_status = "submitted" - settlement.update_by = user.id - db.commit() - db.refresh(settlement) - return settlement - - -# ============================================================================= -# 审核结算单 -# ============================================================================= - - -@router.post("/{id}/approve", response_model=FreightSettlementRead) -def approve_settlement( - id: str, - db: Session = Depends(get_db), - user: DbUserContext = Depends(get_db_current_user), -) -> FreightSettlementRead: - tenant_no = get_tenant_no(db, user.to_tenant_user_dict()) - settlement = _get_settlement(db, tenant_no, id) - - if settlement.settlement_status not in ("submitted",): - raise HTTPException(status_code=400, detail="当前状态不允许审核") - - settlement.settlement_status = "confirmed" - settlement.update_by = user.id - db.commit() - db.refresh(settlement) - return settlement - - -# ============================================================================= -# 汇款凭证 -# ============================================================================= - - -@router.post("/voucher", status_code=status.HTTP_201_CREATED) -def create_voucher( - payload: RemittanceVoucherCreate, - db: Session = Depends(get_db), - user: DbUserContext = Depends(get_db_current_user), -) -> RemittanceVoucherRead: - tenant_no = get_tenant_no(db, user.to_tenant_user_dict()) - - voucher = PlRemittanceVoucher( - id=generate_uuid(), - tenant_no=tenant_no, - settlement_id=payload.settlement_id, - remittance_date=payload.remittance_date, - remittance_amount=payload.remittance_amount, - voucher_urls=json.dumps(payload.voucher_urls) if payload.voucher_urls else None, - remark=payload.remark, - create_by=user.id, - create_dept_id=user.dept_id, + return freight_svc.update_settlement_draft( + db, tenant_no=tenant_no, settlement_id=id, payload=payload, user_id=user.id ) - db.add(voucher) - db.commit() - db.refresh(voucher) - result = RemittanceVoucherRead.model_validate(voucher) - if voucher.voucher_urls: - result.voucher_urls = voucher.voucher_urls - return result + +@router.delete("/{id}", status_code=status.HTTP_204_NO_CONTENT) +def delete_settlement( + id: str, + db: Session = Depends(get_db), + user: DbUserContext = Depends(get_db_current_user), +) -> None: + tenant_no = get_tenant_no(db, user.to_tenant_user_dict()) + freight_svc.delete_draft_settlement( + db, tenant_no=tenant_no, settlement_id=id, user_id=user.id + ) + + +@router.post("/{id}/submit-approval", response_model=FreightSettlementRead) +def submit_settlement_approval( + id: str, + payload: FreightSettlementSubmitApprovalBody, + db: Session = Depends(get_db), + user: DbUserContext = Depends(get_db_current_user), +) -> FreightSettlementRead: + tenant_no = get_tenant_no(db, user.to_tenant_user_dict()) + return freight_svc.submit_settlement_approval( + db, + tenant_no=tenant_no, + settlement_id=id, + body=payload, + user_id=user.id, + dept_id=user.dept_id, + ) + + +@router.post("/approval/{approval_id}", response_model=FreightSettlementRead) +def process_settlement_approval( + approval_id: str, + payload: FreightSettlementApprovalActionBody, + db: Session = Depends(get_db), + user: DbUserContext = Depends(get_db_current_user), +) -> FreightSettlementRead: + tenant_no = get_tenant_no(db, user.to_tenant_user_dict()) + if payload.action not in ("approve", "reject"): + raise HTTPException(status_code=400, detail="action 必须为 approve 或 reject") + return freight_svc.process_settlement_approval( + db, + tenant_no=tenant_no, + approval_id=approval_id, + action=payload.action, + comment=payload.comment, + user_id=user.id, + ) + + +@router.post("/{id}/withdraw-approval", response_model=FreightSettlementRead) +def withdraw_settlement_approval( + id: str, + db: Session = Depends(get_db), + user: DbUserContext = Depends(get_db_current_user), +) -> FreightSettlementRead: + tenant_no = get_tenant_no(db, user.to_tenant_user_dict()) + return freight_svc.withdraw_settlement_approval( + db, tenant_no=tenant_no, settlement_id=id, user_id=user.id + ) + + +@router.get("/{id}/approval-flow") +def get_settlement_approval_flow( + id: str, + db: Session = Depends(get_db), + user: DbUserContext = Depends(get_db_current_user), +): + tenant_no = get_tenant_no(db, user.to_tenant_user_dict()) + freight_svc.get_settlement_row(db, tenant_no, id) + return freight_svc.get_approval_flow(db, id) + + +@router.post("/{id}/disburse", response_model=FreightSettlementRead) +def disburse_settlement( + id: str, + payload: FreightSettlementDisburseBody, + db: Session = Depends(get_db), + user: DbUserContext = Depends(get_db_current_user), +) -> FreightSettlementRead: + tenant_no = get_tenant_no(db, user.to_tenant_user_dict()) + return freight_svc.disburse_settlement( + db, + tenant_no=tenant_no, + settlement_id=id, + body=payload, + user_id=user.id, + dept_id=user.dept_id, + ) + + +# 向后兼容旧接口 +@router.post("/{id}/submit", response_model=FreightSettlementRead, deprecated=True) +def submit_settlement_legacy( + id: str, + db: Session = Depends(get_db), + user: DbUserContext = Depends(get_db_current_user), +) -> FreightSettlementRead: + raise HTTPException(status_code=400, detail="请使用 submit-approval 接口并选择审批人") + + +@router.post("/{id}/approve", response_model=FreightSettlementRead, deprecated=True) +def approve_settlement_legacy( + id: str, + db: Session = Depends(get_db), + user: DbUserContext = Depends(get_db_current_user), +) -> FreightSettlementRead: + raise HTTPException(status_code=400, detail="请使用 approval/{approvalId} 接口审批") @router.get("/voucher/{settlement_id}", response_model=list[RemittanceVoucherRead]) @@ -299,35 +253,8 @@ def list_vouchers( user: DbUserContext = Depends(get_db_current_user), ) -> list[RemittanceVoucherRead]: tenant_no = get_tenant_no(db, user.to_tenant_user_dict()) - - vouchers = ( - db.query(PlRemittanceVoucher) - .filter( - PlRemittanceVoucher.settlement_id == settlement_id, - PlRemittanceVoucher.tenant_no == tenant_no, - PlRemittanceVoucher.del_flag == 0, - ) - .order_by(PlRemittanceVoucher.create_time.desc()) - .all() + freight_svc.get_settlement_row(db, tenant_no, settlement_id) + detail = freight_svc.get_settlement_detail( + db, tenant_no=tenant_no, settlement_id=settlement_id, user_id=user.id ) - return vouchers - - -# ============================================================================= -# 辅助函数 -# ============================================================================= - - -def _get_settlement(db: Session, tenant_no: str, settlement_id: str) -> PlFreightSettlement: - settlement = ( - db.query(PlFreightSettlement) - .filter( - PlFreightSettlement.id == settlement_id, - PlFreightSettlement.tenant_no == tenant_no, - PlFreightSettlement.del_flag == 0, - ) - .first() - ) - if not settlement: - raise HTTPException(status_code=404, detail="结算单不存在") - return settlement + return detail.get("vouchers") or [] diff --git a/backend/app/api/pl/plan.py b/backend/app/api/pl/plan.py index cdb9a9e9e..aedf23d76 100644 --- a/backend/app/api/pl/plan.py +++ b/backend/app/api/pl/plan.py @@ -2,7 +2,7 @@ from datetime import date from typing import Optional -from fastapi import APIRouter, Depends, HTTPException, Query, status +from fastapi import APIRouter, Body, Depends, HTTPException, Query, status from sqlalchemy import func, or_ from sqlalchemy.orm import Session @@ -27,6 +27,7 @@ from app.models.pl_models import ( from app.schemas.pl import PlanProductCreate from app.schemas.pl.plan import ( CreateFromContractRequest, + PlanArchiveBody, PlanCreate, PlanCreateFull, PlanListQuery, @@ -43,11 +44,14 @@ from app.services.pl_inventory_link_read import build_transport_inventory_link_r from app.services.pl_site_link_read import build_transport_site_link_read_from_row from app.services.pl_transport_site_service import revoke_site_links_for_transport from app.services.pl_plan_service import ( + apply_archive_freight, + apply_archive_product_quantities, apply_vehicle_prefill_to_plan, build_plan_product, calc_plan_total_amount, clear_draft_transport_for_plan, determine_plan_type, + record_plan_change, resolve_hazard_flags_from_crm, sync_transport_prefill_for_plan, update_plan_product_certs, @@ -586,10 +590,6 @@ def update_plan( tenant_no = get_tenant_no(db, user.to_tenant_user_dict()) plan = _get_plan(db, tenant_no, id) - # 不能修改已归档的计划 - if plan.archive_status == "archived": - raise HTTPException(status_code=400, detail="已归档的计划不能修改") - # 更新主表字段 update_data = payload.model_dump(exclude_unset=True, exclude={"products", "transport"}) for key, value in update_data.items(): @@ -897,24 +897,60 @@ def cancel_plan( # ============================================================================= -@router.post("/{id}/archive", response_model=PlanRead) +@router.post("/{id}/archive", response_model=PlanWithProducts) def archive_plan( id: str, + payload: Optional[PlanArchiveBody] = Body(default=None), db: Session = Depends(get_db), user: DbUserContext = Depends(get_db_current_user), -) -> PlanRead: +) -> PlanWithProducts: tenant_no = get_tenant_no(db, user.to_tenant_user_dict()) plan = _get_plan(db, tenant_no, id) - if plan.archive_status == "archived": - raise HTTPException(status_code=400, detail="计划已归档") + if plan.follow_status == "cancelled": + raise HTTPException(status_code=400, detail="已作废的计划不能归档") + + already_archived = plan.archive_status == "archived" + + if payload is None: + if already_archived: + raise HTTPException(status_code=400, detail="计划已归档,请提交归档表单以调整内容") + plan.archive_status = "archived" + plan.complete_status = "yes" + plan.follow_status = "completed" + plan.update_by = user.id + db.commit() + return get_plan(id, db, user) + + apply_archive_product_quantities( + db, tenant_no=tenant_no, plan=plan, items=payload.products, user_id=user.id + ) + if payload.freight is not None: + apply_archive_freight( + db, tenant_no=tenant_no, plan=plan, freight=payload.freight, user_id=user.id + ) + elif int(plan.has_freight or 0) == 1 and not already_archived: + if not plan.transport_id: + raise HTTPException(status_code=400, detail="计划有运输费用但未安排运输,请先安排运输") + + if not already_archived: + plan.archive_status = "archived" + plan.complete_status = "yes" + plan.follow_status = "completed" - plan.archive_status = "archived" - plan.complete_status = "yes" plan.update_by = user.id + record_plan_change( + db, + tenant_no=tenant_no, + plan_id=plan.id, + change_type="archive_adjust" if already_archived else "archive", + change_content="调整归档内容" if already_archived else "运输计划归档", + user_id=user.id, + user_name=user.name or None, + dept_id=user.dept_id, + ) db.commit() - db.refresh(plan) - return plan + return get_plan(id, db, user) # ============================================================================= diff --git a/backend/app/models/pl_models.py b/backend/app/models/pl_models.py index 116bd9009..0765600a7 100644 --- a/backend/app/models/pl_models.py +++ b/backend/app/models/pl_models.py @@ -549,6 +549,33 @@ class PlFreightSettlement(Base): del_flag = Column(SmallInteger, nullable=False, default=0, comment="删除标记:0-正常 1-已删除") +class PlFreightSettlementApproval(Base): + """运费结算审批 pl_freight_settlement_approval""" + + __tablename__ = "pl_freight_settlement_approval" + + id = Column(String(64), primary_key=True, comment="主键ID") + settlement_id = Column(String(64), nullable=False, comment="结算单ID") + step = Column(Integer, nullable=False, default=1, comment="步骤序号") + step_name = Column(String(50), nullable=True, comment="步骤名称") + approver_id = Column(String(64), nullable=False, comment="审批人ID") + approver_name = Column(String(64), nullable=True, comment="审批人姓名") + approval_type = Column(String(20), nullable=False, default="sequential", comment="审批类型") + approval_result = Column(String(20), nullable=False, default="pending", comment="审批结果") + approval_opinion = Column(String(500), nullable=True, comment="审批意见") + approval_time = Column(DateTime, nullable=True, comment="审批时间") + is_current = Column(SmallInteger, 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="创建人id") + create_dept_id = Column(String(64), nullable=False, default="", comment="创建人部门ID") + create_time = Column(DateTime, nullable=False, default=datetime.now, comment="创建时间") + update_by = Column(String(64), nullable=True, comment="更新人id") + update_time = Column(DateTime, nullable=False, default=datetime.now, onupdate=datetime.now, comment="更新时间") + del_flag = Column(SmallInteger, nullable=False, default=0, comment="删除标记:0-正常 1-已删除") + + class PlFreightSettlementTransport(Base): """结算单-运输关联表 pl_freight_settlement_transport""" diff --git a/backend/app/schemas/pl/freight.py b/backend/app/schemas/pl/freight.py index b353aba11..601702ab2 100644 --- a/backend/app/schemas/pl/freight.py +++ b/backend/app/schemas/pl/freight.py @@ -1,9 +1,9 @@ """运输计划管理 - 运费结算 Schema""" from datetime import date, datetime from decimal import Decimal -from typing import Optional +from typing import Any, Optional -from pydantic import BaseModel, Field +from pydantic import BaseModel, Field, model_validator # ============================================================================= @@ -21,15 +21,21 @@ class FreightSettlementBase(BaseModel): class FreightSettlementCreate(BaseModel): - transport_ids: list[str] = Field(..., alias="transportIds", description="运输ID列表") + transport_ids: Optional[list[str]] = Field(default=None, alias="transportIds", description="运输ID列表") + plan_ids: Optional[list[str]] = Field(default=None, alias="planIds", description="计划ID列表") model_config = {"populate_by_name": True} + @model_validator(mode="after") + def check_ids(self): + if not self.transport_ids and not self.plan_ids: + raise ValueError("transportIds 或 planIds 至少提供一个") + return self + class FreightSettlementUpdate(BaseModel): invoice_amount: Optional[Decimal] = Field(default=None, alias="invoiceAmount") invoice_no: Optional[str] = Field(default=None, max_length=50, alias="invoiceNo") invoice_date: Optional[date] = Field(default=None, alias="invoiceDate") - settlement_status: Optional[str] = Field(default=None, alias="settlementStatus") remark: Optional[str] = None model_config = {"populate_by_name": True} @@ -48,8 +54,18 @@ class FreightSettlementRead(FreightSettlementBase): model_config = {"from_attributes": True, "populate_by_name": True} -class FreightSettlementWithTransports(FreightSettlementRead): - transports: list = [] +class FreightSettlementListItem(FreightSettlementRead): + plan_count: int = Field(default=0, alias="planCount") + license_plate_summary: Optional[str] = Field(default=None, alias="licensePlateSummary") + current_approver_name: Optional[str] = Field(default=None, alias="currentApproverName") + can_approve: bool = Field(default=False, alias="canApprove") + can_withdraw: bool = Field(default=False, alias="canWithdraw") + current_approval_id: Optional[str] = Field(default=None, alias="currentApprovalId") + approval_finished_time: Optional[datetime] = Field(default=None, alias="approvalFinishedTime") + disburse_time: Optional[datetime] = Field(default=None, alias="disburseTime") + disburse_amount: Optional[Decimal] = Field(default=None, alias="disburseAmount") + submitter_name: Optional[str] = Field(default=None, alias="submitterName") + model_config = {"from_attributes": True, "populate_by_name": True} class FreightSettlementTransportRead(BaseModel): @@ -62,6 +78,85 @@ class FreightSettlementTransportRead(BaseModel): model_config = {"from_attributes": True, "populate_by_name": True} +class UnsettledPlanItem(BaseModel): + id: str + plan_no: str = Field(alias="planNo") + plan_date: date = Field(alias="planDate") + plan_type: str = Field(alias="planType") + customer_name: Optional[str] = Field(default=None, alias="customerName") + supplier_name: Optional[str] = Field(default=None, alias="supplierName") + license_plate: Optional[str] = Field(default=None, alias="licensePlate") + transport_company: Optional[str] = Field(default=None, alias="transportCompany") + freight_amount: Decimal = Field(default=Decimal("0"), alias="freightAmount") + archive_time: Optional[datetime] = Field(default=None, alias="archiveTime") + model_config = {"populate_by_name": True} + + +class UnsettledPlanListResponse(BaseModel): + total: int + list: list[UnsettledPlanItem] + + +class SettlementPlanSummary(BaseModel): + id: str + plan_no: str = Field(alias="planNo") + plan_date: Optional[date] = Field(default=None, alias="planDate") + license_plate: Optional[str] = Field(default=None, alias="licensePlate") + freight_amount: Optional[Decimal] = Field(default=None, alias="freightAmount") + model_config = {"populate_by_name": True} + + +class SettlementApprovalFlowItem(BaseModel): + id: str + step: int + step_name: Optional[str] = Field(default=None, alias="stepName") + approver_id: str = Field(alias="approverId") + approver_name: Optional[str] = Field(default=None, alias="approverName") + approval_type: Optional[str] = Field(default=None, alias="approvalType") + approval_result: str = Field(alias="approvalResult") + approval_opinion: Optional[str] = Field(default=None, alias="approvalOpinion") + approval_time: Optional[datetime] = Field(default=None, alias="approvalTime") + is_current: int = Field(default=0, alias="isCurrent") + model_config = {"populate_by_name": True} + + +class FreightSettlementWithTransports(FreightSettlementRead): + transports: list = [] + plans: list[SettlementPlanSummary] = [] + approval_flow: list[SettlementApprovalFlowItem] = Field(default_factory=list, alias="approvalFlow") + vouchers: list = [] + plan_count: int = Field(default=0, alias="planCount") + license_plate_summary: Optional[str] = Field(default=None, alias="licensePlateSummary") + current_approver_name: Optional[str] = Field(default=None, alias="currentApproverName") + can_approve: bool = Field(default=False, alias="canApprove") + can_withdraw: bool = Field(default=False, alias="canWithdraw") + current_approval_id: Optional[str] = Field(default=None, alias="currentApprovalId") + approval_finished_time: Optional[datetime] = Field(default=None, alias="approvalFinishedTime") + disburse_time: Optional[datetime] = Field(default=None, alias="disburseTime") + disburse_amount: Optional[Decimal] = Field(default=None, alias="disburseAmount") + submitter_name: Optional[str] = Field(default=None, alias="submitterName") + + +class FreightSettlementSubmitApprovalBody(BaseModel): + approval_type: str = Field(default="sequential", alias="approvalType") + approver_ids: list[str] = Field(..., alias="approverIds", min_length=1) + remark: Optional[str] = None + model_config = {"populate_by_name": True} + + +class FreightSettlementApprovalActionBody(BaseModel): + action: str = Field(..., description="approve|reject") + comment: Optional[str] = None + + +class FreightSettlementDisburseBody(BaseModel): + remittance_date: date = Field(..., alias="remittanceDate") + remittance_amount: Decimal = Field(..., alias="remittanceAmount", gt=0) + voucher_urls: list[str] = Field(..., alias="voucherUrls", min_length=1) + remark: Optional[str] = None + model_config = {"populate_by_name": True} + + # ============================================================================= # 汇款凭证 Schema # ============================================================================= @@ -83,7 +178,9 @@ class RemittanceVoucherRead(BaseModel): remittance_date: Optional[date] = Field(default=None, alias="remittanceDate") remittance_amount: Optional[Decimal] = Field(default=None, alias="remittanceAmount") voucher_urls: Optional[str] = Field(default=None, alias="voucherUrls") + remark: Optional[str] = None tenant_no: str = Field(alias="tenantNo") + create_by: Optional[str] = Field(default=None, alias="createBy") create_time: datetime = Field(alias="createTime") model_config = {"from_attributes": True, "populate_by_name": True} @@ -96,6 +193,7 @@ class RemittanceVoucherRead(BaseModel): class FreightSettlementListQuery(BaseModel): q: Optional[str] = Field(default=None, description="模糊搜索") settlement_status: Optional[str] = Field(default=None, alias="settlementStatus", description="结算状态") + tab: Optional[str] = Field(default=None, description="bills|disburse|settled") page: int = Field(default=1, ge=1) page_size: int = Field(default=20, ge=1, le=100, alias="pageSize") model_config = {"populate_by_name": True} @@ -103,4 +201,4 @@ class FreightSettlementListQuery(BaseModel): class FreightSettlementListResponse(BaseModel): total: int - list: list[FreightSettlementRead] + list: list[FreightSettlementListItem] diff --git a/backend/app/schemas/pl/plan.py b/backend/app/schemas/pl/plan.py index 56afed3b4..71df70dd6 100644 --- a/backend/app/schemas/pl/plan.py +++ b/backend/app/schemas/pl/plan.py @@ -248,6 +248,29 @@ class PlanProductCertsUpdate(BaseModel): model_config = {"populate_by_name": True} +class PlanArchiveProductItem(BaseModel): + id: str = Field(..., description="计划产品明细ID pl_plan_product.id") + actual_qty: Decimal = Field(..., alias="actualQty", ge=0, description="实际数量") + model_config = {"populate_by_name": True} + + +class PlanArchiveFreightBlock(BaseModel): + has_freight: int = Field(default=1, alias="hasFreight", description="是否有运输费用 0-否 1-是") + distance_km: Optional[Decimal] = Field(default=None, alias="distanceKm") + freight_type: str = Field(default="by_weight", alias="freightType") + freight_price: Optional[Decimal] = Field(default=None, alias="freightPrice") + freight_amount: Optional[Decimal] = Field(default=None, alias="freightAmount") + transport_qty: Optional[Decimal] = Field(default=None, alias="transportQty") + has_invoice: Optional[int] = Field(default=None, alias="hasInvoice") + model_config = {"populate_by_name": True} + + +class PlanArchiveBody(BaseModel): + products: list[PlanArchiveProductItem] = Field(..., min_length=1) + freight: Optional[PlanArchiveFreightBlock] = None + model_config = {"populate_by_name": True} + + class PlanListResponse(BaseModel): total: int list: list[PlanWithProducts] diff --git a/backend/app/services/pl_freight_settlement_service.py b/backend/app/services/pl_freight_settlement_service.py new file mode 100644 index 000000000..5f98481a0 --- /dev/null +++ b/backend/app/services/pl_freight_settlement_service.py @@ -0,0 +1,861 @@ +"""运费结算业务服务""" +from __future__ import annotations + +import json +from datetime import date, datetime +from decimal import Decimal +from typing import Any, Dict, List, Optional, Tuple + +from fastapi import HTTPException +from sqlalchemy import func, or_ +from sqlalchemy.orm import Session + +from app.core.utils import generate_uuid +from app.models.models import SysUser +from app.models.pl_models import ( + PlFreightSettlement, + PlFreightSettlementApproval, + PlFreightSettlementTransport, + PlPlan, + PlRemittanceVoucher, + PlTransport, +) +from app.schemas.pl.freight import ( + FreightSettlementDisburseBody, + FreightSettlementSubmitApprovalBody, + FreightSettlementUpdate, +) + +_FMT = "%Y-%m-%d %H:%M:%S" + +TAB_STATUS_MAP = { + "bills": ("pending", "approving"), + "disburse": ("approved",), + "settled": ("confirmed",), +} + + +def _resolve_user_display_name(db: Session, user_id: str) -> str: + uid = (user_id or "").strip() + if not uid: + return "" + u = db.query(SysUser).filter(SysUser.id == uid, SysUser.del_flag == 0).first() + if not u: + return "" + return (u.nick_name or u.user_no or "").strip() + + +def _occupied_transport_ids_subquery(db: Session, tenant_no: str): + return ( + db.query(PlFreightSettlementTransport.transport_id) + .join( + PlFreightSettlement, + PlFreightSettlement.id == PlFreightSettlementTransport.settlement_id, + ) + .filter( + PlFreightSettlementTransport.tenant_no == tenant_no, + PlFreightSettlementTransport.del_flag == 0, + PlFreightSettlement.tenant_no == tenant_no, + PlFreightSettlement.del_flag == 0, + ) + ) + + +def get_settlement_row(db: Session, tenant_no: str, settlement_id: str) -> PlFreightSettlement: + row = ( + db.query(PlFreightSettlement) + .filter( + PlFreightSettlement.id == settlement_id, + PlFreightSettlement.tenant_no == tenant_no, + PlFreightSettlement.del_flag == 0, + ) + .first() + ) + if not row: + raise HTTPException(status_code=404, detail="结算单不存在") + return row + + +def list_unsettled_plans( + db: Session, + *, + tenant_no: str, + q: Optional[str] = None, + plan_type: Optional[str] = None, + license_plate: Optional[str] = None, + page: int = 1, + page_size: int = 20, +) -> Tuple[int, List[Dict[str, Any]]]: + occupied = _occupied_transport_ids_subquery(db, tenant_no).subquery() + + query = ( + db.query(PlPlan, PlTransport) + .join(PlTransport, PlTransport.id == PlPlan.transport_id) + .filter( + PlPlan.tenant_no == tenant_no, + PlPlan.del_flag == 0, + PlPlan.archive_status == "archived", + PlPlan.has_freight == 1, + PlPlan.follow_status != "cancelled", + PlPlan.transport_id.isnot(None), + PlTransport.del_flag == 0, + PlTransport.freight_amount > 0, + ~PlPlan.transport_id.in_(occupied), + ) + ) + + if q: + query = query.filter( + or_( + PlPlan.plan_no.contains(q), + PlPlan.customer_name.contains(q), + PlPlan.supplier_name.contains(q), + ) + ) + if plan_type: + query = query.filter(PlPlan.plan_type == plan_type) + if license_plate: + query = query.filter(PlPlan.license_plate.contains(license_plate)) + + total = query.count() + rows = ( + query.order_by(PlPlan.update_time.desc()) + .offset((page - 1) * page_size) + .limit(page_size) + .all() + ) + + items: List[Dict[str, Any]] = [] + for plan, transport in rows: + items.append( + { + "id": plan.id, + "planNo": plan.plan_no, + "planDate": plan.plan_date, + "planType": plan.plan_type, + "customerName": plan.customer_name, + "supplierName": plan.supplier_name, + "licensePlate": plan.license_plate or transport.license_plate, + "transportCompany": transport.carrier_name, + "freightAmount": plan.freight_amount or transport.freight_amount, + "archiveTime": plan.update_time, + } + ) + return total, items + + +def _resolve_transports_for_create( + db: Session, tenant_no: str, *, plan_ids: Optional[List[str]], transport_ids: Optional[List[str]] +) -> List[PlTransport]: + ids: List[str] = [] + if plan_ids: + plans = ( + db.query(PlPlan) + .filter( + PlPlan.id.in_(plan_ids), + PlPlan.tenant_no == tenant_no, + PlPlan.del_flag == 0, + ) + .all() + ) + if len(plans) != len(set(plan_ids)): + raise HTTPException(status_code=400, detail="存在无效的计划") + for p in plans: + if p.archive_status != "archived": + raise HTTPException(status_code=400, detail=f"计划 {p.plan_no} 未归档,不能结算") + if int(p.has_freight or 0) != 1: + raise HTTPException(status_code=400, detail=f"计划 {p.plan_no} 无运输费用") + if not p.transport_id: + raise HTTPException(status_code=400, detail=f"计划 {p.plan_no} 未安排运输") + ids.append(p.transport_id) + if transport_ids: + ids.extend(transport_ids) + + ids = list(dict.fromkeys(ids)) + if not ids: + raise HTTPException(status_code=400, detail="请选择有效的运输单") + + occupied = {r[0] for r in _occupied_transport_ids_subquery(db, tenant_no).all()} + conflict = [tid for tid in ids if tid in occupied] + if conflict: + raise HTTPException(status_code=400, detail="所选运输单已纳入其他结算单") + + transports = ( + db.query(PlTransport) + .filter( + PlTransport.id.in_(ids), + PlTransport.tenant_no == tenant_no, + PlTransport.del_flag == 0, + ) + .all() + ) + if len(transports) != len(ids): + raise HTTPException(status_code=400, detail="请选择有效的运输单") + return transports + + +def create_settlement( + db: Session, + *, + tenant_no: str, + plan_ids: Optional[List[str]], + transport_ids: Optional[List[str]], + user_id: str, + dept_id: str, + settlement_no: str, +) -> PlFreightSettlement: + transports = _resolve_transports_for_create( + db, tenant_no, plan_ids=plan_ids, transport_ids=transport_ids + ) + total_freight = sum(Decimal(str(t.freight_amount or 0)) for t in transports) + + settlement = PlFreightSettlement( + id=generate_uuid(), + tenant_no=tenant_no, + settlement_no=settlement_no, + total_freight=total_freight, + settlement_status="pending", + create_by=user_id, + create_dept_id=dept_id or "", + ) + db.add(settlement) + + for t in transports: + db.add( + PlFreightSettlementTransport( + id=generate_uuid(), + tenant_no=tenant_no, + settlement_id=settlement.id, + transport_id=t.id, + freight_amount=t.freight_amount, + create_by=user_id, + create_dept_id=dept_id or "", + ) + ) + + db.commit() + db.refresh(settlement) + return settlement + + +def delete_draft_settlement(db: Session, *, tenant_no: str, settlement_id: str, user_id: str) -> None: + settlement = get_settlement_row(db, tenant_no, settlement_id) + if settlement.settlement_status != "pending": + raise HTTPException(status_code=400, detail="仅草稿结算单可删除") + + now = datetime.now() + settlement.del_flag = 1 + settlement.update_by = user_id + settlement.update_time = now + + links = ( + db.query(PlFreightSettlementTransport) + .filter( + PlFreightSettlementTransport.settlement_id == settlement_id, + PlFreightSettlementTransport.del_flag == 0, + ) + .all() + ) + for link in links: + link.del_flag = 1 + link.update_time = now + + db.commit() + + +def _get_transport_ids(db: Session, settlement_id: str) -> List[str]: + return [ + r.transport_id + for r in db.query(PlFreightSettlementTransport) + .filter( + PlFreightSettlementTransport.settlement_id == settlement_id, + PlFreightSettlementTransport.del_flag == 0, + ) + .all() + ] + + +def _get_plans_for_transports(db: Session, tenant_no: str, transport_ids: List[str]) -> List[PlPlan]: + if not transport_ids: + return [] + return ( + db.query(PlPlan) + .filter( + PlPlan.tenant_no == tenant_no, + PlPlan.del_flag == 0, + PlPlan.transport_id.in_(transport_ids), + ) + .all() + ) + + +def _approval_to_dict(row: PlFreightSettlementApproval) -> Dict[str, Any]: + return { + "id": row.id, + "step": row.step, + "stepName": row.step_name, + "approverId": row.approver_id, + "approverName": row.approver_name, + "approvalType": row.approval_type, + "approvalResult": row.approval_result, + "approvalOpinion": row.approval_opinion, + "approvalTime": row.approval_time, + "isCurrent": row.is_current, + } + + +def create_settlement_approval_records( + db: Session, + *, + tenant_no: str, + settlement_id: str, + approval_type: str, + approver_ids: List[str], + user_id: str, + dept_id: str, +) -> None: + approval_type = (approval_type or "sequential").strip() or "sequential" + cleaned = [aid.strip() for aid in approver_ids if (aid or "").strip()] + if not cleaned: + raise HTTPException(status_code=400, detail="请选择审批人") + + if approval_type in ("parallel", "or"): + step = 1 + for idx, aid in enumerate(cleaned): + nick = _resolve_user_display_name(db, aid) or f"用户{aid}" + db.add( + PlFreightSettlementApproval( + id=generate_uuid(), + settlement_id=settlement_id, + step=step, + step_name="会签审批" if approval_type == "parallel" else "或签审批", + approver_id=aid, + approver_name=nick, + approval_type=approval_type, + approval_result="pending", + is_current=1, + tenant_no=tenant_no, + create_by=user_id, + create_dept_id=dept_id or "", + ) + ) + else: + step = 1 + for idx, aid in enumerate(cleaned): + nick = _resolve_user_display_name(db, aid) or f"用户{aid}" + db.add( + PlFreightSettlementApproval( + id=generate_uuid(), + settlement_id=settlement_id, + step=step, + step_name=f"第{step}步审批", + approver_id=aid, + approver_name=nick, + approval_type="sequential", + approval_result="pending", + is_current=1 if idx == 0 else 0, + tenant_no=tenant_no, + create_by=user_id, + create_dept_id=dept_id or "", + ) + ) + step += 1 + db.flush() + + +def can_user_approve_settlement(db: Session, settlement_id: str, user_id: str) -> bool: + if not settlement_id or not user_id: + return False + + approvals = ( + db.query(PlFreightSettlementApproval) + .filter( + PlFreightSettlementApproval.settlement_id == settlement_id, + PlFreightSettlementApproval.del_flag == 0, + ) + .order_by(PlFreightSettlementApproval.step.asc()) + .all() + ) + if not approvals: + return False + + user_approval = next((a for a in approvals if a.approver_id == user_id), None) + if not user_approval or user_approval.approval_result != "pending" or user_approval.is_current != 1: + return False + + approval_type = user_approval.approval_type or "sequential" + if approval_type == "sequential": + for approval in approvals: + if approval.step == user_approval.step: + break + if approval.approval_result != "approved": + return False + return True + + +def _settlement_all_approved(db: Session, settlement_id: str) -> bool: + pending = ( + db.query(PlFreightSettlementApproval) + .filter( + PlFreightSettlementApproval.settlement_id == settlement_id, + PlFreightSettlementApproval.approval_result == "pending", + PlFreightSettlementApproval.del_flag == 0, + ) + .count() + ) + return pending == 0 + + +def _advance_after_approval( + db: Session, settlement: PlFreightSettlement, current: PlFreightSettlementApproval, result: str +) -> None: + now = datetime.now() + if result == "rejected": + settlement.settlement_status = "pending" + settlement.update_time = now + return + + approval_type = current.approval_type or "sequential" + step = current.step + + if approval_type == "or": + others = ( + db.query(PlFreightSettlementApproval) + .filter( + PlFreightSettlementApproval.settlement_id == settlement.id, + PlFreightSettlementApproval.step == step, + PlFreightSettlementApproval.id != current.id, + PlFreightSettlementApproval.del_flag == 0, + ) + .all() + ) + for row in others: + if row.approval_result == "pending": + row.approval_result = "skipped" + row.is_current = 0 + row.update_time = now + elif approval_type == "parallel": + step_pending = ( + db.query(PlFreightSettlementApproval) + .filter( + PlFreightSettlementApproval.settlement_id == settlement.id, + PlFreightSettlementApproval.step == step, + PlFreightSettlementApproval.approval_result == "pending", + PlFreightSettlementApproval.del_flag == 0, + ) + .count() + ) + if step_pending > 0: + return + else: + nxt = ( + db.query(PlFreightSettlementApproval) + .filter( + PlFreightSettlementApproval.settlement_id == settlement.id, + PlFreightSettlementApproval.approval_result == "pending", + PlFreightSettlementApproval.step > step, + PlFreightSettlementApproval.del_flag == 0, + ) + .order_by(PlFreightSettlementApproval.step.asc()) + .first() + ) + if nxt: + nxt.is_current = 1 + nxt.update_time = now + return + + if _settlement_all_approved(db, settlement.id): + settlement.settlement_status = "approved" + settlement.update_time = now + + +def submit_settlement_approval( + db: Session, + *, + tenant_no: str, + settlement_id: str, + body: FreightSettlementSubmitApprovalBody, + user_id: str, + dept_id: str, +) -> PlFreightSettlement: + settlement = get_settlement_row(db, tenant_no, settlement_id) + if settlement.settlement_status != "pending": + raise HTTPException(status_code=400, detail="仅草稿状态可提交审批") + + settlement.settlement_status = "approving" + if body.remark: + settlement.remark = body.remark + settlement.update_by = user_id + db.flush() + + create_settlement_approval_records( + db, + tenant_no=tenant_no, + settlement_id=settlement_id, + approval_type=body.approval_type, + approver_ids=body.approver_ids, + user_id=user_id, + dept_id=dept_id, + ) + db.commit() + db.refresh(settlement) + return settlement + + +def process_settlement_approval( + db: Session, + *, + tenant_no: str, + approval_id: str, + action: str, + comment: Optional[str], + user_id: str, +) -> PlFreightSettlement: + approval = ( + db.query(PlFreightSettlementApproval) + .filter( + PlFreightSettlementApproval.id == approval_id, + PlFreightSettlementApproval.tenant_no == tenant_no, + PlFreightSettlementApproval.del_flag == 0, + ) + .first() + ) + if not approval: + raise HTTPException(status_code=404, detail="审批记录不存在") + + settlement = get_settlement_row(db, tenant_no, approval.settlement_id) + if settlement.settlement_status != "approving": + raise HTTPException(status_code=400, detail="结算单不在审批中") + + if approval.approver_id != user_id: + raise HTTPException(status_code=403, detail="只有审批人才能审批") + if not can_user_approve_settlement(db, settlement.id, user_id): + raise HTTPException(status_code=400, detail="当前不可审批") + + result = "approved" if action == "approve" else "rejected" + now = datetime.now() + approval.approval_result = result + approval.approval_opinion = comment or "" + approval.approval_time = now + approval.is_current = 0 + approval.update_by = user_id + approval.update_time = now + + _advance_after_approval(db, settlement, approval, result) + settlement.update_by = user_id + db.commit() + db.refresh(settlement) + return settlement + + +def withdraw_settlement_approval( + db: Session, *, tenant_no: str, settlement_id: str, user_id: str +) -> PlFreightSettlement: + settlement = get_settlement_row(db, tenant_no, settlement_id) + if settlement.settlement_status != "approving": + raise HTTPException(status_code=400, detail="仅审批中可撤回") + if settlement.create_by != user_id: + raise HTTPException(status_code=403, detail="仅提交人可撤回") + + now = datetime.now() + rows = ( + db.query(PlFreightSettlementApproval) + .filter( + PlFreightSettlementApproval.settlement_id == settlement_id, + PlFreightSettlementApproval.del_flag == 0, + ) + .all() + ) + for row in rows: + row.del_flag = 1 + row.update_time = now + + settlement.settlement_status = "pending" + settlement.update_by = user_id + settlement.update_time = now + db.commit() + db.refresh(settlement) + return settlement + + +def disburse_settlement( + db: Session, + *, + tenant_no: str, + settlement_id: str, + body: FreightSettlementDisburseBody, + user_id: str, + dept_id: str, +) -> PlFreightSettlement: + settlement = get_settlement_row(db, tenant_no, settlement_id) + if settlement.settlement_status != "approved": + raise HTTPException(status_code=400, detail="仅待发放状态可登记") + + total = Decimal(str(settlement.total_freight or 0)) + amount = Decimal(str(body.remittance_amount)) + if amount != total and not (body.remark or "").strip(): + raise HTTPException(status_code=400, detail="汇款金额与运费合计不一致时备注必填") + + db.add( + PlRemittanceVoucher( + id=generate_uuid(), + tenant_no=tenant_no, + settlement_id=settlement.id, + remittance_date=body.remittance_date, + remittance_amount=body.remittance_amount, + voucher_urls=json.dumps(body.voucher_urls), + remark=body.remark, + create_by=user_id, + create_dept_id=dept_id or "", + ) + ) + settlement.settlement_status = "confirmed" + settlement.update_by = user_id + db.commit() + db.refresh(settlement) + return settlement + + +def get_approval_flow(db: Session, settlement_id: str) -> List[Dict[str, Any]]: + rows = ( + db.query(PlFreightSettlementApproval) + .filter( + PlFreightSettlementApproval.settlement_id == settlement_id, + PlFreightSettlementApproval.del_flag == 0, + ) + .order_by(PlFreightSettlementApproval.step.asc(), PlFreightSettlementApproval.create_time.asc()) + .all() + ) + return [_approval_to_dict(r) for r in rows] + + +def _current_approver_name(db: Session, settlement_id: str) -> Optional[str]: + row = ( + db.query(PlFreightSettlementApproval) + .filter( + PlFreightSettlementApproval.settlement_id == settlement_id, + PlFreightSettlementApproval.approval_result == "pending", + PlFreightSettlementApproval.is_current == 1, + PlFreightSettlementApproval.del_flag == 0, + ) + .order_by(PlFreightSettlementApproval.step.asc()) + .first() + ) + return row.approver_name if row else None + + +def _current_approval_id(db: Session, settlement_id: str, user_id: str) -> Optional[str]: + if not can_user_approve_settlement(db, settlement_id, user_id): + return None + row = ( + db.query(PlFreightSettlementApproval) + .filter( + PlFreightSettlementApproval.settlement_id == settlement_id, + PlFreightSettlementApproval.approver_id == user_id, + PlFreightSettlementApproval.approval_result == "pending", + PlFreightSettlementApproval.is_current == 1, + PlFreightSettlementApproval.del_flag == 0, + ) + .first() + ) + return row.id if row else None + + +def _last_approval_time(db: Session, settlement_id: str) -> Optional[datetime]: + row = ( + db.query(PlFreightSettlementApproval) + .filter( + PlFreightSettlementApproval.settlement_id == settlement_id, + PlFreightSettlementApproval.approval_result == "approved", + PlFreightSettlementApproval.del_flag == 0, + ) + .order_by(PlFreightSettlementApproval.approval_time.desc()) + .first() + ) + return row.approval_time if row else None + + +def enrich_settlement_list_item( + db: Session, settlement: PlFreightSettlement, user_id: str +) -> Dict[str, Any]: + transport_ids = _get_transport_ids(db, settlement.id) + plans = _get_plans_for_transports(db, settlement.tenant_no, transport_ids) + plates = [p.license_plate for p in plans if p.license_plate] + if not plates: + transports = ( + db.query(PlTransport) + .filter(PlTransport.id.in_(transport_ids), PlTransport.del_flag == 0) + .all() + if transport_ids + else [] + ) + plates = [t.license_plate for t in transports if t.license_plate] + + voucher = ( + db.query(PlRemittanceVoucher) + .filter( + PlRemittanceVoucher.settlement_id == settlement.id, + PlRemittanceVoucher.del_flag == 0, + ) + .order_by(PlRemittanceVoucher.create_time.desc()) + .first() + ) + + submitter = _resolve_user_display_name(db, settlement.create_by or "") + + item = { + "id": settlement.id, + "settlementNo": settlement.settlement_no, + "totalFreight": settlement.total_freight, + "invoiceAmount": settlement.invoice_amount, + "invoiceNo": settlement.invoice_no, + "invoiceDate": settlement.invoice_date, + "settlementStatus": settlement.settlement_status, + "remark": settlement.remark, + "tenantNo": settlement.tenant_no, + "orderNum": settlement.order_num, + "createBy": settlement.create_by, + "createDeptId": settlement.create_dept_id, + "createTime": settlement.create_time, + "updateBy": settlement.update_by, + "updateTime": settlement.update_time, + "delFlag": settlement.del_flag, + "planCount": len(plans), + "licensePlateSummary": "、".join(plates[:3]) + ("…" if len(plates) > 3 else ""), + "currentApproverName": _current_approver_name(db, settlement.id), + "canApprove": can_user_approve_settlement(db, settlement.id, user_id), + "canWithdraw": settlement.settlement_status == "approving" and settlement.create_by == user_id, + "currentApprovalId": _current_approval_id(db, settlement.id, user_id), + "approvalFinishedTime": _last_approval_time(db, settlement.id), + "disburseTime": voucher.create_time if voucher else None, + "disburseAmount": voucher.remittance_amount if voucher else None, + "submitterName": submitter or None, + } + return item + + +def list_settlements_enriched( + db: Session, + *, + tenant_no: str, + user_id: str, + q: Optional[str] = None, + settlement_status: Optional[str] = None, + tab: Optional[str] = None, + page: int = 1, + page_size: int = 20, +) -> Tuple[int, List[Dict[str, Any]]]: + query = db.query(PlFreightSettlement).filter( + PlFreightSettlement.tenant_no == tenant_no, + PlFreightSettlement.del_flag == 0, + ) + + if tab and tab in TAB_STATUS_MAP: + query = query.filter(PlFreightSettlement.settlement_status.in_(TAB_STATUS_MAP[tab])) + elif settlement_status: + query = query.filter(PlFreightSettlement.settlement_status == settlement_status) + + if q: + query = query.filter(PlFreightSettlement.settlement_no.contains(q)) + + total = query.count() + rows = ( + query.order_by(PlFreightSettlement.create_time.desc()) + .offset((page - 1) * page_size) + .limit(page_size) + .all() + ) + return total, [enrich_settlement_list_item(db, r, user_id) for r in rows] + + +def get_settlement_detail( + db: Session, *, tenant_no: str, settlement_id: str, user_id: str +) -> Dict[str, Any]: + settlement = get_settlement_row(db, tenant_no, settlement_id) + base = enrich_settlement_list_item(db, settlement, user_id) + + transport_ids = _get_transport_ids(db, settlement_id) + transports = ( + db.query(PlTransport) + .filter(PlTransport.id.in_(transport_ids), PlTransport.del_flag == 0) + .all() + if transport_ids + else [] + ) + plans = _get_plans_for_transports(db, tenant_no, transport_ids) + plan_summaries = [ + { + "id": p.id, + "planNo": p.plan_no, + "planDate": p.plan_date, + "licensePlate": p.license_plate, + "freightAmount": p.freight_amount, + } + for p in plans + ] + + vouchers = ( + db.query(PlRemittanceVoucher) + .filter( + PlRemittanceVoucher.settlement_id == settlement_id, + PlRemittanceVoucher.del_flag == 0, + ) + .order_by(PlRemittanceVoucher.create_time.desc()) + .all() + ) + + transport_payload = [] + for t in transports: + transport_payload.append( + { + "id": t.id, + "transportNo": t.transport_no, + "licensePlate": t.license_plate, + "driverName": t.driver_name, + "freightAmount": t.freight_amount, + "transportStatus": t.transport_status, + "carrierName": t.carrier_name, + } + ) + + voucher_payload = [] + for v in vouchers: + voucher_payload.append( + { + "id": v.id, + "settlementId": v.settlement_id, + "remittanceDate": v.remittance_date, + "remittanceAmount": v.remittance_amount, + "voucherUrls": v.voucher_urls, + "remark": v.remark, + "createBy": v.create_by, + "createTime": v.create_time, + } + ) + + base["transports"] = transport_payload + base["plans"] = plan_summaries + base["approvalFlow"] = get_approval_flow(db, settlement_id) + base["vouchers"] = voucher_payload + return base + + +def update_settlement_draft( + db: Session, + *, + tenant_no: str, + settlement_id: str, + payload: FreightSettlementUpdate, + user_id: str, +) -> PlFreightSettlement: + settlement = get_settlement_row(db, tenant_no, settlement_id) + if settlement.settlement_status != "pending": + raise HTTPException(status_code=400, detail="仅草稿可编辑") + + update_data = payload.model_dump(exclude_unset=True, by_alias=False) + for key, value in update_data.items(): + setattr(settlement, key, value) + settlement.update_by = user_id + db.commit() + db.refresh(settlement) + return settlement diff --git a/backend/app/services/pl_plan_service.py b/backend/app/services/pl_plan_service.py index 80d09acb5..48cdb2f3b 100644 --- a/backend/app/services/pl_plan_service.py +++ b/backend/app/services/pl_plan_service.py @@ -9,15 +9,24 @@ from sqlalchemy.orm import Session from app.core.utils import generate_uuid from app.models.pl_models import ( PlCarrier, + PlFreightSettlement, + PlFreightSettlementTransport, PlPersonnel, PlPlan, + PlPlanChange, PlPlanProduct, PlPlanTransport, PlTransport, PlVehicle, PlVehiclePersonnel, ) -from app.schemas.pl.plan import PlanCreateFull, PlanProductCreate, PlanTransportCreateBlock +from app.schemas.pl.plan import ( + PlanArchiveFreightBlock, + PlanArchiveProductItem, + PlanCreateFull, + PlanProductCreate, + PlanTransportCreateBlock, +) def determine_plan_type(supplier_name: Optional[str], destination_name: Optional[str]) -> str: @@ -702,3 +711,157 @@ def calc_plan_total_amount(products: list[PlanProductCreate]) -> Decimal: if prod.tax_subtotal is not None: total += Decimal(str(prod.tax_subtotal)) return total + + +_LOCKED_SETTLEMENT_STATUSES = ("approving", "approved", "confirmed") + + +def transport_has_locked_freight_settlement( + db: Session, tenant_no: str, transport_id: Optional[str] +) -> bool: + if not transport_id: + return False + return ( + db.query(PlFreightSettlementTransport.id) + .join( + PlFreightSettlement, + PlFreightSettlement.id == PlFreightSettlementTransport.settlement_id, + ) + .filter( + PlFreightSettlementTransport.transport_id == transport_id, + PlFreightSettlementTransport.tenant_no == tenant_no, + PlFreightSettlementTransport.del_flag == 0, + PlFreightSettlement.tenant_no == tenant_no, + PlFreightSettlement.del_flag == 0, + PlFreightSettlement.settlement_status.in_(_LOCKED_SETTLEMENT_STATUSES), + ) + .first() + is not None + ) + + +def apply_archive_product_quantities( + db: Session, + *, + tenant_no: str, + plan: PlPlan, + items: list[PlanArchiveProductItem], + user_id: str, +) -> None: + product_map = { + row.id: row + for row in db.query(PlPlanProduct).filter( + PlPlanProduct.plan_id == plan.id, + PlPlanProduct.tenant_no == tenant_no, + PlPlanProduct.del_flag == 0, + ).all() + } + for item in items: + prod = product_map.get(item.id) + if not prod: + raise HTTPException(status_code=400, detail=f"产品明细不存在: {item.id}") + actual = Decimal(str(item.actual_qty)) + prod.actual_qty = actual + price_in = prod.inbound_price or prod.tax_price + price_out = prod.outbound_price or prod.tax_price + if plan.plan_type == "inbound": + prod.inbound_qty = actual + if price_in is not None: + prod.inbound_amount = actual * Decimal(str(price_in)) + elif plan.plan_type == "outbound": + prod.outbound_qty = actual + if price_out is not None: + prod.outbound_amount = actual * Decimal(str(price_out)) + prod.update_by = user_id + + +def apply_archive_freight( + db: Session, + *, + tenant_no: str, + plan: PlPlan, + freight: PlanArchiveFreightBlock, + user_id: str, +) -> None: + has_freight = int(freight.has_freight if freight.has_freight is not None else plan.has_freight or 0) + plan.has_freight = has_freight + plan.update_by = user_id + + if has_freight != 1: + plan.freight_amount = Decimal("0") + if not plan.transport_id: + return + if transport_has_locked_freight_settlement(db, tenant_no, plan.transport_id): + raise HTTPException(status_code=400, detail="运输单已纳入运费结算,无法修改运费") + transport = ( + db.query(PlTransport) + .filter( + PlTransport.id == plan.transport_id, + PlTransport.tenant_no == tenant_no, + PlTransport.del_flag == 0, + ) + .first() + ) + if not transport: + raise HTTPException(status_code=400, detail="关联运输单不存在") + transport.freight_amount = Decimal("0") + transport.freight_price = None + transport.transport_qty = None + transport.update_by = user_id + return + + if not plan.transport_id: + raise HTTPException(status_code=400, detail="计划有运输费用但未安排运输,请先安排运输") + if transport_has_locked_freight_settlement(db, tenant_no, plan.transport_id): + raise HTTPException(status_code=400, detail="运输单已纳入运费结算,无法修改运费") + + transport = ( + db.query(PlTransport) + .filter( + PlTransport.id == plan.transport_id, + PlTransport.tenant_no == tenant_no, + PlTransport.del_flag == 0, + ) + .first() + ) + if not transport: + raise HTTPException(status_code=400, detail="关联运输单不存在") + + transport.distance_km = freight.distance_km + transport.freight_type = freight.freight_type or "by_weight" + transport.freight_price = freight.freight_price + amount = freight.freight_amount or Decimal("0") + transport.freight_amount = amount + if freight.transport_qty is not None: + transport.transport_qty = freight.transport_qty + if freight.has_invoice is not None: + transport.has_invoice = freight.has_invoice + transport.update_by = user_id + + plan.freight_amount = amount + + +def record_plan_change( + db: Session, + *, + tenant_no: str, + plan_id: str, + change_type: str, + change_content: str, + user_id: str, + user_name: Optional[str], + dept_id: str, +) -> None: + db.add( + PlPlanChange( + id=generate_uuid(), + tenant_no=tenant_no, + plan_id=plan_id, + change_type=change_type, + change_content=change_content, + change_user_id=user_id, + change_user_name=user_name, + create_by=user_id, + create_dept_id=dept_id, + ) + ) diff --git a/backend/graphify-out/.graphify_labels.json b/backend/graphify-out/.graphify_labels.json index d47b1f8d3..807be7f74 100644 --- a/backend/graphify-out/.graphify_labels.json +++ b/backend/graphify-out/.graphify_labels.json @@ -55,6 +55,7 @@ "53": "Community 53", "54": "Community 54", "55": "Community 55", + "56": "Community 56", "57": "Community 57", "58": "Community 58", "59": "Community 59", @@ -64,6 +65,7 @@ "63": "Community 63", "64": "Community 64", "65": "Community 65", + "66": "Community 66", "67": "Community 67", "68": "Community 68", "69": "Community 69", @@ -76,6 +78,7 @@ "76": "Community 76", "77": "Community 77", "78": "Community 78", + "79": "Community 79", "80": "Community 80", "81": "Community 81", "82": "Community 82", @@ -83,13 +86,18 @@ "84": "Community 84", "85": "Community 85", "86": "Community 86", + "87": "Community 87", "88": "Community 88", + "89": "Community 89", "90": "Community 90", "91": "Community 91", + "92": "Community 92", "93": "Community 93", + "94": "Community 94", "95": "Community 95", "96": "Community 96", "97": "Community 97", + "98": "Community 98", "99": "Community 99", "100": "Community 100", "101": "Community 101", @@ -100,6 +108,7 @@ "106": "Community 106", "107": "Community 107", "108": "Community 108", + "109": "Community 109", "110": "Community 110", "111": "Community 111", "112": "Community 112", @@ -114,19 +123,16 @@ "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", + "130": "Community 130", "131": "Community 131", - "132": "Community 132", "133": "Community 133", - "134": "Community 134", "135": "Community 135", - "139": "Community 139", - "142": "Community 142", "143": "Community 143", - "146": "Community 146", - "147": "Community 147", - "148": "Community 148" + "146": "Community 146" } diff --git a/backend/graphify-out/GRAPH_REPORT.md b/backend/graphify-out/GRAPH_REPORT.md index 0ffe8adb1..79a1da96d 100644 --- a/backend/graphify-out/GRAPH_REPORT.md +++ b/backend/graphify-out/GRAPH_REPORT.md @@ -1,16 +1,16 @@ -# Graph Report - backend (2026-06-23) +# Graph Report - backend (2026-06-25) ## Corpus Check -- 197 files · ~133,522 words +- 198 files · ~136,440 words - Verdict: corpus is large enough that graph structure adds value. ## Summary -- 3989 nodes · 30269 edges · 130 communities (128 shown, 2 thin omitted) -- Extraction: 48% EXTRACTED · 52% INFERRED · 0% AMBIGUOUS · INFERRED: 15656 edges (avg confidence: 0.5) +- 4071 nodes · 30880 edges · 136 communities (133 shown, 3 thin omitted) +- Extraction: 48% EXTRACTED · 52% INFERRED · 0% AMBIGUOUS · INFERRED: 15981 edges (avg confidence: 0.5) - Token cost: 0 input · 0 output ## Graph Freshness -- Built from commit: `c90f72fd` +- Built from commit: `6b6c80f1` - Run `git rev-parse HEAD` and compare to check if the graph is stale. - Run `graphify update .` after code changes (no API cost). @@ -71,6 +71,7 @@ - [[_COMMUNITY_Community 53|Community 53]] - [[_COMMUNITY_Community 54|Community 54]] - [[_COMMUNITY_Community 55|Community 55]] +- [[_COMMUNITY_Community 56|Community 56]] - [[_COMMUNITY_Community 57|Community 57]] - [[_COMMUNITY_Community 58|Community 58]] - [[_COMMUNITY_Community 59|Community 59]] @@ -80,6 +81,7 @@ - [[_COMMUNITY_Community 63|Community 63]] - [[_COMMUNITY_Community 64|Community 64]] - [[_COMMUNITY_Community 65|Community 65]] +- [[_COMMUNITY_Community 66|Community 66]] - [[_COMMUNITY_Community 67|Community 67]] - [[_COMMUNITY_Community 68|Community 68]] - [[_COMMUNITY_Community 69|Community 69]] @@ -92,6 +94,7 @@ - [[_COMMUNITY_Community 76|Community 76]] - [[_COMMUNITY_Community 77|Community 77]] - [[_COMMUNITY_Community 78|Community 78]] +- [[_COMMUNITY_Community 79|Community 79]] - [[_COMMUNITY_Community 80|Community 80]] - [[_COMMUNITY_Community 81|Community 81]] - [[_COMMUNITY_Community 82|Community 82]] @@ -99,13 +102,18 @@ - [[_COMMUNITY_Community 84|Community 84]] - [[_COMMUNITY_Community 85|Community 85]] - [[_COMMUNITY_Community 86|Community 86]] +- [[_COMMUNITY_Community 87|Community 87]] - [[_COMMUNITY_Community 88|Community 88]] +- [[_COMMUNITY_Community 89|Community 89]] - [[_COMMUNITY_Community 90|Community 90]] - [[_COMMUNITY_Community 91|Community 91]] +- [[_COMMUNITY_Community 92|Community 92]] - [[_COMMUNITY_Community 93|Community 93]] +- [[_COMMUNITY_Community 94|Community 94]] - [[_COMMUNITY_Community 95|Community 95]] - [[_COMMUNITY_Community 96|Community 96]] - [[_COMMUNITY_Community 97|Community 97]] +- [[_COMMUNITY_Community 98|Community 98]] - [[_COMMUNITY_Community 99|Community 99]] - [[_COMMUNITY_Community 100|Community 100]] - [[_COMMUNITY_Community 101|Community 101]] @@ -116,38 +124,36 @@ - [[_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 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]] +- [[_COMMUNITY_Community 130|Community 130]] - [[_COMMUNITY_Community 131|Community 131]] -- [[_COMMUNITY_Community 132|Community 132]] - [[_COMMUNITY_Community 133|Community 133]] -- [[_COMMUNITY_Community 134|Community 134]] - [[_COMMUNITY_Community 135|Community 135]] -- [[_COMMUNITY_Community 139|Community 139]] -- [[_COMMUNITY_Community 142|Community 142]] - [[_COMMUNITY_Community 143|Community 143]] - [[_COMMUNITY_Community 146|Community 146]] -- [[_COMMUNITY_Community 147|Community 147]] -- [[_COMMUNITY_Community 148|Community 148]] ## God Nodes (most connected - your core abstractions) 1. `Session` - 1123 edges -2. `BaseModel` - 373 edges +2. `BaseModel` - 383 edges 3. `int` - 336 edges 4. `Any` - 331 edges -5. `get_tenant_no()` - 259 edges +5. `get_tenant_no()` - 266 edges 6. `success_response()` - 258 edges 7. `Session` - 256 edges 8. `bool` - 255 edges 9. `error_response()` - 243 edges -10. `SysUser` - 208 edges +10. `SysUser` - 222 edges ## Surprising Connections (you probably didn't know these) - `bool` --uses--> `DbUserContext` [INFERRED] @@ -161,43 +167,43 @@ - `int` --uses--> `LocalStorage` [INFERRED] scripts/run_db_auto_generate_plans.py → app/core/storage.py -## Communities (130 total, 2 thin omitted) +## Communities (136 total, 3 thin omitted) ### Community 0 - "Community 0" -Cohesion: 0.12 -Nodes (128): DbUserContext, int, Session, str, date, DbUserContext, int, Session (+120 more) +Cohesion: 0.14 +Nodes (101): date, DbUserContext, int, Session, str, Base, DocumentReminderRead, DocumentReminderUpdate (+93 more) ### Community 1 - "Community 1" -Cohesion: 0.11 -Nodes (32): CRM 报价单 API 路由 — 挂接到 crm.router, CRM 报价单 Pydantic Schemas, QuoteAcceptBody, QuoteApprovalApproveBody, QuoteApprovalListBody, QuoteApprovalRefreshNamesBody, QuoteApprovalWithdrawBody, QuoteCreateBody (+24 more) +Cohesion: 0.09 +Nodes (45): CRM 报价单 API 路由 — 挂接到 crm.router, CRM 报价单 Pydantic Schemas, BaseModel, AdvanceApplyOut, AdvanceApprovalCreate, PagedQuery, PagedResponse, ContractProductItem (+37 more) ### Community 2 - "Community 2" -Cohesion: 0.36 -Nodes (217): Any, bool, str, UploadFile, CRM 线索管理 Pydantic Schemas, CRM 商机管理 Pydantic Schemas, CRM 客户公海池规则 Pydantic Schemas, CRM 产品模块 Pydantic Schemas (+209 more) +Cohesion: 0.35 +Nodes (218): Any, bool, str, UploadFile, CRM 线索管理 Pydantic Schemas, CRM 客户管理 Pydantic Schemas, CRM 商机管理 Pydantic Schemas, CRM 客户公海池规则 Pydantic Schemas (+210 more) ### Community 3 - "Community 3" Cohesion: 0.06 -Nodes (169): _apply_default_invoice_info_to_customers(), category_add(), category_delete(), category_tree(), category_update(), clue_assign(), clue_check_convert(), clue_check_duplicate() (+161 more) +Nodes (171): _apply_default_invoice_info_to_customers(), category_add(), category_delete(), category_tree(), category_update(), clue_assign(), clue_check_convert(), clue_check_duplicate() (+163 more) ### Community 4 - "Community 4" -Cohesion: 0.22 -Nodes (17): Session, str, str, 附件上传 bizType 与 MinIO 目录映射(对齐原 CRM oss 上传语义), 优先使用显式 folder;否则按 bizType 映射默认目录。, 优先使用显式 folder;否则按 bizType 映射默认目录。, 优先使用显式 folder;否则按 bizType 映射默认目录。, resolve_upload_folder() (+9 more) +Cohesion: 0.13 +Nodes (18): 运输计划管理 - 基础数据 Schema(承运商、车辆、人员、证书), CarrierBase, CarrierCreate, CarrierRead, CarrierUpdate, DriverBase, DriverCreate, DriverUpdate (+10 more) ### Community 5 - "Community 5" Cohesion: 0.08 -Nodes (37): _error_json(), lifespan(), _mask_secret(), Exception, int, Request, str, 未捕获异常:统一 JSON 500,确保跨域场景下仍有 Access-Control-Allow-Origin (+29 more) +Nodes (36): _error_json(), lifespan(), _mask_secret(), Exception, int, Request, str, 未捕获异常:统一 JSON 500,确保跨域场景下仍有 Access-Control-Allow-Origin (+28 more) ### Community 6 - "Community 6" -Cohesion: 0.08 -Nodes (93): attachment_download_url(), AttachmentDownloadUrlBody, create_dept(), create_dict_data(), create_dict_type(), create_menu(), create_post(), create_role_management() (+85 more) +Cohesion: 0.07 +Nodes (104): attachment_download_url(), AttachmentDownloadUrlBody, create_dept(), create_dict_data(), create_dict_type(), create_menu(), create_post(), create_role_management() (+96 more) ### Community 7 - "Community 7" Cohesion: 0.17 -Nodes (30): date, int, Session, str, CertRead, CertRow, PlCert, PlDocumentReminder (+22 more) +Nodes (34): Any, bool, int, Session, str, SysUser, create_user(), get_user() (+26 more) ### Community 8 - "Community 8" -Cohesion: 0.16 -Nodes (12): 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 (+4 more) +Cohesion: 0.18 +Nodes (37): Any, int, Session, str, WfNode, WfTransition, create_instance(), create_process_def() (+29 more) ### Community 9 - "Community 9" Cohesion: 0.34 @@ -208,56 +214,56 @@ Cohesion: 0.23 Nodes (34): DbInboundOutbound, DbUserContext, Session, str, CreateLinkForPlanPayload, _apply_inventory_product_update(), _apply_inventory_update(), _base_query() (+26 more) ### Community 11 - "Community 11" -Cohesion: 0.18 -Nodes (31): Any, bool, BxUserContext, BxWorkflowNode, float, int, ReimburseApplyOut, Session (+23 more) +Cohesion: 0.16 +Nodes (35): Any, bool, BxUserContext, BxWorkflowNode, float, int, ReimburseApplyOut, Session (+27 more) ### Community 12 - "Community 12" -Cohesion: 0.06 -Nodes (50): str, CRM 合同 Pydantic Schemas — 对照 CrmContractBo / CrmContractVo, ContractApprovalActionBody, ContractApprovalApproveBody, ContractApprovalByContractBody, ContractApprovalListBody, ContractApprovalPageListBody, ContractApprovalPassBody (+42 more) +Cohesion: 0.07 +Nodes (52): CRM 合同 API 路由 — GET/PUT/DELETE/POST 对齐原 Java CRM, CRM 合同子模块路由 — 变更/模板/审批独立页, CRM 合同 Pydantic Schemas — 对照 CrmContractBo / CrmContractVo, 运营端角色守卫:admin / super_admin 可访问。, require_admin_or_super_admin(), ContractApprovalActionBody, ContractApprovalApproveBody, ContractApprovalByContractBody (+44 more) ### Community 13 - "Community 13" -Cohesion: 0.11 -Nodes (17): Exception, bytes, int, Path, str, BytesIO, BaseStorage, convert_heic_to_jpeg() (+9 more) +Cohesion: 0.10 +Nodes (17): Exception, bool, bytes, int, str, BytesIO, BaseStorage, convert_heic_to_jpeg() (+9 more) ### Community 14 - "Community 14" -Cohesion: 0.08 -Nodes (69): Any, bool, CrmContract, datetime, int, Query, Session, str (+61 more) +Cohesion: 0.09 +Nodes (56): register_contract_sub_routes(), Any, bool, int, Session, str, _advance_contract_after_approval(), approve_contract() (+48 more) ### Community 15 - "Community 15" Cohesion: 0.19 Nodes (23): bool, date, datetime, int, Session, str, allocate_reimburse_title_seq(), format_reimburse_title() (+15 more) ### Community 16 - "Community 16" -Cohesion: 0.08 -Nodes (40): AttachmentUploadResponse, ChangePasswordRequest, Config, LoginRequest, LoginResponse, Pydantic schemas - 用户认证, ResetPasswordRequest, UserCreate (+32 more) +Cohesion: 0.07 +Nodes (41): AttachmentUploadResponse, ChangePasswordRequest, Config, LoginRequest, LoginResponse, Pydantic schemas - 用户认证, ResetPasswordRequest, UserCreate (+33 more) ### Community 17 - "Community 17" -Cohesion: 0.20 -Nodes (49): Any, Any, CRM 商机 CRUD(主表 + 阶段/赢输单/统计/看板/漏斗), date, datetime, Decimal, int, Session (+41 more) +Cohesion: 0.18 +Nodes (46): Any, CRM 商机 CRUD(主表 + 阶段/赢输单/统计/看板/漏斗), date, datetime, Decimal, int, Session, str (+38 more) ### Community 18 - "Community 18" Cohesion: 0.14 -Nodes (26): Any, bool, BxUserContext, BxWorkflowNode, float, int, Session, str (+18 more) +Nodes (25): Any, bool, BxUserContext, BxWorkflowNode, float, int, Session, str (+17 more) ### Community 19 - "Community 19" Cohesion: 0.04 -Nodes (150): register_quote_routes(), Any, bool, int, Session, str, Any, bool (+142 more) +Nodes (119): register_quote_routes(), Any, bool, CRM 报价单 CRUD — 对照 CrmQuoteServiceImpl.java(P2 全量), Decimal, Session, str, accept_quote() (+111 more) ### Community 20 - "Community 20" -Cohesion: 0.34 -Nodes (32): AdvanceApplyCreate, AdvanceApplyOut, AdvanceApplyUpdate, AdvanceApprovalCreate, BxUserContext, int, Session, str (+24 more) +Cohesion: 0.15 +Nodes (65): AdvanceApplyCreate, AdvanceApplyOut, AdvanceApplyUpdate, AdvanceApprovalCreate, BxUserContext, int, Session, str (+57 more) ### Community 21 - "Community 21" -Cohesion: 0.08 -Nodes (71): DbUserContext, 运输计划管理 - 基础数据 API(承运商、车辆、人员), PlVehicle, Session, str, VehicleRead, 运输计划管理 - 基础数据 Schema(承运商、车辆、人员、证书), CarrierRead (+63 more) +Cohesion: 0.09 +Nodes (101): DbUserContext, 运输计划管理 - 基础数据 API(承运商、车辆、人员), PlVehicle, Session, str, VehicleCreate, VehicleRead, VehicleUpdate (+93 more) ### Community 22 - "Community 22" Cohesion: 0.38 Nodes (11): Any, int, Session, str, _business_type_from_path(), get_oper_log(), list_oper_logs(), _oper_status() (+3 more) ### Community 23 - "Community 23" -Cohesion: 0.25 -Nodes (36): AdvanceIssueRequest, BxUserContext, int, ReimburseApplyOut, Session, str, str, BatchOffsetRequest (+28 more) +Cohesion: 0.28 +Nodes (35): AdvanceIssueRequest, BxUserContext, int, ReimburseApplyOut, Session, str, str, BatchOffsetRequest (+27 more) ### Community 24 - "Community 24" Cohesion: 0.19 @@ -268,12 +274,12 @@ Cohesion: 0.27 Nodes (18): Any, bool, int, Session, str, create_clue_follow(), delete_clue_follow(), get_clue_follow() (+10 more) ### Community 26 - "Community 26" -Cohesion: 0.15 -Nodes (14): Any, 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, 申请退款 Args: out_trade_no: 商户订单号 total_amount: 订单 (+6 more) +Cohesion: 0.08 +Nodes (42): Any, str, int, str, Any, bool, int, str (+34 more) ### Community 27 - "Community 27" -Cohesion: 0.21 -Nodes (32): Any, bool, CRM 线索 CRUD(线索主表 + 转化/分配/无效/等级操作), date, datetime, int, Session, str (+24 more) +Cohesion: 0.22 +Nodes (33): Any, bool, CRM 线索 CRUD(线索主表 + 转化/分配/无效/等级操作), date, datetime, int, Session, str (+25 more) ### Community 28 - "Community 28" Cohesion: 0.16 @@ -284,68 +290,68 @@ Cohesion: 0.12 Nodes (31): Any, bool, CRM 供方信息 CRUD — 对照 CrmSupplierInfoServiceImpl.java, int, Session, str, generate_contract_no(), Java: generateContractNo — {供方编码}/X-JT + yyyyMMdd + 3位流水 (+23 more) ### Community 30 - "Community 30" -Cohesion: 0.35 -Nodes (31): BxUserContext, int, Session, str, PagedData, approve_reimburse(), approved_by_me(), _build_details_data() (+23 more) +Cohesion: 0.32 +Nodes (29): BxUserContext, int, Session, str, approve_reimburse(), approved_by_me(), _build_details_data(), create_reimburse() (+21 more) ### Community 31 - "Community 31" -Cohesion: 0.19 -Nodes (32): Any, bool, CrmContractProductPriceTier, date, Decimal, int, Session, str (+24 more) +Cohesion: 0.15 +Nodes (38): Any, bool, CrmContractProductPriceTier, date, Decimal, int, Session, str (+30 more) ### Community 32 - "Community 32" -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) +Cohesion: 0.22 +Nodes (29): approve_task(), _business_type_label(), delete_process_def(), _enrich_task_list(), get_business_all_tasks(), _get_business_form_fields(), get_designer_data(), get_instance_detail() (+21 more) ### Community 33 - "Community 33" -Cohesion: 0.09 -Nodes (75): Any, bool, date, int, Session, str, Any, int (+67 more) +Cohesion: 0.14 +Nodes (48): Any, int, Session, str, Any, bool, CRM 客户 CRUD(客户主表 + 转移/成交/公海池操作), CrmCustomer (+40 more) ### Community 34 - "Community 34" -Cohesion: 0.22 -Nodes (29): Engine, Path, build_id_maps(), clip_text(), count_rows(), export_mapping(), fetch_rows(), legacy_id_to_str() (+21 more) +Cohesion: 0.23 +Nodes (28): Engine, build_id_maps(), clip_text(), count_rows(), export_mapping(), fetch_rows(), legacy_id_to_str(), main() (+20 more) ### Community 35 - "Community 35" Cohesion: 0.18 Nodes (19): bytes, int, str, download_file_bytes(), file_stream(), get_access_url(), get_download_url(), get_preview_url() (+11 more) ### Community 36 - "Community 36" -Cohesion: 0.15 -Nodes (37): pool_rule_delete(), Any, bool, CRM 公海池规则 CRUD + 规则执行逻辑, int, Session, str, create_pool_rule() (+29 more) +Cohesion: 0.16 +Nodes (36): pool_rule_delete(), pool_rule_toggle(), pool_rule_update(), Any, bool, CRM 公海池规则 CRUD + 规则执行逻辑, int, Session (+28 more) ### Community 37 - "Community 37" Cohesion: 0.38 Nodes (15): Any, bool, int, Session, str, create_site(), get_site(), list_sites() (+7 more) ### Community 38 - "Community 38" -Cohesion: 0.33 -Nodes (5): Any, Session, str, get_db_current_user_optional(), 有 Bearer 且为 admin/super_admin 时返回上下文,否则 None(供三方 H5 无登录调用)。 +Cohesion: 0.40 +Nodes (3): API 路由包 — 山峡化工生产一体化门户, get_menu_list(), 运营端菜单接口(与 web-admin 前端静态路由 sqxp.ts 对齐,14 个一级菜单) ### Community 39 - "Community 39" -Cohesion: 0.18 -Nodes (9): 报销(bx)API 路由聚合 — REST 风格,协议对齐 bx 原系统。, 报销(bx)Pydantic 模型 — 响应协议与 bx 原系统保持一致, bx_health(), 报销(bx)API 路由聚合 — REST 风格,协议对齐 bx 原系统。, P0 健康检查:验证 bx 路由已挂载且响应协议为 code=0。, P0 健康检查:验证 bx 路由已挂载且响应协议为 code=0。, P0 健康检查:验证 bx 路由已挂载且响应协议为 code=0。, P0 健康检查:验证 bx 路由已挂载且响应协议为 code=0。 (+1 more) +Cohesion: 0.12 +Nodes (15): 报销(bx)API 路由聚合 — REST 风格,协议对齐 bx 原系统。, date, datetime, str, 报销(bx)Pydantic 模型 — 响应协议与 bx 原系统保持一致, _date_to_str(), _dt_to_str(), bx 原系统 API 响应包装(code=0 / msg / data.rows),与门户 success_response 分离。 (+7 more) ### Community 40 - "Community 40" Cohesion: 0.20 Nodes (26): Any, bool, Decimal, int, Session, str, batch_insert_quote_products(), calculate_subtotal() (+18 more) ### Community 41 - "Community 41" -Cohesion: 0.24 -Nodes (18): BxUserContext, Session, str, bool, BxUserContext, Session, str, create_expense_item() (+10 more) +Cohesion: 0.18 +Nodes (16): Any, bool, int, M, Session, str, bool, BxUserContext (+8 more) ### Community 42 - "Community 42" Cohesion: 0.08 Nodes (25): 技术栈, 1. 创建虚拟环境, 项目结构, 1. 创建虚拟环境, 2. 安装依赖, 2. 安装依赖, 3. 配置环境变量, 快速开始 (+17 more) ### Community 43 - "Community 43" -Cohesion: 0.09 -Nodes (39): Any, str, Any, int, str, str, Any, str (+31 more) +Cohesion: 0.21 +Nodes (16): Any, int, str, BusinessException, InvalidStatusTransitionException, log_api_request(), log_delivery_operation(), log_operation() (+8 more) ### Community 44 - "Community 44" Cohesion: 0.25 Nodes (23): Any, bool, int, Session, str, create_role(), get_role(), get_role_data_scope() (+15 more) ### Community 45 - "Community 45" -Cohesion: 0.38 -Nodes (15): Any, bool, int, Session, str, create_post(), get_post(), list_posts() (+7 more) +Cohesion: 0.12 +Nodes (56): CrmContract, datetime, Query, CrmContract, CrmContractProductPriceTier, date, datetime, int (+48 more) ### Community 46 - "Community 46" Cohesion: 0.20 @@ -353,31 +359,31 @@ Nodes (10): 导出供方列表 — Java: CrmSupplierInfoController.export, 导 ### Community 47 - "Community 47" Cohesion: 0.33 -Nodes (6): PlPlanChange, 计划变更记录表 pl_plan_change, 计划变更记录表 pl_plan_change, 计划变更记录表 pl_plan_change, 计划变更记录表 pl_plan_change, 计划变更记录表 pl_plan_change +Nodes (6): generate_template_no(), Java: generateTemplateNo — TMPL{yyyyMMdd}{4位序号}, Java: generateTemplateNo — TMPL{yyyyMMdd}{4位序号}, Java: generateTemplateNo — TMPL{yyyyMMdd}{4位序号}, Java: generateTemplateNo — TMPL{yyyyMMdd}{4位序号}, Java: generateTemplateNo — TMPL{yyyyMMdd}{4位序号} ### Community 48 - "Community 48" -Cohesion: 0.16 -Nodes (26): datetime, int, str, date, datetime, str, 审批轮次过滤 — 驳回后重新提交时,进度接口仅展示当前轮次。, format_datetime() (+18 more) +Cohesion: 0.17 +Nodes (21): datetime, date, datetime, str, 审批轮次过滤 — 驳回后重新提交时,进度接口仅展示当前轮次。, format_datetime(), get_current_time(), parse_datetime() (+13 more) ### Community 49 - "Community 49" -Cohesion: 0.05 -Nodes (138): ProcessDefCreateBody, ProcessDefUpdateBody, PublishVersionBody, 审批意见:前端传 commentText,兼容 comment。, StartInstanceBody, TaskActionBody, Any, int (+130 more) +Cohesion: 0.11 +Nodes (33): bool, WfProcessInstance, Any, bool, str, WfProcessInstance, Any, bool (+25 more) ### Community 50 - "Community 50" -Cohesion: 0.16 -Nodes (47): bool, Decimal, int, PlanCreateFull, PlPlan, PlPlanProduct, PlTransport, PlVehicle (+39 more) +Cohesion: 0.13 +Nodes (61): bool, Decimal, int, PlanCreateFull, PlPlan, PlPlanProduct, PlTransport, PlVehicle (+53 more) ### Community 51 - "Community 51" -Cohesion: 0.17 -Nodes (17): bool, BxUserContext, int, Session, str, Any, bool, int (+9 more) +Cohesion: 0.11 +Nodes (100): DbUserContext, FreightSettlementDisburseBody, FreightSettlementSubmitApprovalBody, FreightSettlementUpdate, int, Session, str, Any (+92 more) ### Community 52 - "Community 52" -Cohesion: 0.34 -Nodes (18): Any, bool, datetime, int, Session, str, create_opportunity_follow(), get_opportunity_follow() (+10 more) +Cohesion: 0.28 +Nodes (20): Any, bool, date, int, Session, str, _contact_row_to_dict(), create_contact() (+12 more) ### Community 53 - "Community 53" Cohesion: 0.06 -Nodes (111): date, DbUserContext, int, PlanCreateFull, PlPlan, Session, str, PlTransportSiteLink (+103 more) +Nodes (115): date, DbUserContext, int, PlanCreateFull, PlPlan, Session, str, PlTransportSiteLink (+107 more) ### Community 54 - "Community 54" Cohesion: 0.11 @@ -387,6 +393,10 @@ Nodes (19): 分页查询供方列表 — Java: CrmSupplierInfoController.list, 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) +### Community 56 - "Community 56" +Cohesion: 0.26 +Nodes (22): Any, bool, datetime, int, Session, str, BizSampleCode, batch_generate_sample_codes() (+14 more) + ### Community 57 - "Community 57" Cohesion: 0.11 Nodes (18): product_delete(), 删除产品(支持单条 body.id 和批量 body.ids), 删除产品(支持单条 body.id 和批量 body.ids), 删除产品(支持单条 body.id 和批量 body.ids), 删除产品(支持单条 body.id 和批量 body.ids), 删除产品(支持单条 body.id 和批量 body.ids), 删除产品(支持单条 body.id 和批量 body.ids), 删除产品(支持单条 body.id 和批量 body.ids) (+10 more) @@ -408,12 +418,12 @@ Cohesion: 0.33 Nodes (5): _coerce_optional_id(), WorkflowDefCreate, WorkflowDefUpdate, WorkflowNodeCreate, WorkflowNodeOut ### Community 62 - "Community 62" -Cohesion: 0.22 -Nodes (29): bool, DbInboundOutbound, int, PublicInventoryFeedback, PublicInventoryPageRead, UploadFile, bool, int (+21 more) +Cohesion: 0.12 +Nodes (45): bool, DbInboundOutbound, int, PublicInventoryFeedback, PublicInventoryPageRead, Session, str, UploadFile (+37 more) ### Community 63 - "Community 63" -Cohesion: 0.11 -Nodes (47): Session, str, bool, date, DbInboundOutbound, DbPurchasePlan, float, PlPlan (+39 more) +Cohesion: 0.12 +Nodes (46): Session, str, bool, date, DbInboundOutbound, DbPurchasePlan, float, PlPlan (+38 more) ### Community 64 - "Community 64" Cohesion: 0.33 @@ -423,6 +433,10 @@ Nodes (15): Any, int, Session, str, BizLeaveRequest, create_leave(), get_leave() Cohesion: 0.23 Nodes (10): Any, bool, int, Session, str, camel_to_snake(), CRUDBase, get_model_attr() (+2 more) +### Community 66 - "Community 66" +Cohesion: 0.46 +Nodes (6): BxUserContext, Session, str, 按业务类型获取工作流;已知类型不存在时自动创建空定义(无节点)。, WorkflowService, BxWorkflowDef + ### Community 67 - "Community 67" Cohesion: 0.27 Nodes (15): Any, bool, Session, str, list_share_logs(), _parse_user_agent(), CRM 报价单分享访问日志 CRUD — 对照 CrmQuoteShareLogServiceImpl.java, 简易 User-Agent 解析(替代 Hutool UserAgentUtil) (+7 more) @@ -432,8 +446,8 @@ 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 69 - "Community 69" -Cohesion: 0.06 -Nodes (47): list_roles_for_select(), 返回运营端角色下拉选项(label=库中角色名,value=Web 角色码)。, 返回运营端角色下拉选项(label=库中角色名,value=Web 角色码)。, 返回运营端角色下拉选项(label=库中角色名,value=Web 角色码)。, API 路由包 — 山峡化工生产一体化门户, create_leave(), delete_leave(), get_leave() (+39 more) +Cohesion: 0.09 +Nodes (30): list_roles_for_select(), 返回运营端角色下拉选项(label=库中角色名,value=Web 角色码)。, 返回运营端角色下拉选项(label=库中角色名,value=Web 角色码)。, 返回运营端角色下拉选项(label=库中角色名,value=Web 角色码)。, get_current_user_profile(), get_web_auth_menu_codes(), logout(), public_quote_share() (+22 more) ### Community 70 - "Community 70" Cohesion: 0.29 @@ -453,7 +467,7 @@ Nodes (13): Any, bool, Session, str, _clear_default_for_customer(), create_invoi ### Community 74 - "Community 74" Cohesion: 0.04 -Nodes (192): CRM 合同 API 路由 — GET/PUT/DELETE/POST 对齐原 Java CRM, register_contract_routes(), CRM 合同子模块路由 — 变更/模板/审批独立页, register_contract_sub_routes(), Any, bool, CRM 合同 CRUD — 对照 CrmContractServiceImpl.java(列表/详情 P1), CrmContract (+184 more) +Nodes (160): Any, register_contract_routes(), Any, bool, CRM 合同 CRUD — 对照 CrmContractServiceImpl.java(列表/详情 P1), Decimal, Session, str (+152 more) ### Community 75 - "Community 75" Cohesion: 0.27 @@ -464,20 +478,24 @@ Cohesion: 0.18 Nodes (10): Any, Request, str, str, parse_admin_request_json(), 运营 Web(/web/admin)JSON 请求体解析。 与 ApiCryptoMiddleware 配合:中间件未改写 body 时,在路由内解密 `{, 读取 JSON body;dict 时走 resolve_request_payload(明文 / 密文 / data 包装)。 Returns:, 统一解析接口请求载荷(明文 / 密文信封)。 (+2 more) ### Community 77 - "Community 77" -Cohesion: 0.07 -Nodes (29): CRM 客户管理 Pydantic Schemas, BaseModel, AdvanceApprovalCreate, AttachmentOut, ReimburseApplyCreate, ReimburseApplyUpdate, Config, PageResult (+21 more) +Cohesion: 0.06 +Nodes (39): str, Config, PageResult, ResponseModel, ContactByCustomerBody, ContactDetailBody, ContactSetPrimaryBody, CRM 联系人 Pydantic Schemas (+31 more) ### Community 78 - "Community 78" Cohesion: 0.28 Nodes (22): bool, CRM 产品模块 CRUD(产品分类 + 产品 + 附件), Session, str, barcode_exists(), category_code_exists(), create_category(), create_product() (+14 more) +### Community 79 - "Community 79" +Cohesion: 0.18 +Nodes (11): float, int, str, 发送订单状态通知 Args: openid: 用户openid order_n, 发送支付成功通知 Args: openid: 用户openid order_n, 发送配送通知 Args: openid: 配送员openid task_no:, 发送配送时效预警 Args: openid: 配送员openid task_n, 发送退款结果通知 Args: openid: 用户openid order_n (+3 more) + ### Community 80 - "Community 80" 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) ### Community 81 - "Community 81" -Cohesion: 0.29 -Nodes (10): datetime, int, Session, str, BizNoKind, allocate_next_biz_no(), _format_biz_no(), _prefix_for() (+2 more) +Cohesion: 0.34 +Nodes (18): Any, bool, datetime, int, Session, str, create_opportunity_follow(), get_opportunity_follow() (+10 more) ### Community 82 - "Community 82" Cohesion: 0.29 @@ -492,44 +510,64 @@ 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 85 - "Community 85" -Cohesion: 0.21 -Nodes (23): bool, Redis, Request, Session, str, decode_token(), extend_session(), get_client_ip() (+15 more) +Cohesion: 0.38 +Nodes (15): Any, bool, int, Session, str, create_post(), get_post(), list_posts() (+7 more) ### Community 86 - "Community 86" -Cohesion: 0.12 -Nodes (20): bool, date, Session, str, get_last_month_range(), month_range(), 地磅计划按月自动生成 — 迁移自 simple-dibang-xiaoshou/auto-create-plan/auto_create_monthly_pla, 按月自动生成采购计划。 - 默认仅在每月 1 日执行(force=True 时跳过该限制,供手动触发验收) - 遍历所有租户,按上月计划模板生 (+12 more) +Cohesion: 0.19 +Nodes (14): bool, date, Session, str, get_last_month_range(), month_range(), 地磅计划按月自动生成 — 迁移自 simple-dibang-xiaoshou/auto-create-plan/auto_create_monthly_pla, 按月自动生成采购计划。 - 默认仅在每月 1 日执行(force=True 时跳过该限制,供手动触发验收) - 遍历所有租户,按上月计划模板生 (+6 more) + +### Community 87 - "Community 87" +Cohesion: 0.25 +Nodes (11): check_customer_protect_time(), _execute_single_rule(), _get_all_tenant_nos(), pool_recovery_job(), 公海池自动回收任务(由 APScheduler 调度) 遍历所有租户的启用规则,执行自动回收。, 每天凌晨1点:检查保护期到期客户,跟进次数不足则退回公海, 每天早上9点:保护期到期提醒(3天内到期且跟进不足), remind_customer_recycle() (+3 more) ### Community 88 - "Community 88" -Cohesion: 0.41 -Nodes (13): BxUserContext, Session, str, UploadFile, bind_biz(), delete_attachment(), download_file(), list_by_biz() (+5 more) +Cohesion: 0.33 +Nodes (14): BxUserContext, Session, str, UploadFile, AttachmentOut, bind_biz(), delete_attachment(), download_file() (+6 more) + +### Community 89 - "Community 89" +Cohesion: 0.44 +Nodes (8): bool, int, Session, str, ApiRequestLogCRUD, SysApiRequestLog, SysApiRequestLogHis, SysApiRequestLog ### Community 90 - "Community 90" -Cohesion: 0.17 -Nodes (22): Any, bool, bytes, int, Request, str, bool, int (+14 more) +Cohesion: 0.23 +Nodes (15): Any, bool, bytes, int, Request, str, _claims_from_auth(), _format_body_bytes() (+7 more) ### Community 91 - "Community 91" Cohesion: 0.32 Nodes (7): str, eq_unicode(), like_unicode(), MySQL 字符串比较/模糊匹配时统一排序规则,避免 Illegal mix of collations。, 跨表字符串等值比较(JOIN / WHERE)时统一为 utf8mb4_unicode_ci。, 将列显式设为 utf8mb4_unicode_ci。, unicode_ci() +### Community 92 - "Community 92" +Cohesion: 0.41 +Nodes (11): Any, str, build_quote_html(), _default_value(), _format_date(), _format_discount(), _format_money(), generate_quote_pdf() (+3 more) + ### Community 93 - "Community 93" -Cohesion: 0.19 -Nodes (62): InboundOutboundRead, bool, DbPurchasePlan, DbUserContext, PurchasePlanRead, PurchasePlanWithFillLink, Session, str (+54 more) +Cohesion: 0.20 +Nodes (58): InboundOutboundRead, bool, DbPurchasePlan, DbUserContext, PurchasePlanRead, PurchasePlanWithFillLink, Session, str (+50 more) + +### Community 94 - "Community 94" +Cohesion: 0.22 +Nodes (9): generate_contract_name(), Java: generateContractName, Java: generateContractName, Java: generateContractName, Java: generateContractName, Java: generateContractName, Java: generateContractName, Java: generateContractName (+1 more) ### Community 95 - "Community 95" -Cohesion: 0.28 -Nodes (13): int, Session, str, _allocate_inbound_outbound_id(), _ensure_sequence_row(), max_numeric_inbound_outbound_id(), next_inbound_outbound_id(), 出入库单 id 生成 — 租户内纯数字自增,并发安全。 (+5 more) +Cohesion: 0.23 +Nodes (14): int, Session, str, _allocate_inbound_outbound_id(), _ensure_sequence_row(), max_numeric_inbound_outbound_id(), next_inbound_outbound_id(), 出入库单 id 生成 — 租户内纯数字自增,并发安全。 (+6 more) ### Community 96 - "Community 96" -Cohesion: 0.30 -Nodes (11): Session, str, apply_data_scope(), _get_child_dept_ids(), get_user_dept_id(), 数据权限过滤(V0.3:基于角色 data_scope 的查询级行级过滤) data_scope 值: 1 = 全部数据 2 = 本部门数据 3, 根据用户角色的数据权限过滤查询。 Args: query: SQLAlchemy query 对象 model: 查询, 从 SysUser 读取用户的 dept_id。 (+3 more) +Cohesion: 0.29 +Nodes (7): Session, str, get_user_menu_codes(), 菜单 code 权限守卫(V0.3:通过 sys_user_role → sys_role_menu → sys_menu.perms), 读取用户授权的菜单权限标识集合(与前端 meta.menuCode / perms 对齐)。, 接口菜单权限守卫。super_admin 直接放行。, require_menu_code() ### Community 97 - "Community 97" Cohesion: 0.34 Nodes (23): DbUserContext, DbWeighingSlip, Session, str, weighing_to_read(), apply_product_snapshot_to_weighing(), _apply_weighing_product_update(), _apply_weighing_update() (+15 more) +### Community 98 - "Community 98" +Cohesion: 0.33 +Nodes (3): 地磅 API 路由聚合 — REST 风格,协议对齐原 simple-dibang-xiaoshou。, 地磅(db)Pydantic schemas — 对齐原 simple-dibang-xiaoshou 契约。, 地磅 API 路由聚合 — REST 风格,协议对齐原 simple-dibang-xiaoshou。 + ### Community 99 - "Community 99" -Cohesion: 0.39 -Nodes (8): int, LeaveCreate, LeaveUpdate, Config, LeaveCreate, LeaveResponse, LeaveUpdate, Pydantic schemas - 请假申请 +Cohesion: 0.28 +Nodes (18): create_leave(), delete_leave(), get_leave(), _leave_local_callback(), leave_workflow_callback(), list_leaves(), submit_leave(), update_leave() (+10 more) ### Community 100 - "Community 100" Cohesion: 0.38 @@ -544,16 +582,16 @@ Cohesion: 0.15 Nodes (17): Any, _build_category_tree(), _category_row_to_dict(), _collect_category_with_ancestors(), list_categories(), list_category_tree(), list_oss_by_biz(), list_product_options() (+9 more) ### Community 103 - "Community 103" -Cohesion: 0.14 -Nodes (95): VehicleCreate, VehicleUpdate, bool, DbUserContext, float, int, PlPlan, PlTransport (+87 more) +Cohesion: 0.16 +Nodes (75): bool, DbUserContext, float, int, PlPlan, PlTransport, Session, str (+67 more) ### Community 104 - "Community 104" -Cohesion: 0.11 -Nodes (34): _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 基线) (+26 more) +Cohesion: 0.06 +Nodes (69): _avatar_url_field(), _build_user_info_payload(), _jwt_user_payload(), 公共接口(Web 登录、刷新 Token、登出;用户模型对齐 docs/sql/shanxia2.0.sql 基线), 与 web-admin `userInfo` 字段约定一致。, 与 web-admin `userInfo` 字段约定一致。, Web 端登录用 RSA 公钥(PKCS#1 v1.5,与 JSEncrypt 一致), Web 端登录用 RSA 公钥(PKCS#1 v1.5,与 JSEncrypt 一致) (+61 more) ### Community 105 - "Community 105" -Cohesion: 0.39 -Nodes (17): DbUserContext, Session, str, DashboardCargoStat, DashboardPartnerCargoStat, DashboardStats, _cargo_stats(), DashboardCargoStat (+9 more) +Cohesion: 0.27 +Nodes (21): DbUserContext, Session, str, bool, datetime, DbWeighingSlip, Session, str (+13 more) ### Community 106 - "Community 106" Cohesion: 0.30 @@ -567,13 +605,13 @@ Nodes (10): SysOss, int, Session, str, SysOss, create_oss(), create_oss(), get_o Cohesion: 0.34 Nodes (16): Any, int, Session, str, _build_tree(), _cascade_soft_delete(), _collect_with_ancestors(), create_dept() (+8 more) -### Community 111 - "Community 111" -Cohesion: 0.14 -Nodes (19): bool, int, Redis, Request, str, bool, bool, bool (+11 more) +### Community 109 - "Community 109" +Cohesion: 0.47 +Nodes (5): OperLogDetailBody, OperLogListBody, 操作日志(兼容 RuoYi OperLog 视图), OperLogDetailBody, OperLogListBody -### Community 112 - "Community 112" -Cohesion: 0.35 -Nodes (17): Any, bool, int, Session, str, _build_tree(), _cascade_soft_delete(), create_menu() (+9 more) +### Community 111 - "Community 111" +Cohesion: 0.40 +Nodes (3): AdvanceApplyCreate, AdvanceApplyUpdate, _coerce_optional_id() ### Community 122 - "Community 122" Cohesion: 0.22 @@ -584,29 +622,33 @@ Cohesion: 0.22 Nodes (9): _get_quote_item_field(), Java: resolveProductIdForQuoteItem(CrmProduct 无 tax_rate,跳过税率匹配), Java: resolveProductIdForQuoteItem(CrmProduct 无 tax_rate,跳过税率匹配), Java: resolveProductIdForQuoteItem(CrmProduct 无 tax_rate,跳过税率匹配), Java: resolveProductIdForQuoteItem(CrmProduct 无 tax_rate,跳过税率匹配), Java: resolveProductIdForQuoteItem(CrmProduct 无 tax_rate,跳过税率匹配), Java: resolveProductIdForQuoteItem(CrmProduct 无 tax_rate,跳过税率匹配), Java: resolveProductIdForQuoteItem(CrmProduct 无 tax_rate,跳过税率匹配) (+1 more) ### Community 125 - "Community 125" -Cohesion: 0.15 -Nodes (28): BxUserContext, int, Session, str, bool, BxUserContext, BxWorkflowNode, int (+20 more) +Cohesion: 0.35 +Nodes (8): bool, BxUserContext, int, Session, str, AttachmentService, BxAttachment, BxAttachment ### Community 126 - "Community 126" Cohesion: 0.33 Nodes (8): Decimal, str, derive_legacy_status_from_three(), derive_three_status_from_legacy(), 阶段A兼容:从旧 status 推导三字段。 约束:旧 status 本身混合了支付/配送/订单生命周期,因此只能尽力推断; 若业务侧已有更精确, 阶段A兼容:从三字段反推旧 status(用于旧前端/旧筛选参数兼容)。, ThreeStatus, _to_decimal() ### Community 127 - "Community 127" -Cohesion: 0.22 -Nodes (9): generate_contract_name(), Java: generateContractName, Java: generateContractName, Java: generateContractName, Java: generateContractName, Java: generateContractName, Java: generateContractName, Java: generateContractName (+1 more) +Cohesion: 0.29 +Nodes (10): datetime, int, Session, str, BizNoKind, allocate_next_biz_no(), _format_biz_no(), _prefix_for() (+2 more) ### Community 128 - "Community 128" -Cohesion: 0.33 -Nodes (3): _coerce_id(), OffsetItem, ReimburseDetailCreate +Cohesion: 0.20 +Nodes (7): _coerce_id(), OffsetItem, ReimburseApplyCreate, ReimburseApplyOut, ReimburseApplyUpdate, ReimburseApprovalCreate, ReimburseDetailCreate + +### Community 129 - "Community 129" +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 130 - "Community 130" +Cohesion: 0.29 +Nodes (7): batch_submit_contract_approval(), Java: batchSubmitApproval, Java: batchSubmitApproval, Java: batchSubmitApproval, Java: batchSubmitApproval, Java: batchSubmitApproval, Java: batchSubmitApproval ### Community 131 - "Community 131" 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 132 - "Community 132" -Cohesion: 0.28 -Nodes (8): date, datetime, str, _date_to_str(), _dt_to_str(), PagedQuery, PagedResponse, bx 原系统 API 响应包装(code=0 / msg / data.rows),与门户 success_response 分离。 - ### Community 133 - "Community 133" Cohesion: 0.25 Nodes (8): generate_auto_product_no(), Java: generateAutoProductNo — SXWL + 8位随机大写字符, Java: generateAutoProductNo — SXWL + 8位随机大写字符, Java: generateAutoProductNo — SXWL + 8位随机大写字符, Java: generateAutoProductNo — SXWL + 8位随机大写字符, Java: generateAutoProductNo — SXWL + 8位随机大写字符, Java: generateAutoProductNo — SXWL + 8位随机大写字符, Java: generateAutoProductNo — SXWL + 8位随机大写字符 @@ -615,44 +657,28 @@ Nodes (8): generate_auto_product_no(), Java: generateAutoProductNo — SXWL + 8 Cohesion: 0.33 Nodes (6): generate_barcode(), 生成唯一条码(纯数字:yyyyMMdd + 6位序号,如 20260606000001), 生成唯一条码(纯数字:yyyyMMdd + 6位序号,如 20260606000001), 生成唯一条码(纯数字:yyyyMMdd + 6位序号,如 20260606000001), 生成唯一条码(纯数字:yyyyMMdd + 6位序号,如 20260606000001), 生成唯一条码(纯数字:yyyyMMdd + 6位序号,如 20260606000001) -### Community 139 - "Community 139" -Cohesion: 0.33 -Nodes (3): 地磅 API 路由聚合 — REST 风格,协议对齐原 simple-dibang-xiaoshou。, 地磅(db)Pydantic schemas — 对齐原 simple-dibang-xiaoshou 契约。, 地磅 API 路由聚合 — REST 风格,协议对齐原 simple-dibang-xiaoshou。 - -### Community 142 - "Community 142" -Cohesion: 0.40 -Nodes (5): bool, str, get_password_hash(), 验证密码(哈希非 bcrypt 或损坏时返回 False,避免抛错), verify_password() - ### Community 143 - "Community 143" Cohesion: 0.25 Nodes (8): int, list_products(), _product_row_to_dict(), 产品 ORM 对象转 dict(camelCase 键名), 产品 ORM 对象转 dict(camelCase 键名), 产品 ORM 对象转 dict(camelCase 键名), 产品 ORM 对象转 dict(camelCase 键名), total_pages() ### Community 146 - "Community 146" -Cohesion: 0.13 -Nodes (34): int, PlTransport, Session, str, UploadFile, Session, str, TransportInventoryLinkRead (+26 more) - -### Community 147 - "Community 147" -Cohesion: 0.40 -Nodes (3): AdvanceApplyCreate, AdvanceApplyUpdate, _coerce_optional_id() - -### Community 148 - "Community 148" -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.34 +Nodes (19): int, PlTransport, Session, str, UploadFile, _build_public_page(), _format_file_size(), _format_plan_date() (+11 more) ## Knowledge Gaps - **61 isolated node(s):** `Any`, `Session`, `bool`, `bool`, `Config` (+56 more) These have ≤1 connection - possible missing edges or undocumented components. -- **2 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes. +- **3 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 `Session` connect `Community 3` to `Community 0`, `Community 2`, `Community 6`, `Community 9`, `Community 10`, `Community 11`, `Community 14`, `Community 15`, `Community 17`, `Community 18`, `Community 19`, `Community 20`, `Community 22`, `Community 23`, `Community 24`, `Community 25`, `Community 27`, `Community 28`, `Community 29`, `Community 30`, `Community 31`, `Community 32`, `Community 33`, `Community 36`, `Community 37`, `Community 38`, `Community 40`, `Community 41`, `Community 43`, `Community 44`, `Community 45`, `Community 46`, `Community 49`, `Community 50`, `Community 51`, `Community 52`, `Community 53`, `Community 54`, `Community 55`, `Community 57`, `Community 59`, `Community 60`, `Community 62`, `Community 63`, `Community 64`, `Community 65`, `Community 67`, `Community 68`, `Community 69`, `Community 71`, `Community 73`, `Community 74`, `Community 77`, `Community 78`, `Community 80`, `Community 81`, `Community 83`, `Community 84`, `Community 85`, `Community 86`, `Community 88`, `Community 90`, `Community 93`, `Community 95`, `Community 96`, `Community 97`, `Community 99`, `Community 102`, `Community 103`, `Community 104`, `Community 105`, `Community 107`, `Community 108`, `Community 112`, `Community 122`, `Community 123`, `Community 125`, `Community 131`, `Community 133`, `Community 135`, `Community 143`?** - _High betweenness centrality (0.232) - this node is a cross-community bridge._ -- **Why does `BaseModel` connect `Community 12` to `Community 128`, `Community 1`, `Community 2`, `Community 0`, `Community 132`, `Community 134`, `Community 6`, `Community 7`, `Community 10`, `Community 11`, `Community 16`, `Community 146`, `Community 147`, `Community 20`, `Community 21`, `Community 23`, `Community 30`, `Community 41`, `Community 49`, `Community 50`, `Community 53`, `Community 61`, `Community 62`, `Community 69`, `Community 74`, `Community 77`, `Community 93`, `Community 97`, `Community 99`, `Community 100`, `Community 103`, `Community 105`, `Community 125`?** - _High betweenness centrality (0.046) - this node is a cross-community bridge._ -- **Why does `int` connect `Community 20` to `Community 0`, `Community 3`, `Community 131`, `Community 5`, `Community 6`, `Community 8`, `Community 9`, `Community 11`, `Community 13`, `Community 14`, `Community 143`, `Community 17`, `Community 18`, `Community 19`, `Community 22`, `Community 23`, `Community 25`, `Community 26`, `Community 27`, `Community 28`, `Community 29`, `Community 30`, `Community 31`, `Community 32`, `Community 33`, `Community 34`, `Community 35`, `Community 36`, `Community 37`, `Community 40`, `Community 41`, `Community 43`, `Community 44`, `Community 45`, `Community 48`, `Community 49`, `Community 50`, `Community 51`, `Community 52`, `Community 53`, `Community 59`, `Community 60`, `Community 62`, `Community 64`, `Community 65`, `Community 69`, `Community 71`, `Community 74`, `Community 78`, `Community 81`, `Community 86`, `Community 90`, `Community 93`, `Community 95`, `Community 99`, `Community 103`, `Community 106`, `Community 107`, `Community 108`, `Community 111`, `Community 112`, `Community 125`?** - _High betweenness centrality (0.040) - this node is a cross-community bridge._ +- **Why does `Session` connect `Community 3` to `Community 0`, `Community 2`, `Community 6`, `Community 7`, `Community 8`, `Community 9`, `Community 10`, `Community 11`, `Community 14`, `Community 15`, `Community 17`, `Community 18`, `Community 19`, `Community 20`, `Community 21`, `Community 22`, `Community 23`, `Community 24`, `Community 25`, `Community 26`, `Community 27`, `Community 28`, `Community 29`, `Community 30`, `Community 31`, `Community 32`, `Community 33`, `Community 36`, `Community 37`, `Community 40`, `Community 41`, `Community 44`, `Community 45`, `Community 46`, `Community 47`, `Community 49`, `Community 50`, `Community 51`, `Community 52`, `Community 53`, `Community 54`, `Community 55`, `Community 56`, `Community 57`, `Community 59`, `Community 60`, `Community 63`, `Community 64`, `Community 65`, `Community 66`, `Community 67`, `Community 68`, `Community 69`, `Community 71`, `Community 73`, `Community 74`, `Community 78`, `Community 80`, `Community 81`, `Community 83`, `Community 84`, `Community 85`, `Community 86`, `Community 88`, `Community 89`, `Community 93`, `Community 95`, `Community 96`, `Community 97`, `Community 99`, `Community 102`, `Community 103`, `Community 104`, `Community 105`, `Community 107`, `Community 108`, `Community 109`, `Community 122`, `Community 123`, `Community 125`, `Community 127`, `Community 129`, `Community 130`, `Community 131`, `Community 133`, `Community 135`, `Community 143`?** + _High betweenness centrality (0.234) - this node is a cross-community bridge._ +- **Why does `BaseModel` connect `Community 77` to `Community 128`, `Community 1`, `Community 2`, `Community 0`, `Community 4`, `Community 6`, `Community 10`, `Community 11`, `Community 12`, `Community 16`, `Community 146`, `Community 20`, `Community 21`, `Community 23`, `Community 30`, `Community 32`, `Community 50`, `Community 53`, `Community 61`, `Community 62`, `Community 88`, `Community 93`, `Community 97`, `Community 99`, `Community 100`, `Community 103`, `Community 109`, `Community 111`?** + _High betweenness centrality (0.052) - this node is a cross-community bridge._ +- **Why does `datetime` connect `Community 48` to `Community 0`, `Community 1`, `Community 2`, `Community 3`, `Community 131`, `Community 5`, `Community 4`, `Community 7`, `Community 8`, `Community 9`, `Community 10`, `Community 11`, `Community 12`, `Community 13`, `Community 14`, `Community 15`, `Community 16`, `Community 17`, `Community 146`, `Community 19`, `Community 18`, `Community 21`, `Community 22`, `Community 23`, `Community 25`, `Community 26`, `Community 27`, `Community 28`, `Community 29`, `Community 31`, `Community 33`, `Community 34`, `Community 35`, `Community 36`, `Community 37`, `Community 39`, `Community 40`, `Community 43`, `Community 44`, `Community 45`, `Community 49`, `Community 50`, `Community 51`, `Community 52`, `Community 53`, `Community 56`, `Community 59`, `Community 60`, `Community 62`, `Community 63`, `Community 64`, `Community 67`, `Community 73`, `Community 74`, `Community 77`, `Community 78`, `Community 80`, `Community 81`, `Community 85`, `Community 86`, `Community 87`, `Community 89`, `Community 92`, `Community 93`, `Community 95`, `Community 97`, `Community 103`, `Community 104`, `Community 105`, `Community 108`, `Community 127`?** + _High betweenness centrality (0.041) - this node is a cross-community bridge._ - **Are the 251 inferred relationships involving `str` (e.g. with `AdvanceApplyCreate` and `AdvanceApplyOut`) actually correct?** _`str` has 251 INFERRED edges - model-reasoned connections that need verification._ - **Are the 248 inferred relationships involving `Session` (e.g. with `AdvanceApplyCreate` and `AdvanceApplyOut`) actually correct?** @@ -660,4 +686,4 @@ _Questions this graph is uniquely positioned to answer:_ - **Are the 140 inferred relationships involving `int` (e.g. with `AdvanceApplyCreate` and `AdvanceApplyOut`) actually correct?** _`int` has 140 INFERRED edges - model-reasoned connections that need verification._ - **What connects `数据库异常:返回 JSON 并保留 CORS 头,避免浏览器只报跨域错误`, `未捕获异常:统一 JSON 500,确保跨域场景下仍有 Access-Control-Allow-Origin`, `每月 1 日凌晨执行:按上月计划模板生成本月计划。` to the rest of the system?** - _855 weakly-connected nodes found - possible documentation gaps or missing edges._ \ No newline at end of file + _863 weakly-connected nodes found - possible documentation gaps or missing edges._ \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/0eba2598f4f76fb1d8bcc90c36895a8b05ce0ca1cabbad3a24d486d8fafadd53.json b/backend/graphify-out/cache/ast/0eba2598f4f76fb1d8bcc90c36895a8b05ce0ca1cabbad3a24d486d8fafadd53.json new file mode 100644 index 000000000..404736ae9 --- /dev/null +++ b/backend/graphify-out/cache/ast/0eba2598f4f76fb1d8bcc90c36895a8b05ce0ca1cabbad3a24d486d8fafadd53.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "label": "plan.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L1"}, {"id": "pl_plan_planproductbase", "label": "PlanProductBase", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L13"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "pl_plan_planproductcreate", "label": "PlanProductCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L42"}, {"id": "pl_plan_planproductupdate", "label": "PlanProductUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L46"}, {"id": "pl_plan_planproductread", "label": "PlanProductRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L67"}, {"id": "pl_plan_planbase", "label": "PlanBase", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L81"}, {"id": "pl_plan_plancreate", "label": "PlanCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L117"}, {"id": "pl_plan_plantransportcreateblock", "label": "PlanTransportCreateBlock", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L123"}, {"id": "pl_plan_planupdate", "label": "PlanUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L137"}, {"id": "pl_plan_planread", "label": "PlanRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L173"}, {"id": "pl_plan_planwithproducts", "label": "PlanWithProducts", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L196"}, {"id": "pl_plan_createfromcontractrequest", "label": "CreateFromContractRequest", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L205"}, {"id": "pl_plan_plancreatefull", "label": "PlanCreateFull", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L213"}, {"id": "pl_plan_planlistquery", "label": "PlanListQuery", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L224"}, {"id": "pl_plan_planproductcertitem", "label": "PlanProductCertItem", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L239"}, {"id": "pl_plan_planproductcertsupdate", "label": "PlanProductCertsUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L246"}, {"id": "pl_plan_planarchiveproductitem", "label": "PlanArchiveProductItem", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L251"}, {"id": "pl_plan_planarchivefreightblock", "label": "PlanArchiveFreightBlock", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L257"}, {"id": "pl_plan_planarchivebody", "label": "PlanArchiveBody", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L268"}, {"id": "pl_plan_planlistresponse", "label": "PlanListResponse", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L274"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L2", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "decimal", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "pydantic", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L6", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "pl_plan_planproductbase", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L13", "weight": 1.0}, {"source": "pl_plan_planproductbase", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L13", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "pl_plan_planproductcreate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L42", "weight": 1.0}, {"source": "pl_plan_planproductcreate", "target": "pl_plan_planproductbase", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L42", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "pl_plan_planproductupdate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L46", "weight": 1.0}, {"source": "pl_plan_planproductupdate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L46", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "pl_plan_planproductread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L67", "weight": 1.0}, {"source": "pl_plan_planproductread", "target": "pl_plan_planproductbase", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L67", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "pl_plan_planbase", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L81", "weight": 1.0}, {"source": "pl_plan_planbase", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L81", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "pl_plan_plancreate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L117", "weight": 1.0}, {"source": "pl_plan_plancreate", "target": "pl_plan_planbase", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L117", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "pl_plan_plantransportcreateblock", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L123", "weight": 1.0}, {"source": "pl_plan_plantransportcreateblock", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L123", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "pl_plan_planupdate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L137", "weight": 1.0}, {"source": "pl_plan_planupdate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L137", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "pl_plan_planread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L173", "weight": 1.0}, {"source": "pl_plan_planread", "target": "pl_plan_planbase", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L173", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "pl_plan_planwithproducts", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L196", "weight": 1.0}, {"source": "pl_plan_planwithproducts", "target": "pl_plan_planread", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L196", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "pl_plan_createfromcontractrequest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L205", "weight": 1.0}, {"source": "pl_plan_createfromcontractrequest", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L205", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "pl_plan_plancreatefull", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L213", "weight": 1.0}, {"source": "pl_plan_plancreatefull", "target": "pl_plan_plancreate", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L213", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "pl_plan_planlistquery", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L224", "weight": 1.0}, {"source": "pl_plan_planlistquery", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L224", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "pl_plan_planproductcertitem", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L239", "weight": 1.0}, {"source": "pl_plan_planproductcertitem", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L239", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "pl_plan_planproductcertsupdate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L246", "weight": 1.0}, {"source": "pl_plan_planproductcertsupdate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L246", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "pl_plan_planarchiveproductitem", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L251", "weight": 1.0}, {"source": "pl_plan_planarchiveproductitem", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L251", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "pl_plan_planarchivefreightblock", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L257", "weight": 1.0}, {"source": "pl_plan_planarchivefreightblock", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L257", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "pl_plan_planarchivebody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L268", "weight": 1.0}, {"source": "pl_plan_planarchivebody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L268", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "pl_plan_planlistresponse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L274", "weight": 1.0}, {"source": "pl_plan_planlistresponse", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L274", "weight": 1.0}], "raw_calls": []} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/588e6ad4cad440054b1f45e6862152e7eaf585d9c27f2c3ff431b360ff3925f8.json b/backend/graphify-out/cache/ast/588e6ad4cad440054b1f45e6862152e7eaf585d9c27f2c3ff431b360ff3925f8.json new file mode 100644 index 000000000..82f8bdfa5 --- /dev/null +++ b/backend/graphify-out/cache/ast/588e6ad4cad440054b1f45e6862152e7eaf585d9c27f2c3ff431b360ff3925f8.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_freight_py", "label": "freight.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/freight.py", "source_location": "L1"}, {"id": "pl_freight_freightsettlementbase", "label": "FreightSettlementBase", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/freight.py", "source_location": "L14"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "pl_freight_freightsettlementcreate", "label": "FreightSettlementCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/freight.py", "source_location": "L23"}, {"id": "pl_freight_freightsettlementcreate_check_ids", "label": ".check_ids()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/freight.py", "source_location": "L29"}, {"id": "pl_freight_freightsettlementupdate", "label": "FreightSettlementUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/freight.py", "source_location": "L35"}, {"id": "pl_freight_freightsettlementread", "label": "FreightSettlementRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/freight.py", "source_location": "L43"}, {"id": "pl_freight_freightsettlementlistitem", "label": "FreightSettlementListItem", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/freight.py", "source_location": "L57"}, {"id": "pl_freight_freightsettlementtransportread", "label": "FreightSettlementTransportRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/freight.py", "source_location": "L71"}, {"id": "pl_freight_unsettledplanitem", "label": "UnsettledPlanItem", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/freight.py", "source_location": "L81"}, {"id": "pl_freight_unsettledplanlistresponse", "label": "UnsettledPlanListResponse", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/freight.py", "source_location": "L95"}, {"id": "pl_freight_settlementplansummary", "label": "SettlementPlanSummary", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/freight.py", "source_location": "L100"}, {"id": "pl_freight_settlementapprovalflowitem", "label": "SettlementApprovalFlowItem", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/freight.py", "source_location": "L109"}, {"id": "pl_freight_freightsettlementwithtransports", "label": "FreightSettlementWithTransports", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/freight.py", "source_location": "L123"}, {"id": "pl_freight_freightsettlementsubmitapprovalbody", "label": "FreightSettlementSubmitApprovalBody", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/freight.py", "source_location": "L140"}, {"id": "pl_freight_freightsettlementapprovalactionbody", "label": "FreightSettlementApprovalActionBody", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/freight.py", "source_location": "L147"}, {"id": "pl_freight_freightsettlementdisbursebody", "label": "FreightSettlementDisburseBody", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/freight.py", "source_location": "L152"}, {"id": "pl_freight_remittancevouchercreate", "label": "RemittanceVoucherCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/freight.py", "source_location": "L165"}, {"id": "pl_freight_remittancevoucherread", "label": "RemittanceVoucherRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/freight.py", "source_location": "L174"}, {"id": "pl_freight_freightsettlementlistquery", "label": "FreightSettlementListQuery", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/freight.py", "source_location": "L193"}, {"id": "pl_freight_freightsettlementlistresponse", "label": "FreightSettlementListResponse", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/freight.py", "source_location": "L202"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_freight_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/freight.py", "source_location": "L2", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_freight_py", "target": "decimal", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/freight.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_freight_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/freight.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_freight_py", "target": "pydantic", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/freight.py", "source_location": "L6", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_freight_py", "target": "pl_freight_freightsettlementbase", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/freight.py", "source_location": "L14", "weight": 1.0}, {"source": "pl_freight_freightsettlementbase", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/freight.py", "source_location": "L14", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_freight_py", "target": "pl_freight_freightsettlementcreate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/freight.py", "source_location": "L23", "weight": 1.0}, {"source": "pl_freight_freightsettlementcreate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/freight.py", "source_location": "L23", "weight": 1.0}, {"source": "pl_freight_freightsettlementcreate", "target": "pl_freight_freightsettlementcreate_check_ids", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/freight.py", "source_location": "L29", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_freight_py", "target": "pl_freight_freightsettlementupdate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/freight.py", "source_location": "L35", "weight": 1.0}, {"source": "pl_freight_freightsettlementupdate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/freight.py", "source_location": "L35", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_freight_py", "target": "pl_freight_freightsettlementread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/freight.py", "source_location": "L43", "weight": 1.0}, {"source": "pl_freight_freightsettlementread", "target": "pl_freight_freightsettlementbase", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/freight.py", "source_location": "L43", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_freight_py", "target": "pl_freight_freightsettlementlistitem", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/freight.py", "source_location": "L57", "weight": 1.0}, {"source": "pl_freight_freightsettlementlistitem", "target": "pl_freight_freightsettlementread", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/freight.py", "source_location": "L57", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_freight_py", "target": "pl_freight_freightsettlementtransportread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/freight.py", "source_location": "L71", "weight": 1.0}, {"source": "pl_freight_freightsettlementtransportread", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/freight.py", "source_location": "L71", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_freight_py", "target": "pl_freight_unsettledplanitem", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/freight.py", "source_location": "L81", "weight": 1.0}, {"source": "pl_freight_unsettledplanitem", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/freight.py", "source_location": "L81", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_freight_py", "target": "pl_freight_unsettledplanlistresponse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/freight.py", "source_location": "L95", "weight": 1.0}, {"source": "pl_freight_unsettledplanlistresponse", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/freight.py", "source_location": "L95", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_freight_py", "target": "pl_freight_settlementplansummary", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/freight.py", "source_location": "L100", "weight": 1.0}, {"source": "pl_freight_settlementplansummary", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/freight.py", "source_location": "L100", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_freight_py", "target": "pl_freight_settlementapprovalflowitem", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/freight.py", "source_location": "L109", "weight": 1.0}, {"source": "pl_freight_settlementapprovalflowitem", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/freight.py", "source_location": "L109", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_freight_py", "target": "pl_freight_freightsettlementwithtransports", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/freight.py", "source_location": "L123", "weight": 1.0}, {"source": "pl_freight_freightsettlementwithtransports", "target": "pl_freight_freightsettlementread", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/freight.py", "source_location": "L123", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_freight_py", "target": "pl_freight_freightsettlementsubmitapprovalbody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/freight.py", "source_location": "L140", "weight": 1.0}, {"source": "pl_freight_freightsettlementsubmitapprovalbody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/freight.py", "source_location": "L140", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_freight_py", "target": "pl_freight_freightsettlementapprovalactionbody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/freight.py", "source_location": "L147", "weight": 1.0}, {"source": "pl_freight_freightsettlementapprovalactionbody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/freight.py", "source_location": "L147", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_freight_py", "target": "pl_freight_freightsettlementdisbursebody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/freight.py", "source_location": "L152", "weight": 1.0}, {"source": "pl_freight_freightsettlementdisbursebody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/freight.py", "source_location": "L152", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_freight_py", "target": "pl_freight_remittancevouchercreate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/freight.py", "source_location": "L165", "weight": 1.0}, {"source": "pl_freight_remittancevouchercreate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/freight.py", "source_location": "L165", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_freight_py", "target": "pl_freight_remittancevoucherread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/freight.py", "source_location": "L174", "weight": 1.0}, {"source": "pl_freight_remittancevoucherread", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/freight.py", "source_location": "L174", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_freight_py", "target": "pl_freight_freightsettlementlistquery", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/freight.py", "source_location": "L193", "weight": 1.0}, {"source": "pl_freight_freightsettlementlistquery", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/freight.py", "source_location": "L193", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_freight_py", "target": "pl_freight_freightsettlementlistresponse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/freight.py", "source_location": "L202", "weight": 1.0}, {"source": "pl_freight_freightsettlementlistresponse", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/freight.py", "source_location": "L202", "weight": 1.0}], "raw_calls": [{"caller_nid": "pl_freight_freightsettlementcreate_check_ids", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/freight.py", "source_location": "L31"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/77e50fcdc4335deb5748c15971022d9d3e635c74ec9aced40aee7da3d394017a.json b/backend/graphify-out/cache/ast/77e50fcdc4335deb5748c15971022d9d3e635c74ec9aced40aee7da3d394017a.json new file mode 100644 index 000000000..8f09b5a05 --- /dev/null +++ b/backend/graphify-out/cache/ast/77e50fcdc4335deb5748c15971022d9d3e635c74ec9aced40aee7da3d394017a.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_freight_py", "label": "freight.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L1"}, {"id": "pl_freight_generate_settlement_no", "label": "_generate_settlement_no()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L29"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L29"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L29"}, {"id": "pl_freight_list_unsettled_plans", "label": "list_unsettled_plans()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L48"}, {"id": "int", "label": "int", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L48"}, {"id": "dbusercontext", "label": "DbUserContext", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L48"}, {"id": "unsettledplanlistresponse", "label": "UnsettledPlanListResponse", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L48"}, {"id": "pl_freight_list_settlements", "label": "list_settlements()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L71"}, {"id": "freightsettlementlistresponse", "label": "FreightSettlementListResponse", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L71"}, {"id": "pl_freight_create_settlement", "label": "create_settlement()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L95"}, {"id": "freightsettlementcreate", "label": "FreightSettlementCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L95"}, {"id": "freightsettlementread", "label": "FreightSettlementRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L95"}, {"id": "pl_freight_get_settlement", "label": "get_settlement()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L114"}, {"id": "freightsettlementwithtransports", "label": "FreightSettlementWithTransports", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L114"}, {"id": "pl_freight_update_settlement", "label": "update_settlement()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L127"}, {"id": "freightsettlementupdate", "label": "FreightSettlementUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L127"}, {"id": "pl_freight_delete_settlement", "label": "delete_settlement()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L140"}, {"id": "pl_freight_submit_settlement_approval", "label": "submit_settlement_approval()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L152"}, {"id": "freightsettlementsubmitapprovalbody", "label": "FreightSettlementSubmitApprovalBody", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L152"}, {"id": "pl_freight_process_settlement_approval", "label": "process_settlement_approval()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L170"}, {"id": "freightsettlementapprovalactionbody", "label": "FreightSettlementApprovalActionBody", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L170"}, {"id": "pl_freight_withdraw_settlement_approval", "label": "withdraw_settlement_approval()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L190"}, {"id": "pl_freight_get_settlement_approval_flow", "label": "get_settlement_approval_flow()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L202"}, {"id": "pl_freight_disburse_settlement", "label": "disburse_settlement()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L213"}, {"id": "freightsettlementdisbursebody", "label": "FreightSettlementDisburseBody", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L213"}, {"id": "pl_freight_submit_settlement_legacy", "label": "submit_settlement_legacy()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L232"}, {"id": "pl_freight_approve_settlement_legacy", "label": "approve_settlement_legacy()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L241"}, {"id": "pl_freight_list_vouchers", "label": "list_vouchers()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L250"}, {"id": "remittancevoucherread", "label": "RemittanceVoucherRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L250"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_freight_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L2", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_freight_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_freight_py", "target": "fastapi", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L5", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_freight_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L6", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_freight_py", "target": "app_core_database", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L8", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_freight_py", "target": "app_core_db_auth", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L9", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_freight_py", "target": "app_core_tenant_context", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L10", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_freight_py", "target": "app_models_pl_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L11", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_freight_py", "target": "app_schemas_pl_freight", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L12", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_freight_py", "target": "app_services", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L24", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_freight_py", "target": "pl_freight_generate_settlement_no", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L29", "weight": 1.0}, {"source": "pl_freight_generate_settlement_no", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L29", "weight": 1.0}, {"source": "pl_freight_generate_settlement_no", "target": "str", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L29", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_freight_py", "target": "pl_freight_list_unsettled_plans", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L48", "weight": 1.0}, {"source": "pl_freight_list_unsettled_plans", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L48", "weight": 1.0}, {"source": "pl_freight_list_unsettled_plans", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L48", "weight": 1.0}, {"source": "pl_freight_list_unsettled_plans", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L48", "weight": 1.0}, {"source": "pl_freight_list_unsettled_plans", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L48", "weight": 1.0}, {"source": "pl_freight_list_unsettled_plans", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L48", "weight": 1.0}, {"source": "pl_freight_list_unsettled_plans", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L48", "weight": 1.0}, {"source": "pl_freight_list_unsettled_plans", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L48", "weight": 1.0}, {"source": "pl_freight_list_unsettled_plans", "target": "unsettledplanlistresponse", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L48", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_freight_py", "target": "pl_freight_list_settlements", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L71", "weight": 1.0}, {"source": "pl_freight_list_settlements", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L71", "weight": 1.0}, {"source": "pl_freight_list_settlements", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L71", "weight": 1.0}, {"source": "pl_freight_list_settlements", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L71", "weight": 1.0}, {"source": "pl_freight_list_settlements", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L71", "weight": 1.0}, {"source": "pl_freight_list_settlements", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L71", "weight": 1.0}, {"source": "pl_freight_list_settlements", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L71", "weight": 1.0}, {"source": "pl_freight_list_settlements", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L71", "weight": 1.0}, {"source": "pl_freight_list_settlements", "target": "freightsettlementlistresponse", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L71", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_freight_py", "target": "pl_freight_create_settlement", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L95", "weight": 1.0}, {"source": "pl_freight_create_settlement", "target": "freightsettlementcreate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L95", "weight": 1.0}, {"source": "pl_freight_create_settlement", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L95", "weight": 1.0}, {"source": "pl_freight_create_settlement", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L95", "weight": 1.0}, {"source": "pl_freight_create_settlement", "target": "freightsettlementread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L95", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_freight_py", "target": "pl_freight_get_settlement", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L114", "weight": 1.0}, {"source": "pl_freight_get_settlement", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L114", "weight": 1.0}, {"source": "pl_freight_get_settlement", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L114", "weight": 1.0}, {"source": "pl_freight_get_settlement", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L114", "weight": 1.0}, {"source": "pl_freight_get_settlement", "target": "freightsettlementwithtransports", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L114", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_freight_py", "target": "pl_freight_update_settlement", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L127", "weight": 1.0}, {"source": "pl_freight_update_settlement", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L127", "weight": 1.0}, {"source": "pl_freight_update_settlement", "target": "freightsettlementupdate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L127", "weight": 1.0}, {"source": "pl_freight_update_settlement", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L127", "weight": 1.0}, {"source": "pl_freight_update_settlement", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L127", "weight": 1.0}, {"source": "pl_freight_update_settlement", "target": "freightsettlementread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L127", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_freight_py", "target": "pl_freight_delete_settlement", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L140", "weight": 1.0}, {"source": "pl_freight_delete_settlement", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L140", "weight": 1.0}, {"source": "pl_freight_delete_settlement", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L140", "weight": 1.0}, {"source": "pl_freight_delete_settlement", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L140", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_freight_py", "target": "pl_freight_submit_settlement_approval", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L152", "weight": 1.0}, {"source": "pl_freight_submit_settlement_approval", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L152", "weight": 1.0}, {"source": "pl_freight_submit_settlement_approval", "target": "freightsettlementsubmitapprovalbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L152", "weight": 1.0}, {"source": "pl_freight_submit_settlement_approval", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L152", "weight": 1.0}, {"source": "pl_freight_submit_settlement_approval", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L152", "weight": 1.0}, {"source": "pl_freight_submit_settlement_approval", "target": "freightsettlementread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L152", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_freight_py", "target": "pl_freight_process_settlement_approval", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L170", "weight": 1.0}, {"source": "pl_freight_process_settlement_approval", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L170", "weight": 1.0}, {"source": "pl_freight_process_settlement_approval", "target": "freightsettlementapprovalactionbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L170", "weight": 1.0}, {"source": "pl_freight_process_settlement_approval", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L170", "weight": 1.0}, {"source": "pl_freight_process_settlement_approval", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L170", "weight": 1.0}, {"source": "pl_freight_process_settlement_approval", "target": "freightsettlementread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L170", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_freight_py", "target": "pl_freight_withdraw_settlement_approval", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L190", "weight": 1.0}, {"source": "pl_freight_withdraw_settlement_approval", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L190", "weight": 1.0}, {"source": "pl_freight_withdraw_settlement_approval", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L190", "weight": 1.0}, {"source": "pl_freight_withdraw_settlement_approval", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L190", "weight": 1.0}, {"source": "pl_freight_withdraw_settlement_approval", "target": "freightsettlementread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L190", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_freight_py", "target": "pl_freight_get_settlement_approval_flow", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L202", "weight": 1.0}, {"source": "pl_freight_get_settlement_approval_flow", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L202", "weight": 1.0}, {"source": "pl_freight_get_settlement_approval_flow", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L202", "weight": 1.0}, {"source": "pl_freight_get_settlement_approval_flow", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L202", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_freight_py", "target": "pl_freight_disburse_settlement", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L213", "weight": 1.0}, {"source": "pl_freight_disburse_settlement", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L213", "weight": 1.0}, {"source": "pl_freight_disburse_settlement", "target": "freightsettlementdisbursebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L213", "weight": 1.0}, {"source": "pl_freight_disburse_settlement", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L213", "weight": 1.0}, {"source": "pl_freight_disburse_settlement", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L213", "weight": 1.0}, {"source": "pl_freight_disburse_settlement", "target": "freightsettlementread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L213", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_freight_py", "target": "pl_freight_submit_settlement_legacy", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L232", "weight": 1.0}, {"source": "pl_freight_submit_settlement_legacy", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L232", "weight": 1.0}, {"source": "pl_freight_submit_settlement_legacy", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L232", "weight": 1.0}, {"source": "pl_freight_submit_settlement_legacy", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L232", "weight": 1.0}, {"source": "pl_freight_submit_settlement_legacy", "target": "freightsettlementread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L232", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_freight_py", "target": "pl_freight_approve_settlement_legacy", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L241", "weight": 1.0}, {"source": "pl_freight_approve_settlement_legacy", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L241", "weight": 1.0}, {"source": "pl_freight_approve_settlement_legacy", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L241", "weight": 1.0}, {"source": "pl_freight_approve_settlement_legacy", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L241", "weight": 1.0}, {"source": "pl_freight_approve_settlement_legacy", "target": "freightsettlementread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L241", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_freight_py", "target": "pl_freight_list_vouchers", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L250", "weight": 1.0}, {"source": "pl_freight_list_vouchers", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L250", "weight": 1.0}, {"source": "pl_freight_list_vouchers", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L250", "weight": 1.0}, {"source": "pl_freight_list_vouchers", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L250", "weight": 1.0}, {"source": "pl_freight_list_vouchers", "target": "remittancevoucherread", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L250", "weight": 1.0}, {"source": "pl_freight_list_unsettled_plans", "target": "unsettledplanlistresponse", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L67", "weight": 1.0}, {"source": "pl_freight_list_settlements", "target": "freightsettlementlistresponse", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L91", "weight": 1.0}, {"source": "pl_freight_create_settlement", "target": "pl_freight_generate_settlement_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L108", "weight": 1.0}], "raw_calls": [{"caller_nid": "pl_freight_generate_settlement_no", "callee": "today", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L30"}, {"caller_nid": "pl_freight_generate_settlement_no", "callee": "strftime", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L31"}, {"caller_nid": "pl_freight_generate_settlement_no", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L34"}, {"caller_nid": "pl_freight_generate_settlement_no", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L34"}, {"caller_nid": "pl_freight_generate_settlement_no", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L34"}, {"caller_nid": "pl_freight_generate_settlement_no", "callee": "like", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L36"}, {"caller_nid": "pl_freight_generate_settlement_no", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L39"}, {"caller_nid": "pl_freight_list_unsettled_plans", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L57"}, {"caller_nid": "pl_freight_list_unsettled_plans", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L57"}, {"caller_nid": "pl_freight_list_settlements", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L80"}, {"caller_nid": "pl_freight_list_settlements", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L80"}, {"caller_nid": "pl_freight_list_settlements", "callee": "list_settlements_enriched", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L81"}, {"caller_nid": "pl_freight_create_settlement", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L100"}, {"caller_nid": "pl_freight_create_settlement", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L100"}, {"caller_nid": "pl_freight_get_settlement", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L119"}, {"caller_nid": "pl_freight_get_settlement", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L119"}, {"caller_nid": "pl_freight_get_settlement", "callee": "get_settlement_detail", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L120"}, {"caller_nid": "pl_freight_get_settlement", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L123"}, {"caller_nid": "pl_freight_update_settlement", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L133"}, {"caller_nid": "pl_freight_update_settlement", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L133"}, {"caller_nid": "pl_freight_update_settlement", "callee": "update_settlement_draft", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L134"}, {"caller_nid": "pl_freight_delete_settlement", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L145"}, {"caller_nid": "pl_freight_delete_settlement", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L145"}, {"caller_nid": "pl_freight_delete_settlement", "callee": "delete_draft_settlement", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L146"}, {"caller_nid": "pl_freight_submit_settlement_approval", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L158"}, {"caller_nid": "pl_freight_submit_settlement_approval", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L158"}, {"caller_nid": "pl_freight_process_settlement_approval", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L176"}, {"caller_nid": "pl_freight_process_settlement_approval", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L176"}, {"caller_nid": "pl_freight_process_settlement_approval", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L178"}, {"caller_nid": "pl_freight_withdraw_settlement_approval", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L195"}, {"caller_nid": "pl_freight_withdraw_settlement_approval", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L195"}, {"caller_nid": "pl_freight_get_settlement_approval_flow", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L207"}, {"caller_nid": "pl_freight_get_settlement_approval_flow", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L207"}, {"caller_nid": "pl_freight_get_settlement_approval_flow", "callee": "get_settlement_row", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L208"}, {"caller_nid": "pl_freight_get_settlement_approval_flow", "callee": "get_approval_flow", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L209"}, {"caller_nid": "pl_freight_disburse_settlement", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L219"}, {"caller_nid": "pl_freight_disburse_settlement", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L219"}, {"caller_nid": "pl_freight_submit_settlement_legacy", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L237"}, {"caller_nid": "pl_freight_approve_settlement_legacy", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L246"}, {"caller_nid": "pl_freight_list_vouchers", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L255"}, {"caller_nid": "pl_freight_list_vouchers", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L255"}, {"caller_nid": "pl_freight_list_vouchers", "callee": "get_settlement_row", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L256"}, {"caller_nid": "pl_freight_list_vouchers", "callee": "get_settlement_detail", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L257"}, {"caller_nid": "pl_freight_list_vouchers", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L260"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/798d82ba727162d95e52a547c9c3699e4a01e436acac2c3423fc04d96bce7af3.json b/backend/graphify-out/cache/ast/798d82ba727162d95e52a547c9c3699e4a01e436acac2c3423fc04d96bce7af3.json new file mode 100644 index 000000000..d85d97523 --- /dev/null +++ b/backend/graphify-out/cache/ast/798d82ba727162d95e52a547c9c3699e4a01e436acac2c3423fc04d96bce7af3.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_models_pl_models_py", "label": "pl_models.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L1"}, {"id": "models_pl_models_plcarrier", "label": "PlCarrier", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L28"}, {"id": "base", "label": "Base", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "models_pl_models_plvehicle", "label": "PlVehicle", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L49"}, {"id": "models_pl_models_plpersonnel", "label": "PlPersonnel", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L74"}, {"id": "models_pl_models_plcert", "label": "PlCert", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L96"}, {"id": "models_pl_models_pldriver", "label": "PlDriver", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L121"}, {"id": "models_pl_models_plvehiclepersonnel", "label": "PlVehiclePersonnel", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L147"}, {"id": "models_pl_models_plvehicledriver", "label": "PlVehicleDriver", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L168"}, {"id": "models_pl_models_plplan", "label": "PlPlan", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L193"}, {"id": "models_pl_models_plplanproduct", "label": "PlPlanProduct", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L276"}, {"id": "models_pl_models_plplanchange", "label": "PlPlanChange", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L331"}, {"id": "models_pl_models_pltransport", "label": "PlTransport", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L358"}, {"id": "models_pl_models_pltransportdblink", "label": "PlTransportDbLink", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L418"}, {"id": "models_pl_models_plplantransport", "label": "PlPlanTransport", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L440"}, {"id": "models_pl_models_pltransportsitelink", "label": "PlTransportSiteLink", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L459"}, {"id": "models_pl_models_pltransportapproval", "label": "PlTransportApproval", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L492"}, {"id": "models_pl_models_plfreightsettlement", "label": "PlFreightSettlement", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L521"}, {"id": "models_pl_models_plfreightsettlementapproval", "label": "PlFreightSettlementApproval", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L552"}, {"id": "models_pl_models_plfreightsettlementtransport", "label": "PlFreightSettlementTransport", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L579"}, {"id": "models_pl_models_plremittancevoucher", "label": "PlRemittanceVoucher", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L599"}, {"id": "models_pl_models_plinventory", "label": "PlInventory", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L626"}, {"id": "models_pl_models_plinventorytransaction", "label": "PlInventoryTransaction", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L658"}, {"id": "models_pl_models_plinventorywarning", "label": "PlInventoryWarning", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L687"}, {"id": "models_pl_models_pldocumentreminder", "label": "PlDocumentReminder", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L712"}, {"id": "models_pl_models_rationale_122", "label": "\u53f8\u673a\u8868 pl_driver\uff08\u517c\u5bb9\u65e7\u8868\uff0c\u8fc1\u79fb\u540e\u9010\u6b65\u5e9f\u5f03\uff09", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L122"}, {"id": "models_pl_models_rationale_148", "label": "\u8f66\u8f86-\u4eba\u5458\u5173\u8054\u8868 pl_vehicle_personnel", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L148"}, {"id": "models_pl_models_rationale_169", "label": "\u8f66\u8f86-\u53f8\u673a\u5173\u8054\u8868 pl_vehicle_driver\uff08\u517c\u5bb9\u65e7\u8868\uff09", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L169"}, {"id": "models_pl_models_rationale_277", "label": "\u8ba1\u5212\u4ea7\u54c1\u660e\u7ec6\u8868 pl_plan_product", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L277"}, {"id": "models_pl_models_rationale_332", "label": "\u8ba1\u5212\u53d8\u66f4\u8bb0\u5f55\u8868 pl_plan_change", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L332"}, {"id": "models_pl_models_rationale_419", "label": "\u8fd0\u8f93-\u5730\u78c5\u51fa\u5165\u5e93\u5173\u8054 pl_transport_db_link", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L419"}, {"id": "models_pl_models_rationale_441", "label": "\u8ba1\u5212-\u8fd0\u8f93\u5173\u8054\u8868 pl_plan_transport", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L441"}, {"id": "models_pl_models_rationale_460", "label": "\u8fd0\u8f93\u8ba1\u5212\u73b0\u573a\u94fe\u63a5 pl_transport_site_link\uff08\u4e0e\u5730\u78c5\u51fa\u5165\u5e93\u5355\u89e3\u8026\uff09", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L460"}, {"id": "models_pl_models_rationale_493", "label": "\u8fd0\u8f93\u5ba1\u6279\u8bb0\u5f55\u8868 pl_transport_approval", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L493"}, {"id": "models_pl_models_rationale_522", "label": "\u8fd0\u8d39\u7ed3\u7b97\u8868 pl_freight_settlement", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L522"}, {"id": "models_pl_models_rationale_553", "label": "\u8fd0\u8d39\u7ed3\u7b97\u5ba1\u6279 pl_freight_settlement_approval", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L553"}, {"id": "models_pl_models_rationale_580", "label": "\u7ed3\u7b97\u5355-\u8fd0\u8f93\u5173\u8054\u8868 pl_freight_settlement_transport", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L580"}, {"id": "models_pl_models_rationale_600", "label": "\u6c47\u6b3e\u51ed\u8bc1\u8868 pl_remittance_voucher", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L600"}, {"id": "models_pl_models_rationale_659", "label": "\u5e93\u5b58\u6d41\u6c34\u8868 pl_inventory_transaction", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L659"}, {"id": "models_pl_models_rationale_688", "label": "\u5e93\u5b58\u9884\u8b66\u8868 pl_inventory_warning", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L688"}, {"id": "models_pl_models_rationale_713", "label": "\u8bc1\u4ef6\u5230\u671f\u63d0\u9192\u8868 pl_document_reminder", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L713"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L2", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "decimal", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "sqlalchemy", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L5", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L18", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "app_core_database", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L20", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "models_pl_models_plcarrier", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L28", "weight": 1.0}, {"source": "models_pl_models_plcarrier", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L28", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "models_pl_models_plvehicle", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L49", "weight": 1.0}, {"source": "models_pl_models_plvehicle", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L49", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "models_pl_models_plpersonnel", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L74", "weight": 1.0}, {"source": "models_pl_models_plpersonnel", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L74", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "models_pl_models_plcert", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L96", "weight": 1.0}, {"source": "models_pl_models_plcert", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L96", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "models_pl_models_pldriver", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L121", "weight": 1.0}, {"source": "models_pl_models_pldriver", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L121", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "models_pl_models_plvehiclepersonnel", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L147", "weight": 1.0}, {"source": "models_pl_models_plvehiclepersonnel", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L147", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "models_pl_models_plvehicledriver", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L168", "weight": 1.0}, {"source": "models_pl_models_plvehicledriver", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L168", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "models_pl_models_plplan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L193", "weight": 1.0}, {"source": "models_pl_models_plplan", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L193", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "models_pl_models_plplanproduct", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L276", "weight": 1.0}, {"source": "models_pl_models_plplanproduct", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L276", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "models_pl_models_plplanchange", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L331", "weight": 1.0}, {"source": "models_pl_models_plplanchange", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L331", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "models_pl_models_pltransport", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L358", "weight": 1.0}, {"source": "models_pl_models_pltransport", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L358", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "models_pl_models_pltransportdblink", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L418", "weight": 1.0}, {"source": "models_pl_models_pltransportdblink", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L418", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "models_pl_models_plplantransport", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L440", "weight": 1.0}, {"source": "models_pl_models_plplantransport", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L440", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "models_pl_models_pltransportsitelink", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L459", "weight": 1.0}, {"source": "models_pl_models_pltransportsitelink", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L459", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "models_pl_models_pltransportapproval", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L492", "weight": 1.0}, {"source": "models_pl_models_pltransportapproval", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L492", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "models_pl_models_plfreightsettlement", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L521", "weight": 1.0}, {"source": "models_pl_models_plfreightsettlement", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L521", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "models_pl_models_plfreightsettlementapproval", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L552", "weight": 1.0}, {"source": "models_pl_models_plfreightsettlementapproval", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L552", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "models_pl_models_plfreightsettlementtransport", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L579", "weight": 1.0}, {"source": "models_pl_models_plfreightsettlementtransport", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L579", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "models_pl_models_plremittancevoucher", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L599", "weight": 1.0}, {"source": "models_pl_models_plremittancevoucher", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L599", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "models_pl_models_plinventory", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L626", "weight": 1.0}, {"source": "models_pl_models_plinventory", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L626", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "models_pl_models_plinventorytransaction", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L658", "weight": 1.0}, {"source": "models_pl_models_plinventorytransaction", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L658", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "models_pl_models_plinventorywarning", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L687", "weight": 1.0}, {"source": "models_pl_models_plinventorywarning", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L687", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_pl_models_py", "target": "models_pl_models_pldocumentreminder", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L712", "weight": 1.0}, {"source": "models_pl_models_pldocumentreminder", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L712", "weight": 1.0}, {"source": "models_pl_models_rationale_122", "target": "models_pl_models_pldriver", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L122", "weight": 1.0}, {"source": "models_pl_models_rationale_148", "target": "models_pl_models_plvehiclepersonnel", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L148", "weight": 1.0}, {"source": "models_pl_models_rationale_169", "target": "models_pl_models_plvehicledriver", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L169", "weight": 1.0}, {"source": "models_pl_models_rationale_277", "target": "models_pl_models_plplanproduct", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L277", "weight": 1.0}, {"source": "models_pl_models_rationale_332", "target": "models_pl_models_plplanchange", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L332", "weight": 1.0}, {"source": "models_pl_models_rationale_419", "target": "models_pl_models_pltransportdblink", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L419", "weight": 1.0}, {"source": "models_pl_models_rationale_441", "target": "models_pl_models_plplantransport", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L441", "weight": 1.0}, {"source": "models_pl_models_rationale_460", "target": "models_pl_models_pltransportsitelink", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L460", "weight": 1.0}, {"source": "models_pl_models_rationale_493", "target": "models_pl_models_pltransportapproval", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L493", "weight": 1.0}, {"source": "models_pl_models_rationale_522", "target": "models_pl_models_plfreightsettlement", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L522", "weight": 1.0}, {"source": "models_pl_models_rationale_553", "target": "models_pl_models_plfreightsettlementapproval", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L553", "weight": 1.0}, {"source": "models_pl_models_rationale_580", "target": "models_pl_models_plfreightsettlementtransport", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L580", "weight": 1.0}, {"source": "models_pl_models_rationale_600", "target": "models_pl_models_plremittancevoucher", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L600", "weight": 1.0}, {"source": "models_pl_models_rationale_659", "target": "models_pl_models_plinventorytransaction", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L659", "weight": 1.0}, {"source": "models_pl_models_rationale_688", "target": "models_pl_models_plinventorywarning", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L688", "weight": 1.0}, {"source": "models_pl_models_rationale_713", "target": "models_pl_models_pldocumentreminder", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L713", "weight": 1.0}], "raw_calls": []} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/79a1072c8220908a9a140fc955efeeb8858c8332911a39b481cc7baf9d816441.json b/backend/graphify-out/cache/ast/79a1072c8220908a9a140fc955efeeb8858c8332911a39b481cc7baf9d816441.json new file mode 100644 index 000000000..3f6d7429c --- /dev/null +++ b/backend/graphify-out/cache/ast/79a1072c8220908a9a140fc955efeeb8858c8332911a39b481cc7baf9d816441.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "label": "plan.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1"}, {"id": "pl_plan_generate_plan_no", "label": "_generate_plan_no()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L64"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L64"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L64"}, {"id": "pl_plan_determine_plan_type", "label": "_determine_plan_type()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L86"}, {"id": "pl_plan_get_plan_type_label", "label": "_get_plan_type_label()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L91"}, {"id": "pl_plan_generate_notify_message", "label": "_generate_notify_message()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L100"}, {"id": "plplan", "label": "PlPlan", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L100"}, {"id": "pl_plan_list_plans", "label": "list_plans()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L121"}, {"id": "date", "label": "date", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L121"}, {"id": "int", "label": "int", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L121"}, {"id": "dbusercontext", "label": "DbUserContext", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L121"}, {"id": "planlistresponse", "label": "PlanListResponse", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L121"}, {"id": "pl_plan_count_plans_by_contract", "label": "count_plans_by_contract()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L220"}, {"id": "pl_plan_create_plan", "label": "create_plan()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L249"}, {"id": "plancreate", "label": "PlanCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L249"}, {"id": "planread", "label": "PlanRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L249"}, {"id": "pl_plan_create_plan_full", "label": "create_plan_full()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L328"}, {"id": "plancreatefull", "label": "PlanCreateFull", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L328"}, {"id": "planwithproducts", "label": "PlanWithProducts", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L328"}, {"id": "pl_plan_create_from_contract", "label": "create_from_contract()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L432"}, {"id": "createfromcontractrequest", "label": "CreateFromContractRequest", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L432"}, {"id": "pl_plan_get_plan", "label": "get_plan()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L541"}, {"id": "pl_plan_update_plan", "label": "update_plan()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L584"}, {"id": "planupdate", "label": "PlanUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L584"}, {"id": "pl_plan_patch_plan_product_certs", "label": "patch_plan_product_certs()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L693"}, {"id": "planproductcertsupdate", "label": "PlanProductCertsUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L693"}, {"id": "pl_plan_build_driver_url", "label": "_build_driver_url()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L723"}, {"id": "pl_plan_get_plan_arrange_info", "label": "get_plan_arrange_info()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L729"}, {"id": "planarrangeinforead", "label": "PlanArrangeInfoRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L729"}, {"id": "pl_plan_cancel_plan", "label": "cancel_plan()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L843"}, {"id": "pl_plan_archive_plan", "label": "archive_plan()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L901"}, {"id": "planarchivebody", "label": "PlanArchiveBody", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L901"}, {"id": "pl_plan_delete_plan", "label": "delete_plan()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L962"}, {"id": "pl_plan_rationale_65", "label": "\u751f\u6210\u8ba1\u5212\u7f16\u53f7 SXDDHYYYYMMDD######", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L65"}, {"id": "pl_plan_rationale_333", "label": "\u521b\u5efa\u8fd0\u8f93\u8ba1\u5212\uff08\u5b8c\u6574\u8868\u5355\uff1a\u5408\u540c\u4ea7\u54c1 + \u53ef\u9009\u9884\u9009\u8f66\u8f86\uff0c\u4e0d\u81ea\u52a8\u5b89\u6392\u8fd0\u8f93\uff09", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L333"}, {"id": "pl_plan_rationale_699", "label": "\u66f4\u65b0\u8ba1\u5212\u5371\u5316\u54c1\u4ea7\u54c1\u8d2d\u4e70\u8bc1/\u8fd0\u8f93\u8bc1\uff08\u4e0d\u89e6\u53d1\u5b89\u6392\u8fd0\u8f93\uff09", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L699"}, {"id": "pl_plan_rationale_734", "label": "\u83b7\u53d6\u8ba1\u5212\u5df2\u5b89\u6392\u8fd0\u8f93\u540e\u7684\u53f8\u673a\u94fe\u63a5\u4e0e\u5730\u78c5\u51fa\u5165\u5e93\u5173\u8054\uff08\u4f9b\u67e5\u770b\u5f39\u7a97\u590d\u5236\u7b80\u8ff0/\u4e8c\u7ef4\u7801\uff09\u3002", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L734"}, {"id": "pl_plan_rationale_848", "label": "\u4f5c\u5e9f\u8fd0\u8f93\u8ba1\u5212\uff1a\u53d6\u6d88\u8ddf\u8fdb\u72b6\u6001\u3001\u4f5c\u5e9f\u5173\u8054\u5730\u78c5\u51fa\u5165\u5e93\u5355\u3001\u53d6\u6d88\u8fd0\u8f93\u5355\u3002", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L848"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L2", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "fastapi", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L5", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "sqlalchemy", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L6", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L7", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_core_config", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L9", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_core_database", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L10", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_core_db_auth", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L11", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_core_tenant_context", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L12", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_core_utils", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L13", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_models_crm_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L14", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_models_db_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L15", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_models_pl_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L16", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_schemas_pl", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L27", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_schemas_pl_plan", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L28", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_schemas_pl_transport", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L41", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_services_pl_dibang_bridge_service", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L42", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_services_pl_inventory_link_read", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L43", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_services_pl_site_link_read", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L44", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_services_pl_transport_site_service", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L45", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "app_services_pl_plan_service", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L46", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "pl_plan_generate_plan_no", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L64", "weight": 1.0}, {"source": "pl_plan_generate_plan_no", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L64", "weight": 1.0}, {"source": "pl_plan_generate_plan_no", "target": "str", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L64", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "pl_plan_determine_plan_type", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L86", "weight": 1.0}, {"source": "pl_plan_determine_plan_type", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L86", "weight": 1.0}, {"source": "pl_plan_determine_plan_type", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L86", "weight": 1.0}, {"source": "pl_plan_determine_plan_type", "target": "str", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L86", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "pl_plan_get_plan_type_label", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L91", "weight": 1.0}, {"source": "pl_plan_get_plan_type_label", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L91", "weight": 1.0}, {"source": "pl_plan_get_plan_type_label", "target": "str", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L91", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "pl_plan_generate_notify_message", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L100", "weight": 1.0}, {"source": "pl_plan_generate_notify_message", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L100", "weight": 1.0}, {"source": "pl_plan_generate_notify_message", "target": "str", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L100", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "pl_plan_list_plans", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L121", "weight": 1.0}, {"source": "pl_plan_list_plans", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L121", "weight": 1.0}, {"source": "pl_plan_list_plans", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L121", "weight": 1.0}, {"source": "pl_plan_list_plans", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L121", "weight": 1.0}, {"source": "pl_plan_list_plans", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L121", "weight": 1.0}, {"source": "pl_plan_list_plans", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L121", "weight": 1.0}, {"source": "pl_plan_list_plans", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L121", "weight": 1.0}, {"source": "pl_plan_list_plans", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L121", "weight": 1.0}, {"source": "pl_plan_list_plans", "target": "date", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L121", "weight": 1.0}, {"source": "pl_plan_list_plans", "target": "date", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L121", "weight": 1.0}, {"source": "pl_plan_list_plans", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L121", "weight": 1.0}, {"source": "pl_plan_list_plans", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L121", "weight": 1.0}, {"source": "pl_plan_list_plans", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L121", "weight": 1.0}, {"source": "pl_plan_list_plans", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L121", "weight": 1.0}, {"source": "pl_plan_list_plans", "target": "planlistresponse", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L121", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "pl_plan_count_plans_by_contract", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L220", "weight": 1.0}, {"source": "pl_plan_count_plans_by_contract", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L220", "weight": 1.0}, {"source": "pl_plan_count_plans_by_contract", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L220", "weight": 1.0}, {"source": "pl_plan_count_plans_by_contract", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L220", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "pl_plan_create_plan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L249", "weight": 1.0}, {"source": "pl_plan_create_plan", "target": "plancreate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L249", "weight": 1.0}, {"source": "pl_plan_create_plan", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L249", "weight": 1.0}, {"source": "pl_plan_create_plan", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L249", "weight": 1.0}, {"source": "pl_plan_create_plan", "target": "planread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L249", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "pl_plan_create_plan_full", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L328", "weight": 1.0}, {"source": "pl_plan_create_plan_full", "target": "plancreatefull", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L328", "weight": 1.0}, {"source": "pl_plan_create_plan_full", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L328", "weight": 1.0}, {"source": "pl_plan_create_plan_full", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L328", "weight": 1.0}, {"source": "pl_plan_create_plan_full", "target": "planwithproducts", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L328", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "pl_plan_create_from_contract", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L432", "weight": 1.0}, {"source": "pl_plan_create_from_contract", "target": "createfromcontractrequest", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L432", "weight": 1.0}, {"source": "pl_plan_create_from_contract", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L432", "weight": 1.0}, {"source": "pl_plan_create_from_contract", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L432", "weight": 1.0}, {"source": "pl_plan_create_from_contract", "target": "planread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L432", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "pl_plan_get_plan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L541", "weight": 1.0}, {"source": "pl_plan_get_plan", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L541", "weight": 1.0}, {"source": "pl_plan_get_plan", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L541", "weight": 1.0}, {"source": "pl_plan_get_plan", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L541", "weight": 1.0}, {"source": "pl_plan_get_plan", "target": "planwithproducts", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L541", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "pl_plan_update_plan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L584", "weight": 1.0}, {"source": "pl_plan_update_plan", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L584", "weight": 1.0}, {"source": "pl_plan_update_plan", "target": "planupdate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L584", "weight": 1.0}, {"source": "pl_plan_update_plan", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L584", "weight": 1.0}, {"source": "pl_plan_update_plan", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L584", "weight": 1.0}, {"source": "pl_plan_update_plan", "target": "planread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L584", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "pl_plan_patch_plan_product_certs", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L693", "weight": 1.0}, {"source": "pl_plan_patch_plan_product_certs", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L693", "weight": 1.0}, {"source": "pl_plan_patch_plan_product_certs", "target": "planproductcertsupdate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L693", "weight": 1.0}, {"source": "pl_plan_patch_plan_product_certs", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L693", "weight": 1.0}, {"source": "pl_plan_patch_plan_product_certs", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L693", "weight": 1.0}, {"source": "pl_plan_patch_plan_product_certs", "target": "planwithproducts", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L693", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "pl_plan_build_driver_url", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L723", "weight": 1.0}, {"source": "pl_plan_build_driver_url", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L723", "weight": 1.0}, {"source": "pl_plan_build_driver_url", "target": "str", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L723", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "pl_plan_get_plan_arrange_info", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L729", "weight": 1.0}, {"source": "pl_plan_get_plan_arrange_info", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L729", "weight": 1.0}, {"source": "pl_plan_get_plan_arrange_info", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L729", "weight": 1.0}, {"source": "pl_plan_get_plan_arrange_info", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L729", "weight": 1.0}, {"source": "pl_plan_get_plan_arrange_info", "target": "planarrangeinforead", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L729", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "pl_plan_cancel_plan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L843", "weight": 1.0}, {"source": "pl_plan_cancel_plan", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L843", "weight": 1.0}, {"source": "pl_plan_cancel_plan", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L843", "weight": 1.0}, {"source": "pl_plan_cancel_plan", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L843", "weight": 1.0}, {"source": "pl_plan_cancel_plan", "target": "planread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L843", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "pl_plan_archive_plan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L901", "weight": 1.0}, {"source": "pl_plan_archive_plan", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L901", "weight": 1.0}, {"source": "pl_plan_archive_plan", "target": "planarchivebody", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L901", "weight": 1.0}, {"source": "pl_plan_archive_plan", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L901", "weight": 1.0}, {"source": "pl_plan_archive_plan", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L901", "weight": 1.0}, {"source": "pl_plan_archive_plan", "target": "planwithproducts", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L901", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "pl_plan_delete_plan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L962", "weight": 1.0}, {"source": "pl_plan_delete_plan", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L962", "weight": 1.0}, {"source": "pl_plan_delete_plan", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L962", "weight": 1.0}, {"source": "pl_plan_delete_plan", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L962", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "target": "pl_plan_get_plan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L993", "weight": 1.0}, {"source": "pl_plan_get_plan", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L993", "weight": 1.0}, {"source": "pl_plan_get_plan", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L993", "weight": 1.0}, {"source": "pl_plan_get_plan", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L993", "weight": 1.0}, {"source": "pl_plan_get_plan", "target": "plplan", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L993", "weight": 1.0}, {"source": "pl_plan_list_plans", "target": "planlistresponse", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L216", "weight": 1.0}, {"source": "pl_plan_create_plan", "target": "pl_plan_generate_plan_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L257", "weight": 1.0}, {"source": "pl_plan_create_plan", "target": "pl_plan_determine_plan_type", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L262", "weight": 1.0}, {"source": "pl_plan_create_plan", "target": "plplan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L264", "weight": 1.0}, {"source": "pl_plan_create_plan_full", "target": "pl_plan_generate_plan_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L336", "weight": 1.0}, {"source": "pl_plan_create_plan_full", "target": "pl_plan_determine_plan_type", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L338", "weight": 1.0}, {"source": "pl_plan_create_plan_full", "target": "plplan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L341", "weight": 1.0}, {"source": "pl_plan_create_from_contract", "target": "pl_plan_generate_plan_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L452", "weight": 1.0}, {"source": "pl_plan_create_from_contract", "target": "pl_plan_determine_plan_type", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L455", "weight": 1.0}, {"source": "pl_plan_create_from_contract", "target": "plplan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L457", "weight": 1.0}, {"source": "pl_plan_get_plan_arrange_info", "target": "planarrangeinforead", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L738", "weight": 1.0}, {"source": "pl_plan_get_plan_arrange_info", "target": "pl_plan_build_driver_url", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L755", "weight": 1.0}, {"source": "pl_plan_archive_plan", "target": "pl_plan_get_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L923", "weight": 1.0}, {"source": "pl_plan_rationale_65", "target": "pl_plan_generate_plan_no", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L65", "weight": 1.0}, {"source": "pl_plan_rationale_333", "target": "pl_plan_create_plan_full", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L333", "weight": 1.0}, {"source": "pl_plan_rationale_699", "target": "pl_plan_patch_plan_product_certs", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L699", "weight": 1.0}, {"source": "pl_plan_rationale_734", "target": "pl_plan_get_plan_arrange_info", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L734", "weight": 1.0}, {"source": "pl_plan_rationale_848", "target": "pl_plan_cancel_plan", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L848", "weight": 1.0}], "raw_calls": [{"caller_nid": "pl_plan_generate_plan_no", "callee": "today", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L66"}, {"caller_nid": "pl_plan_generate_plan_no", "callee": "strftime", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L67"}, {"caller_nid": "pl_plan_generate_plan_no", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L71"}, {"caller_nid": "pl_plan_generate_plan_no", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L71"}, {"caller_nid": "pl_plan_generate_plan_no", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L71"}, {"caller_nid": "pl_plan_generate_plan_no", "callee": "like", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L72"}, {"caller_nid": "pl_plan_generate_plan_no", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L73"}, {"caller_nid": "pl_plan_determine_plan_type", "callee": "determine_plan_type", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L88"}, {"caller_nid": "pl_plan_get_plan_type_label", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L97"}, {"caller_nid": "pl_plan_generate_notify_message", "callee": "join", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L102"}, {"caller_nid": "pl_plan_list_plans", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L136"}, {"caller_nid": "pl_plan_list_plans", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L136"}, {"caller_nid": "pl_plan_list_plans", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L137"}, {"caller_nid": "pl_plan_list_plans", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L144"}, {"caller_nid": "pl_plan_list_plans", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L145"}, {"caller_nid": "pl_plan_list_plans", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L146"}, {"caller_nid": "pl_plan_list_plans", "callee": "lower", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L146"}, {"caller_nid": "pl_plan_list_plans", "callee": "lower", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L146"}, {"caller_nid": "pl_plan_list_plans", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L151"}, {"caller_nid": "pl_plan_list_plans", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L166"}, {"caller_nid": "pl_plan_list_plans", "callee": "lower", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L166"}, {"caller_nid": "pl_plan_list_plans", "callee": "lower", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L166"}, {"caller_nid": "pl_plan_list_plans", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L175"}, {"caller_nid": "pl_plan_list_plans", "callee": "limit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L179"}, {"caller_nid": "pl_plan_list_plans", "callee": "offset", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L179"}, {"caller_nid": "pl_plan_list_plans", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L179"}, {"caller_nid": "pl_plan_list_plans", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L179"}, {"caller_nid": "pl_plan_list_plans", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L185"}, {"caller_nid": "pl_plan_list_plans", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L185"}, {"caller_nid": "pl_plan_list_plans", "callee": "in_", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L187"}, {"caller_nid": "pl_plan_list_plans", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L194"}, {"caller_nid": "pl_plan_list_plans", "callee": "setdefault", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L194"}, {"caller_nid": "pl_plan_list_plans", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L199"}, {"caller_nid": "pl_plan_list_plans", "callee": "resolve_hazard_flags_from_crm", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L200"}, {"caller_nid": "pl_plan_list_plans", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L207"}, {"caller_nid": "pl_plan_list_plans", "callee": "model_copy", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L209"}, {"caller_nid": "pl_plan_list_plans", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L210"}, {"caller_nid": "pl_plan_list_plans", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L212"}, {"caller_nid": "pl_plan_list_plans", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L214"}, {"caller_nid": "pl_plan_count_plans_by_contract", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L225"}, {"caller_nid": "pl_plan_count_plans_by_contract", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L225"}, {"caller_nid": "pl_plan_count_plans_by_contract", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L226"}, {"caller_nid": "pl_plan_count_plans_by_contract", "callee": "split", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L226"}, {"caller_nid": "pl_plan_count_plans_by_contract", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L226"}, {"caller_nid": "pl_plan_count_plans_by_contract", "callee": "group_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L231"}, {"caller_nid": "pl_plan_count_plans_by_contract", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L231"}, {"caller_nid": "pl_plan_count_plans_by_contract", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L231"}, {"caller_nid": "pl_plan_count_plans_by_contract", "callee": "in_", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L235"}, {"caller_nid": "pl_plan_create_plan", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L254"}, {"caller_nid": "pl_plan_create_plan", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L254"}, {"caller_nid": "pl_plan_create_plan", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L265"}, {"caller_nid": "pl_plan_create_plan", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L304"}, {"caller_nid": "pl_plan_create_plan", "callee": "build_plan_product", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L309"}, {"caller_nid": "pl_plan_create_plan", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L318"}, {"caller_nid": "pl_plan_create_plan", "callee": "calc_plan_total_amount", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L320"}, {"caller_nid": "pl_plan_create_plan", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L322"}, {"caller_nid": "pl_plan_create_plan", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L323"}, {"caller_nid": "pl_plan_create_plan_full", "callee": "validate_create_full", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L334"}, {"caller_nid": "pl_plan_create_plan_full", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L335"}, {"caller_nid": "pl_plan_create_plan_full", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L335"}, {"caller_nid": "pl_plan_create_plan_full", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L342"}, {"caller_nid": "pl_plan_create_plan_full", "callee": "calc_plan_total_amount", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L375"}, {"caller_nid": "pl_plan_create_plan_full", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L382"}, {"caller_nid": "pl_plan_create_plan_full", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L383"}, {"caller_nid": "pl_plan_create_plan_full", "callee": "resolve_hazard_flags_from_crm", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L387"}, {"caller_nid": "pl_plan_create_plan_full", "callee": "model_copy", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L394"}, {"caller_nid": "pl_plan_create_plan_full", "callee": "build_plan_product", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L395"}, {"caller_nid": "pl_plan_create_plan_full", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L404"}, {"caller_nid": "pl_plan_create_plan_full", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L405"}, {"caller_nid": "pl_plan_create_plan_full", "callee": "apply_vehicle_prefill_to_plan", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L408"}, {"caller_nid": "pl_plan_create_plan_full", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L418"}, {"caller_nid": "pl_plan_create_plan_full", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L419"}, {"caller_nid": "pl_plan_create_plan_full", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L421"}, {"caller_nid": "pl_plan_create_from_contract", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L440"}, {"caller_nid": "pl_plan_create_from_contract", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L440"}, {"caller_nid": "pl_plan_create_from_contract", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L444"}, {"caller_nid": "pl_plan_create_from_contract", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L444"}, {"caller_nid": "pl_plan_create_from_contract", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L449"}, {"caller_nid": "pl_plan_create_from_contract", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L458"}, {"caller_nid": "pl_plan_create_from_contract", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L471"}, {"caller_nid": "pl_plan_create_from_contract", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L473"}, {"caller_nid": "pl_plan_create_from_contract", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L475"}, {"caller_nid": "pl_plan_create_from_contract", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L490"}, {"caller_nid": "pl_plan_create_from_contract", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L494"}, {"caller_nid": "pl_plan_create_from_contract", "callee": "resolve_hazard_flags_from_crm", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L504"}, {"caller_nid": "pl_plan_create_from_contract", "callee": "PlPlanProduct", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L511"}, {"caller_nid": "pl_plan_create_from_contract", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L512"}, {"caller_nid": "pl_plan_create_from_contract", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L528"}, {"caller_nid": "pl_plan_create_from_contract", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L530"}, {"caller_nid": "pl_plan_create_from_contract", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L531"}, {"caller_nid": "pl_plan_get_plan", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L546"}, {"caller_nid": "pl_plan_get_plan", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L546"}, {"caller_nid": "pl_plan_get_plan", "callee": "_get_plan", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L547"}, {"caller_nid": "pl_plan_get_plan", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L550"}, {"caller_nid": "pl_plan_get_plan", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L550"}, {"caller_nid": "pl_plan_get_plan", "callee": "resolve_hazard_flags_from_crm", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L561"}, {"caller_nid": "pl_plan_get_plan", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L568"}, {"caller_nid": "pl_plan_get_plan", "callee": "model_copy", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L570"}, {"caller_nid": "pl_plan_get_plan", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L571"}, {"caller_nid": "pl_plan_get_plan", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L573"}, {"caller_nid": "pl_plan_update_plan", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L590"}, {"caller_nid": "pl_plan_update_plan", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L590"}, {"caller_nid": "pl_plan_update_plan", "callee": "_get_plan", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L591"}, {"caller_nid": "pl_plan_update_plan", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L594"}, {"caller_nid": "pl_plan_update_plan", "callee": "items", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L595"}, {"caller_nid": "pl_plan_update_plan", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L603"}, {"caller_nid": "pl_plan_update_plan", "callee": "update", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L615"}, {"caller_nid": "pl_plan_update_plan", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L615"}, {"caller_nid": "pl_plan_update_plan", "callee": "resolve_hazard_flags_from_crm", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L622"}, {"caller_nid": "pl_plan_update_plan", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L632"}, {"caller_nid": "pl_plan_update_plan", "callee": "model_copy", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L635"}, {"caller_nid": "pl_plan_update_plan", "callee": "build_plan_product", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L643"}, {"caller_nid": "pl_plan_update_plan", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L652"}, {"caller_nid": "pl_plan_update_plan", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L653"}, {"caller_nid": "pl_plan_update_plan", "callee": "calc_plan_total_amount", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L655"}, {"caller_nid": "pl_plan_update_plan", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L658"}, {"caller_nid": "pl_plan_update_plan", "callee": "sync_transport_prefill_for_plan", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L669"}, {"caller_nid": "pl_plan_update_plan", "callee": "clear_draft_transport_for_plan", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L679"}, {"caller_nid": "pl_plan_update_plan", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L687"}, {"caller_nid": "pl_plan_update_plan", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L688"}, {"caller_nid": "pl_plan_patch_plan_product_certs", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L700"}, {"caller_nid": "pl_plan_patch_plan_product_certs", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L700"}, {"caller_nid": "pl_plan_patch_plan_product_certs", "callee": "update_plan_product_certs", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L701"}, {"caller_nid": "pl_plan_patch_plan_product_certs", "callee": "_get_plan", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L708"}, {"caller_nid": "pl_plan_patch_plan_product_certs", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L710"}, {"caller_nid": "pl_plan_patch_plan_product_certs", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L710"}, {"caller_nid": "pl_plan_patch_plan_product_certs", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L718"}, {"caller_nid": "pl_plan_build_driver_url", "callee": "rstrip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L724"}, {"caller_nid": "pl_plan_get_plan_arrange_info", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L735"}, {"caller_nid": "pl_plan_get_plan_arrange_info", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L735"}, {"caller_nid": "pl_plan_get_plan_arrange_info", "callee": "_get_plan", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L736"}, {"caller_nid": "pl_plan_get_plan_arrange_info", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L743"}, {"caller_nid": "pl_plan_get_plan_arrange_info", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L743"}, {"caller_nid": "pl_plan_get_plan_arrange_info", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L754"}, {"caller_nid": "pl_plan_get_plan_arrange_info", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L758"}, {"caller_nid": "pl_plan_get_plan_arrange_info", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L758"}, {"caller_nid": "pl_plan_get_plan_arrange_info", "callee": "asc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L765"}, {"caller_nid": "pl_plan_get_plan_arrange_info", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L771"}, {"caller_nid": "pl_plan_get_plan_arrange_info", "callee": "build_transport_site_link_read_from_row", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L780"}, {"caller_nid": "pl_plan_get_plan_arrange_info", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L782"}, {"caller_nid": "pl_plan_get_plan_arrange_info", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L788"}, {"caller_nid": "pl_plan_get_plan_arrange_info", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L801"}, {"caller_nid": "pl_plan_get_plan_arrange_info", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L801"}, {"caller_nid": "pl_plan_get_plan_arrange_info", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L809"}, {"caller_nid": "pl_plan_get_plan_arrange_info", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L809"}, {"caller_nid": "pl_plan_get_plan_arrange_info", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L817"}, {"caller_nid": "pl_plan_get_plan_arrange_info", "callee": "build_transport_inventory_link_read", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L818"}, {"caller_nid": "pl_plan_cancel_plan", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L849"}, {"caller_nid": "pl_plan_cancel_plan", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L849"}, {"caller_nid": "pl_plan_cancel_plan", "callee": "_get_plan", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L850"}, {"caller_nid": "pl_plan_cancel_plan", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L853"}, {"caller_nid": "pl_plan_cancel_plan", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L856"}, {"caller_nid": "pl_plan_cancel_plan", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L860"}, {"caller_nid": "pl_plan_cancel_plan", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L860"}, {"caller_nid": "pl_plan_cancel_plan", "callee": "revoke_regeneratable_dibang_for_transport", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L870"}, {"caller_nid": "pl_plan_cancel_plan", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L877"}, {"caller_nid": "pl_plan_cancel_plan", "callee": "revoke_site_links_for_transport", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L878"}, {"caller_nid": "pl_plan_cancel_plan", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L890"}, {"caller_nid": "pl_plan_cancel_plan", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L891"}, {"caller_nid": "pl_plan_archive_plan", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L907"}, {"caller_nid": "pl_plan_archive_plan", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L907"}, {"caller_nid": "pl_plan_archive_plan", "callee": "_get_plan", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L908"}, {"caller_nid": "pl_plan_archive_plan", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L911"}, {"caller_nid": "pl_plan_archive_plan", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L917"}, {"caller_nid": "pl_plan_archive_plan", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L922"}, {"caller_nid": "pl_plan_archive_plan", "callee": "apply_archive_product_quantities", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L925"}, {"caller_nid": "pl_plan_archive_plan", "callee": "apply_archive_freight", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L929"}, {"caller_nid": "pl_plan_archive_plan", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L934"}, {"caller_nid": "pl_plan_archive_plan", "callee": "record_plan_change", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L942"}, {"caller_nid": "pl_plan_archive_plan", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L952"}, {"caller_nid": "pl_plan_delete_plan", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L967"}, {"caller_nid": "pl_plan_delete_plan", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L967"}, {"caller_nid": "pl_plan_delete_plan", "callee": "_get_plan", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L968"}, {"caller_nid": "pl_plan_delete_plan", "callee": "update", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L973"}, {"caller_nid": "pl_plan_delete_plan", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L973"}, {"caller_nid": "pl_plan_delete_plan", "callee": "update", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L979"}, {"caller_nid": "pl_plan_delete_plan", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L979"}, {"caller_nid": "pl_plan_delete_plan", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L985"}, {"caller_nid": "pl_plan_get_plan", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L995"}, {"caller_nid": "pl_plan_get_plan", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L995"}, {"caller_nid": "pl_plan_get_plan", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L1004"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/87b61d6f7338ac4d854bc55fd03d395d05519bd5aece94ed29c098a2004ac5bc.json b/backend/graphify-out/cache/ast/87b61d6f7338ac4d854bc55fd03d395d05519bd5aece94ed29c098a2004ac5bc.json new file mode 100644 index 000000000..56b020b0d --- /dev/null +++ b/backend/graphify-out/cache/ast/87b61d6f7338ac4d854bc55fd03d395d05519bd5aece94ed29c098a2004ac5bc.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "label": "plan.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L1"}, {"id": "pl_plan_planproductbase", "label": "PlanProductBase", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L13"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "pl_plan_planproductcreate", "label": "PlanProductCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L42"}, {"id": "pl_plan_planproductupdate", "label": "PlanProductUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L46"}, {"id": "pl_plan_planproductread", "label": "PlanProductRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L67"}, {"id": "pl_plan_planbase", "label": "PlanBase", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L81"}, {"id": "pl_plan_plancreate", "label": "PlanCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L117"}, {"id": "pl_plan_plantransportcreateblock", "label": "PlanTransportCreateBlock", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L123"}, {"id": "pl_plan_planupdate", "label": "PlanUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L137"}, {"id": "pl_plan_planread", "label": "PlanRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L173"}, {"id": "pl_plan_planwithproducts", "label": "PlanWithProducts", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L196"}, {"id": "pl_plan_createfromcontractrequest", "label": "CreateFromContractRequest", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L205"}, {"id": "pl_plan_plancreatefull", "label": "PlanCreateFull", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L213"}, {"id": "pl_plan_planlistquery", "label": "PlanListQuery", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L224"}, {"id": "pl_plan_planproductcertitem", "label": "PlanProductCertItem", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L239"}, {"id": "pl_plan_planproductcertsupdate", "label": "PlanProductCertsUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L246"}, {"id": "pl_plan_planarchiveproductitem", "label": "PlanArchiveProductItem", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L251"}, {"id": "pl_plan_planarchivefreightblock", "label": "PlanArchiveFreightBlock", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L257"}, {"id": "pl_plan_planarchivebody", "label": "PlanArchiveBody", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L267"}, {"id": "pl_plan_planlistresponse", "label": "PlanListResponse", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L273"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L2", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "decimal", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "pydantic", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L6", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "pl_plan_planproductbase", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L13", "weight": 1.0}, {"source": "pl_plan_planproductbase", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L13", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "pl_plan_planproductcreate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L42", "weight": 1.0}, {"source": "pl_plan_planproductcreate", "target": "pl_plan_planproductbase", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L42", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "pl_plan_planproductupdate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L46", "weight": 1.0}, {"source": "pl_plan_planproductupdate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L46", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "pl_plan_planproductread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L67", "weight": 1.0}, {"source": "pl_plan_planproductread", "target": "pl_plan_planproductbase", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L67", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "pl_plan_planbase", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L81", "weight": 1.0}, {"source": "pl_plan_planbase", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L81", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "pl_plan_plancreate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L117", "weight": 1.0}, {"source": "pl_plan_plancreate", "target": "pl_plan_planbase", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L117", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "pl_plan_plantransportcreateblock", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L123", "weight": 1.0}, {"source": "pl_plan_plantransportcreateblock", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L123", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "pl_plan_planupdate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L137", "weight": 1.0}, {"source": "pl_plan_planupdate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L137", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "pl_plan_planread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L173", "weight": 1.0}, {"source": "pl_plan_planread", "target": "pl_plan_planbase", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L173", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "pl_plan_planwithproducts", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L196", "weight": 1.0}, {"source": "pl_plan_planwithproducts", "target": "pl_plan_planread", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L196", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "pl_plan_createfromcontractrequest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L205", "weight": 1.0}, {"source": "pl_plan_createfromcontractrequest", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L205", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "pl_plan_plancreatefull", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L213", "weight": 1.0}, {"source": "pl_plan_plancreatefull", "target": "pl_plan_plancreate", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L213", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "pl_plan_planlistquery", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L224", "weight": 1.0}, {"source": "pl_plan_planlistquery", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L224", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "pl_plan_planproductcertitem", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L239", "weight": 1.0}, {"source": "pl_plan_planproductcertitem", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L239", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "pl_plan_planproductcertsupdate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L246", "weight": 1.0}, {"source": "pl_plan_planproductcertsupdate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L246", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "pl_plan_planarchiveproductitem", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L251", "weight": 1.0}, {"source": "pl_plan_planarchiveproductitem", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L251", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "pl_plan_planarchivefreightblock", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L257", "weight": 1.0}, {"source": "pl_plan_planarchivefreightblock", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L257", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "pl_plan_planarchivebody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L267", "weight": 1.0}, {"source": "pl_plan_planarchivebody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L267", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "target": "pl_plan_planlistresponse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L273", "weight": 1.0}, {"source": "pl_plan_planlistresponse", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L273", "weight": 1.0}], "raw_calls": []} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/8adeadf294a10f892d1e6e87fb729ee5b661eba56909364a55cac1fb23a903f8.json b/backend/graphify-out/cache/ast/8adeadf294a10f892d1e6e87fb729ee5b661eba56909364a55cac1fb23a903f8.json new file mode 100644 index 000000000..c74e824f8 --- /dev/null +++ b/backend/graphify-out/cache/ast/8adeadf294a10f892d1e6e87fb729ee5b661eba56909364a55cac1fb23a903f8.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "label": "pl_plan_service.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1"}, {"id": "services_pl_plan_service_determine_plan_type", "label": "determine_plan_type()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L32"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L32"}, {"id": "services_pl_plan_service_is_ton_product_unit", "label": "is_ton_product_unit()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L40"}, {"id": "bool", "label": "bool", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L40"}, {"id": "services_pl_plan_service_product_quantity", "label": "_product_quantity()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L47"}, {"id": "planproductcreate", "label": "PlanProductCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L47"}, {"id": "decimal", "label": "Decimal", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L47"}, {"id": "services_pl_plan_service_sum_product_quantities", "label": "sum_product_quantities()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L57"}, {"id": "services_pl_plan_service_estimate_qty_fields", "label": "_estimate_qty_fields()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L61"}, {"id": "services_pl_plan_service_build_plan_product", "label": "build_plan_product()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L72"}, {"id": "int", "label": "int", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L72"}, {"id": "plplanproduct", "label": "PlPlanProduct", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L72"}, {"id": "services_pl_plan_service_resolve_driver", "label": "_resolve_driver()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L118"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L118"}, {"id": "services_pl_plan_service_calc_freight_amount", "label": "_calc_freight_amount()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L163"}, {"id": "services_pl_plan_service_validate_toxic_products", "label": "_validate_toxic_products()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L187"}, {"id": "services_pl_plan_service_resolve_hazard_flags_from_crm", "label": "resolve_hazard_flags_from_crm()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L198"}, {"id": "services_pl_plan_service_update_plan_product_certs", "label": "update_plan_product_certs()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L225"}, {"id": "services_pl_plan_service_generate_transport_no", "label": "_generate_transport_no()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L275"}, {"id": "services_pl_plan_service_resolve_transport_context", "label": "_resolve_transport_context()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L293"}, {"id": "plplan", "label": "PlPlan", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L293"}, {"id": "plantransportcreateblock", "label": "PlanTransportCreateBlock", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L293"}, {"id": "plvehicle", "label": "PlVehicle", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L293"}, {"id": "services_pl_plan_service_apply_payload_to_transport_row", "label": "_apply_payload_to_transport_row()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L353"}, {"id": "pltransport", "label": "PlTransport", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L353"}, {"id": "services_pl_plan_service_upsert_draft_transport_for_plan", "label": "upsert_draft_transport_for_plan()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L389"}, {"id": "services_pl_plan_service_clear_draft_transport_for_plan", "label": "clear_draft_transport_for_plan()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L496"}, {"id": "services_pl_plan_service_sync_transport_prefill_for_plan", "label": "sync_transport_prefill_for_plan()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L535"}, {"id": "services_pl_plan_service_apply_vehicle_prefill_to_plan", "label": "apply_vehicle_prefill_to_plan()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L557"}, {"id": "services_pl_plan_service_create_transport_for_plan", "label": "create_transport_for_plan()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L579"}, {"id": "services_pl_plan_service_validate_create_full", "label": "validate_create_full()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L686"}, {"id": "plancreatefull", "label": "PlanCreateFull", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L686"}, {"id": "services_pl_plan_service_calc_plan_total_amount", "label": "calc_plan_total_amount()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L708"}, {"id": "services_pl_plan_service_transport_has_locked_freight_settlement", "label": "transport_has_locked_freight_settlement()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L719"}, {"id": "services_pl_plan_service_apply_archive_product_quantities", "label": "apply_archive_product_quantities()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L743"}, {"id": "planarchiveproductitem", "label": "PlanArchiveProductItem", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L743"}, {"id": "services_pl_plan_service_apply_archive_freight", "label": "apply_archive_freight()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L778"}, {"id": "planarchivefreightblock", "label": "PlanArchiveFreightBlock", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L778"}, {"id": "services_pl_plan_service_record_plan_change", "label": "record_plan_change()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L820"}, {"id": "services_pl_plan_service_rationale_399", "label": "\u5199\u5165/\u66f4\u65b0\u8349\u7a3f\u8fd0\u8f93\u5355\uff08pl_transport + pl_plan_transport\uff09\uff0c\u8ba1\u5212\u4fdd\u6301\u5f85\u5b89\u6392\u3002", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L399"}, {"id": "services_pl_plan_service_rationale_545", "label": "\u540c\u6b65\u8fd0\u8f93\u9884\u9009\u5230\u8349\u7a3f\u8fd0\u8f93\u5b50\u8868\uff08pl_transport\uff09\u3002", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L545"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L2", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "decimal", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "fastapi", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L6", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L7", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "app_core_utils", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L9", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "app_models_pl_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L10", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "app_schemas_pl_plan", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L23", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "services_pl_plan_service_determine_plan_type", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L32", "weight": 1.0}, {"source": "services_pl_plan_service_determine_plan_type", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L32", "weight": 1.0}, {"source": "services_pl_plan_service_determine_plan_type", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L32", "weight": 1.0}, {"source": "services_pl_plan_service_determine_plan_type", "target": "str", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L32", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "services_pl_plan_service_is_ton_product_unit", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L40", "weight": 1.0}, {"source": "services_pl_plan_service_is_ton_product_unit", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L40", "weight": 1.0}, {"source": "services_pl_plan_service_is_ton_product_unit", "target": "bool", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L40", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "services_pl_plan_service_product_quantity", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L47", "weight": 1.0}, {"source": "services_pl_plan_service_product_quantity", "target": "planproductcreate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L47", "weight": 1.0}, {"source": "services_pl_plan_service_product_quantity", "target": "decimal", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L47", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "services_pl_plan_service_sum_product_quantities", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L57", "weight": 1.0}, {"source": "services_pl_plan_service_sum_product_quantities", "target": "planproductcreate", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L57", "weight": 1.0}, {"source": "services_pl_plan_service_sum_product_quantities", "target": "decimal", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L57", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "services_pl_plan_service_estimate_qty_fields", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L61", "weight": 1.0}, {"source": "services_pl_plan_service_estimate_qty_fields", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L61", "weight": 1.0}, {"source": "services_pl_plan_service_estimate_qty_fields", "target": "decimal", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L61", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "services_pl_plan_service_build_plan_product", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L72", "weight": 1.0}, {"source": "services_pl_plan_service_build_plan_product", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L72", "weight": 1.0}, {"source": "services_pl_plan_service_build_plan_product", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L72", "weight": 1.0}, {"source": "services_pl_plan_service_build_plan_product", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L72", "weight": 1.0}, {"source": "services_pl_plan_service_build_plan_product", "target": "planproductcreate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L72", "weight": 1.0}, {"source": "services_pl_plan_service_build_plan_product", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L72", "weight": 1.0}, {"source": "services_pl_plan_service_build_plan_product", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L72", "weight": 1.0}, {"source": "services_pl_plan_service_build_plan_product", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L72", "weight": 1.0}, {"source": "services_pl_plan_service_build_plan_product", "target": "plplanproduct", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L72", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "services_pl_plan_service_resolve_driver", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L118", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_driver", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L118", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_driver", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L118", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_driver", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L118", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_driver", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L118", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_driver", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L118", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_driver", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L118", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_driver", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L118", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "services_pl_plan_service_calc_freight_amount", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L163", "weight": 1.0}, {"source": "services_pl_plan_service_calc_freight_amount", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L163", "weight": 1.0}, {"source": "services_pl_plan_service_calc_freight_amount", "target": "plplanproduct", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L163", "weight": 1.0}, {"source": "services_pl_plan_service_calc_freight_amount", "target": "decimal", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L163", "weight": 1.0}, {"source": "services_pl_plan_service_calc_freight_amount", "target": "decimal", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L163", "weight": 1.0}, {"source": "services_pl_plan_service_calc_freight_amount", "target": "decimal", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L163", "weight": 1.0}, {"source": "services_pl_plan_service_calc_freight_amount", "target": "decimal", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L163", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "services_pl_plan_service_validate_toxic_products", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L187", "weight": 1.0}, {"source": "services_pl_plan_service_validate_toxic_products", "target": "plplanproduct", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L187", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "services_pl_plan_service_resolve_hazard_flags_from_crm", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L198", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_hazard_flags_from_crm", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L198", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_hazard_flags_from_crm", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L198", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_hazard_flags_from_crm", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L198", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_hazard_flags_from_crm", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L198", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_hazard_flags_from_crm", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L198", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_hazard_flags_from_crm", "target": "int", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L198", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_hazard_flags_from_crm", "target": "int", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L198", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "services_pl_plan_service_update_plan_product_certs", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L225", "weight": 1.0}, {"source": "services_pl_plan_service_update_plan_product_certs", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L225", "weight": 1.0}, {"source": "services_pl_plan_service_update_plan_product_certs", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L225", "weight": 1.0}, {"source": "services_pl_plan_service_update_plan_product_certs", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L225", "weight": 1.0}, {"source": "services_pl_plan_service_update_plan_product_certs", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L225", "weight": 1.0}, {"source": "services_pl_plan_service_update_plan_product_certs", "target": "plplanproduct", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L225", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "services_pl_plan_service_generate_transport_no", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L275", "weight": 1.0}, {"source": "services_pl_plan_service_generate_transport_no", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L275", "weight": 1.0}, {"source": "services_pl_plan_service_generate_transport_no", "target": "str", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L275", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "services_pl_plan_service_resolve_transport_context", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L293", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_transport_context", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L293", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_transport_context", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L293", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_transport_context", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L293", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_transport_context", "target": "plantransportcreateblock", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L293", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_transport_context", "target": "plplanproduct", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L293", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_transport_context", "target": "plvehicle", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L293", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_transport_context", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L293", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_transport_context", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L293", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_transport_context", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L293", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_transport_context", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L293", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_transport_context", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L293", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_transport_context", "target": "decimal", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L293", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_transport_context", "target": "decimal", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L293", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "services_pl_plan_service_apply_payload_to_transport_row", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L353", "weight": 1.0}, {"source": "services_pl_plan_service_apply_payload_to_transport_row", "target": "pltransport", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L353", "weight": 1.0}, {"source": "services_pl_plan_service_apply_payload_to_transport_row", "target": "plvehicle", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L353", "weight": 1.0}, {"source": "services_pl_plan_service_apply_payload_to_transport_row", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L353", "weight": 1.0}, {"source": "services_pl_plan_service_apply_payload_to_transport_row", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L353", "weight": 1.0}, {"source": "services_pl_plan_service_apply_payload_to_transport_row", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L353", "weight": 1.0}, {"source": "services_pl_plan_service_apply_payload_to_transport_row", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L353", "weight": 1.0}, {"source": "services_pl_plan_service_apply_payload_to_transport_row", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L353", "weight": 1.0}, {"source": "services_pl_plan_service_apply_payload_to_transport_row", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L353", "weight": 1.0}, {"source": "services_pl_plan_service_apply_payload_to_transport_row", "target": "plantransportcreateblock", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L353", "weight": 1.0}, {"source": "services_pl_plan_service_apply_payload_to_transport_row", "target": "decimal", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L353", "weight": 1.0}, {"source": "services_pl_plan_service_apply_payload_to_transport_row", "target": "decimal", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L353", "weight": 1.0}, {"source": "services_pl_plan_service_apply_payload_to_transport_row", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L353", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "services_pl_plan_service_upsert_draft_transport_for_plan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L389", "weight": 1.0}, {"source": "services_pl_plan_service_upsert_draft_transport_for_plan", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L389", "weight": 1.0}, {"source": "services_pl_plan_service_upsert_draft_transport_for_plan", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L389", "weight": 1.0}, {"source": "services_pl_plan_service_upsert_draft_transport_for_plan", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L389", "weight": 1.0}, {"source": "services_pl_plan_service_upsert_draft_transport_for_plan", "target": "plantransportcreateblock", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L389", "weight": 1.0}, {"source": "services_pl_plan_service_upsert_draft_transport_for_plan", "target": "plplanproduct", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L389", "weight": 1.0}, {"source": "services_pl_plan_service_upsert_draft_transport_for_plan", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L389", "weight": 1.0}, {"source": "services_pl_plan_service_upsert_draft_transport_for_plan", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L389", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "services_pl_plan_service_clear_draft_transport_for_plan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L496", "weight": 1.0}, {"source": "services_pl_plan_service_clear_draft_transport_for_plan", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L496", "weight": 1.0}, {"source": "services_pl_plan_service_clear_draft_transport_for_plan", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L496", "weight": 1.0}, {"source": "services_pl_plan_service_clear_draft_transport_for_plan", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L496", "weight": 1.0}, {"source": "services_pl_plan_service_clear_draft_transport_for_plan", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L496", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "services_pl_plan_service_sync_transport_prefill_for_plan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L535", "weight": 1.0}, {"source": "services_pl_plan_service_sync_transport_prefill_for_plan", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L535", "weight": 1.0}, {"source": "services_pl_plan_service_sync_transport_prefill_for_plan", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L535", "weight": 1.0}, {"source": "services_pl_plan_service_sync_transport_prefill_for_plan", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L535", "weight": 1.0}, {"source": "services_pl_plan_service_sync_transport_prefill_for_plan", "target": "plantransportcreateblock", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L535", "weight": 1.0}, {"source": "services_pl_plan_service_sync_transport_prefill_for_plan", "target": "plplanproduct", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L535", "weight": 1.0}, {"source": "services_pl_plan_service_sync_transport_prefill_for_plan", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L535", "weight": 1.0}, {"source": "services_pl_plan_service_sync_transport_prefill_for_plan", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L535", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "services_pl_plan_service_apply_vehicle_prefill_to_plan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L557", "weight": 1.0}, {"source": "services_pl_plan_service_apply_vehicle_prefill_to_plan", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L557", "weight": 1.0}, {"source": "services_pl_plan_service_apply_vehicle_prefill_to_plan", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L557", "weight": 1.0}, {"source": "services_pl_plan_service_apply_vehicle_prefill_to_plan", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L557", "weight": 1.0}, {"source": "services_pl_plan_service_apply_vehicle_prefill_to_plan", "target": "plantransportcreateblock", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L557", "weight": 1.0}, {"source": "services_pl_plan_service_apply_vehicle_prefill_to_plan", "target": "plplanproduct", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L557", "weight": 1.0}, {"source": "services_pl_plan_service_apply_vehicle_prefill_to_plan", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L557", "weight": 1.0}, {"source": "services_pl_plan_service_apply_vehicle_prefill_to_plan", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L557", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "services_pl_plan_service_create_transport_for_plan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L579", "weight": 1.0}, {"source": "services_pl_plan_service_create_transport_for_plan", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L579", "weight": 1.0}, {"source": "services_pl_plan_service_create_transport_for_plan", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L579", "weight": 1.0}, {"source": "services_pl_plan_service_create_transport_for_plan", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L579", "weight": 1.0}, {"source": "services_pl_plan_service_create_transport_for_plan", "target": "plplanproduct", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L579", "weight": 1.0}, {"source": "services_pl_plan_service_create_transport_for_plan", "target": "plantransportcreateblock", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L579", "weight": 1.0}, {"source": "services_pl_plan_service_create_transport_for_plan", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L579", "weight": 1.0}, {"source": "services_pl_plan_service_create_transport_for_plan", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L579", "weight": 1.0}, {"source": "services_pl_plan_service_create_transport_for_plan", "target": "pltransport", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L579", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "services_pl_plan_service_validate_create_full", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L686", "weight": 1.0}, {"source": "services_pl_plan_service_validate_create_full", "target": "plancreatefull", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L686", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "services_pl_plan_service_calc_plan_total_amount", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L708", "weight": 1.0}, {"source": "services_pl_plan_service_calc_plan_total_amount", "target": "planproductcreate", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L708", "weight": 1.0}, {"source": "services_pl_plan_service_calc_plan_total_amount", "target": "decimal", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L708", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "services_pl_plan_service_transport_has_locked_freight_settlement", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L719", "weight": 1.0}, {"source": "services_pl_plan_service_transport_has_locked_freight_settlement", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L719", "weight": 1.0}, {"source": "services_pl_plan_service_transport_has_locked_freight_settlement", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L719", "weight": 1.0}, {"source": "services_pl_plan_service_transport_has_locked_freight_settlement", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L719", "weight": 1.0}, {"source": "services_pl_plan_service_transport_has_locked_freight_settlement", "target": "bool", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L719", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "services_pl_plan_service_apply_archive_product_quantities", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L743", "weight": 1.0}, {"source": "services_pl_plan_service_apply_archive_product_quantities", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L743", "weight": 1.0}, {"source": "services_pl_plan_service_apply_archive_product_quantities", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L743", "weight": 1.0}, {"source": "services_pl_plan_service_apply_archive_product_quantities", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L743", "weight": 1.0}, {"source": "services_pl_plan_service_apply_archive_product_quantities", "target": "planarchiveproductitem", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L743", "weight": 1.0}, {"source": "services_pl_plan_service_apply_archive_product_quantities", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L743", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "services_pl_plan_service_apply_archive_freight", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L778", "weight": 1.0}, {"source": "services_pl_plan_service_apply_archive_freight", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L778", "weight": 1.0}, {"source": "services_pl_plan_service_apply_archive_freight", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L778", "weight": 1.0}, {"source": "services_pl_plan_service_apply_archive_freight", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L778", "weight": 1.0}, {"source": "services_pl_plan_service_apply_archive_freight", "target": "planarchivefreightblock", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L778", "weight": 1.0}, {"source": "services_pl_plan_service_apply_archive_freight", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L778", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "services_pl_plan_service_record_plan_change", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L820", "weight": 1.0}, {"source": "services_pl_plan_service_record_plan_change", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L820", "weight": 1.0}, {"source": "services_pl_plan_service_record_plan_change", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L820", "weight": 1.0}, {"source": "services_pl_plan_service_record_plan_change", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L820", "weight": 1.0}, {"source": "services_pl_plan_service_record_plan_change", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L820", "weight": 1.0}, {"source": "services_pl_plan_service_record_plan_change", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L820", "weight": 1.0}, {"source": "services_pl_plan_service_record_plan_change", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L820", "weight": 1.0}, {"source": "services_pl_plan_service_record_plan_change", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L820", "weight": 1.0}, {"source": "services_pl_plan_service_record_plan_change", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L820", "weight": 1.0}, {"source": "services_pl_plan_service_product_quantity", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L49", "weight": 1.0}, {"source": "services_pl_plan_service_sum_product_quantities", "target": "services_pl_plan_service_product_quantity", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L58", "weight": 1.0}, {"source": "services_pl_plan_service_build_plan_product", "target": "services_pl_plan_service_product_quantity", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L82", "weight": 1.0}, {"source": "services_pl_plan_service_build_plan_product", "target": "services_pl_plan_service_estimate_qty_fields", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L83", "weight": 1.0}, {"source": "services_pl_plan_service_build_plan_product", "target": "plplanproduct", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L85", "weight": 1.0}, {"source": "services_pl_plan_service_build_plan_product", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L98", "weight": 1.0}, {"source": "services_pl_plan_service_calc_freight_amount", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L171", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_transport_context", "target": "services_pl_plan_service_resolve_driver", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L313", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_transport_context", "target": "services_pl_plan_service_calc_freight_amount", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L327", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_transport_context", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L337", "weight": 1.0}, {"source": "services_pl_plan_service_upsert_draft_transport_for_plan", "target": "services_pl_plan_service_resolve_transport_context", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L409", "weight": 1.0}, {"source": "services_pl_plan_service_upsert_draft_transport_for_plan", "target": "services_pl_plan_service_apply_payload_to_transport_row", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L430", "weight": 1.0}, {"source": "services_pl_plan_service_upsert_draft_transport_for_plan", "target": "services_pl_plan_service_generate_transport_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L447", "weight": 1.0}, {"source": "services_pl_plan_service_upsert_draft_transport_for_plan", "target": "pltransport", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L448", "weight": 1.0}, {"source": "services_pl_plan_service_sync_transport_prefill_for_plan", "target": "services_pl_plan_service_upsert_draft_transport_for_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L546", "weight": 1.0}, {"source": "services_pl_plan_service_apply_vehicle_prefill_to_plan", "target": "services_pl_plan_service_upsert_draft_transport_for_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L568", "weight": 1.0}, {"source": "services_pl_plan_service_create_transport_for_plan", "target": "services_pl_plan_service_validate_toxic_products", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L602", "weight": 1.0}, {"source": "services_pl_plan_service_create_transport_for_plan", "target": "services_pl_plan_service_resolve_driver", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L604", "weight": 1.0}, {"source": "services_pl_plan_service_create_transport_for_plan", "target": "services_pl_plan_service_calc_freight_amount", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L619", "weight": 1.0}, {"source": "services_pl_plan_service_create_transport_for_plan", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L630", "weight": 1.0}, {"source": "services_pl_plan_service_create_transport_for_plan", "target": "pltransport", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L635", "weight": 1.0}, {"source": "services_pl_plan_service_validate_create_full", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L698", "weight": 1.0}, {"source": "services_pl_plan_service_validate_create_full", "target": "services_pl_plan_service_sum_product_quantities", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L700", "weight": 1.0}, {"source": "services_pl_plan_service_calc_plan_total_amount", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L709", "weight": 1.0}, {"source": "services_pl_plan_service_apply_archive_product_quantities", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L763", "weight": 1.0}, {"source": "services_pl_plan_service_apply_archive_freight", "target": "services_pl_plan_service_transport_has_locked_freight_settlement", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L790", "weight": 1.0}, {"source": "services_pl_plan_service_apply_archive_freight", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L808", "weight": 1.0}, {"source": "services_pl_plan_service_rationale_399", "target": "services_pl_plan_service_upsert_draft_transport_for_plan", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L399", "weight": 1.0}, {"source": "services_pl_plan_service_rationale_545", "target": "services_pl_plan_service_sync_transport_prefill_for_plan", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L545", "weight": 1.0}], "raw_calls": [{"caller_nid": "services_pl_plan_service_is_ton_product_unit", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L41"}, {"caller_nid": "services_pl_plan_service_build_plan_product", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L86"}, {"caller_nid": "services_pl_plan_service_resolve_driver", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L126"}, {"caller_nid": "services_pl_plan_service_resolve_driver", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L126"}, {"caller_nid": "services_pl_plan_service_resolve_driver", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L138"}, {"caller_nid": "services_pl_plan_service_resolve_driver", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L138"}, {"caller_nid": "services_pl_plan_service_resolve_driver", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L138"}, {"caller_nid": "services_pl_plan_service_resolve_driver", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L145"}, {"caller_nid": "services_pl_plan_service_resolve_driver", "callee": "asc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L145"}, {"caller_nid": "services_pl_plan_service_resolve_driver", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L150"}, {"caller_nid": "services_pl_plan_service_resolve_driver", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L150"}, {"caller_nid": "services_pl_plan_service_resolve_driver", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L160"}, {"caller_nid": "services_pl_plan_service_validate_toxic_products", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L192"}, {"caller_nid": "services_pl_plan_service_resolve_hazard_flags_from_crm", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L212"}, {"caller_nid": "services_pl_plan_service_resolve_hazard_flags_from_crm", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L212"}, {"caller_nid": "services_pl_plan_service_update_plan_product_certs", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L234"}, {"caller_nid": "services_pl_plan_service_update_plan_product_certs", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L234"}, {"caller_nid": "services_pl_plan_service_update_plan_product_certs", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L243"}, {"caller_nid": "services_pl_plan_service_update_plan_product_certs", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L245"}, {"caller_nid": "services_pl_plan_service_update_plan_product_certs", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L250"}, {"caller_nid": "services_pl_plan_service_update_plan_product_certs", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L250"}, {"caller_nid": "services_pl_plan_service_update_plan_product_certs", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L260"}, {"caller_nid": "services_pl_plan_service_update_plan_product_certs", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L262"}, {"caller_nid": "services_pl_plan_service_update_plan_product_certs", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L263"}, {"caller_nid": "services_pl_plan_service_update_plan_product_certs", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L264"}, {"caller_nid": "services_pl_plan_service_update_plan_product_certs", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L266"}, {"caller_nid": "services_pl_plan_service_update_plan_product_certs", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L269"}, {"caller_nid": "services_pl_plan_service_update_plan_product_certs", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L271"}, {"caller_nid": "services_pl_plan_service_generate_transport_no", "callee": "today", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L276"}, {"caller_nid": "services_pl_plan_service_generate_transport_no", "callee": "strftime", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L277"}, {"caller_nid": "services_pl_plan_service_generate_transport_no", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L279"}, {"caller_nid": "services_pl_plan_service_generate_transport_no", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L279"}, {"caller_nid": "services_pl_plan_service_generate_transport_no", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L279"}, {"caller_nid": "services_pl_plan_service_generate_transport_no", "callee": "like", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L280"}, {"caller_nid": "services_pl_plan_service_generate_transport_no", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L281"}, {"caller_nid": "services_pl_plan_service_resolve_transport_context", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L302"}, {"caller_nid": "services_pl_plan_service_resolve_transport_context", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L302"}, {"caller_nid": "services_pl_plan_service_resolve_transport_context", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L311"}, {"caller_nid": "services_pl_plan_service_resolve_transport_context", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L320"}, {"caller_nid": "services_pl_plan_service_resolve_transport_context", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L320"}, {"caller_nid": "services_pl_plan_service_upsert_draft_transport_for_plan", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L420"}, {"caller_nid": "services_pl_plan_service_upsert_draft_transport_for_plan", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L420"}, {"caller_nid": "services_pl_plan_service_upsert_draft_transport_for_plan", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L449"}, {"caller_nid": "services_pl_plan_service_upsert_draft_transport_for_plan", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L458"}, {"caller_nid": "services_pl_plan_service_upsert_draft_transport_for_plan", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L459"}, {"caller_nid": "services_pl_plan_service_upsert_draft_transport_for_plan", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L460"}, {"caller_nid": "services_pl_plan_service_upsert_draft_transport_for_plan", "callee": "PlPlanTransport", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L461"}, {"caller_nid": "services_pl_plan_service_upsert_draft_transport_for_plan", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L462"}, {"caller_nid": "services_pl_plan_service_clear_draft_transport_for_plan", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L506"}, {"caller_nid": "services_pl_plan_service_clear_draft_transport_for_plan", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L506"}, {"caller_nid": "services_pl_plan_service_clear_draft_transport_for_plan", "callee": "update", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L517"}, {"caller_nid": "services_pl_plan_service_clear_draft_transport_for_plan", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L517"}, {"caller_nid": "services_pl_plan_service_create_transport_for_plan", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L591"}, {"caller_nid": "services_pl_plan_service_create_transport_for_plan", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L591"}, {"caller_nid": "services_pl_plan_service_create_transport_for_plan", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L600"}, {"caller_nid": "services_pl_plan_service_create_transport_for_plan", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L612"}, {"caller_nid": "services_pl_plan_service_create_transport_for_plan", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L612"}, {"caller_nid": "services_pl_plan_service_create_transport_for_plan", "callee": "generate_transport_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L634"}, {"caller_nid": "services_pl_plan_service_create_transport_for_plan", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L636"}, {"caller_nid": "services_pl_plan_service_create_transport_for_plan", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L661"}, {"caller_nid": "services_pl_plan_service_create_transport_for_plan", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L663"}, {"caller_nid": "services_pl_plan_service_create_transport_for_plan", "callee": "PlPlanTransport", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L664"}, {"caller_nid": "services_pl_plan_service_create_transport_for_plan", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L665"}, {"caller_nid": "services_pl_plan_service_validate_create_full", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L688"}, {"caller_nid": "services_pl_plan_service_validate_create_full", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L690"}, {"caller_nid": "services_pl_plan_service_validate_create_full", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L699"}, {"caller_nid": "services_pl_plan_service_validate_create_full", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L702"}, {"caller_nid": "services_pl_plan_service_validate_create_full", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L705"}, {"caller_nid": "services_pl_plan_service_transport_has_locked_freight_settlement", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L725"}, {"caller_nid": "services_pl_plan_service_transport_has_locked_freight_settlement", "callee": "join", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L725"}, {"caller_nid": "services_pl_plan_service_transport_has_locked_freight_settlement", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L725"}, {"caller_nid": "services_pl_plan_service_transport_has_locked_freight_settlement", "callee": "in_", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L736"}, {"caller_nid": "services_pl_plan_service_apply_archive_product_quantities", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L753"}, {"caller_nid": "services_pl_plan_service_apply_archive_product_quantities", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L760"}, {"caller_nid": "services_pl_plan_service_apply_archive_product_quantities", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L762"}, {"caller_nid": "services_pl_plan_service_apply_archive_freight", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L789"}, {"caller_nid": "services_pl_plan_service_apply_archive_freight", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L791"}, {"caller_nid": "services_pl_plan_service_apply_archive_freight", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L794"}, {"caller_nid": "services_pl_plan_service_apply_archive_freight", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L794"}, {"caller_nid": "services_pl_plan_service_apply_archive_freight", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L803"}, {"caller_nid": "services_pl_plan_service_record_plan_change", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L831"}, {"caller_nid": "services_pl_plan_service_record_plan_change", "callee": "PlPlanChange", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L832"}, {"caller_nid": "services_pl_plan_service_record_plan_change", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L833"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/b47ca782ddb5c42997e410d218346e90e834dfe41c977a5d7c0150aec7e4b2d9.json b/backend/graphify-out/cache/ast/b47ca782ddb5c42997e410d218346e90e834dfe41c977a5d7c0150aec7e4b2d9.json new file mode 100644 index 000000000..df64b21d5 --- /dev/null +++ b/backend/graphify-out/cache/ast/b47ca782ddb5c42997e410d218346e90e834dfe41c977a5d7c0150aec7e4b2d9.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_freight_settlement_service_py", "label": "pl_freight_settlement_service.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L1"}, {"id": "services_pl_freight_settlement_service_resolve_user_display_name", "label": "_resolve_user_display_name()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L38"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L38"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L38"}, {"id": "services_pl_freight_settlement_service_occupied_transport_ids_subquery", "label": "_occupied_transport_ids_subquery()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L48"}, {"id": "services_pl_freight_settlement_service_get_settlement_row", "label": "get_settlement_row()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L64"}, {"id": "plfreightsettlement", "label": "PlFreightSettlement", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L64"}, {"id": "services_pl_freight_settlement_service_list_unsettled_plans", "label": "list_unsettled_plans()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L79"}, {"id": "int", "label": "int", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L79"}, {"id": "any", "label": "Any", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L79"}, {"id": "services_pl_freight_settlement_service_resolve_transports_for_create", "label": "_resolve_transports_for_create()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L147"}, {"id": "pltransport", "label": "PlTransport", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L147"}, {"id": "services_pl_freight_settlement_service_create_settlement", "label": "create_settlement()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L197"}, {"id": "services_pl_freight_settlement_service_delete_draft_settlement", "label": "delete_draft_settlement()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L241"}, {"id": "services_pl_freight_settlement_service_get_transport_ids", "label": "_get_transport_ids()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L266"}, {"id": "services_pl_freight_settlement_service_get_plans_for_transports", "label": "_get_plans_for_transports()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L278"}, {"id": "plplan", "label": "PlPlan", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L278"}, {"id": "services_pl_freight_settlement_service_approval_to_dict", "label": "_approval_to_dict()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L292"}, {"id": "plfreightsettlementapproval", "label": "PlFreightSettlementApproval", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L292"}, {"id": "services_pl_freight_settlement_service_create_settlement_approval_records", "label": "create_settlement_approval_records()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L307"}, {"id": "services_pl_freight_settlement_service_can_user_approve_settlement", "label": "can_user_approve_settlement()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L366"}, {"id": "bool", "label": "bool", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L366"}, {"id": "services_pl_freight_settlement_service_settlement_all_approved", "label": "_settlement_all_approved()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L396"}, {"id": "services_pl_freight_settlement_service_advance_after_approval", "label": "_advance_after_approval()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L409"}, {"id": "services_pl_freight_settlement_service_submit_settlement_approval", "label": "submit_settlement_approval()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L472"}, {"id": "freightsettlementsubmitapprovalbody", "label": "FreightSettlementSubmitApprovalBody", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L472"}, {"id": "services_pl_freight_settlement_service_process_settlement_approval", "label": "process_settlement_approval()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L505"}, {"id": "services_pl_freight_settlement_service_withdraw_settlement_approval", "label": "withdraw_settlement_approval()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L551"}, {"id": "services_pl_freight_settlement_service_disburse_settlement", "label": "disburse_settlement()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L581"}, {"id": "freightsettlementdisbursebody", "label": "FreightSettlementDisburseBody", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L581"}, {"id": "services_pl_freight_settlement_service_get_approval_flow", "label": "get_approval_flow()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L619"}, {"id": "services_pl_freight_settlement_service_current_approver_name", "label": "_current_approver_name()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L632"}, {"id": "services_pl_freight_settlement_service_current_approval_id", "label": "_current_approval_id()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L647"}, {"id": "services_pl_freight_settlement_service_last_approval_time", "label": "_last_approval_time()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L664"}, {"id": "datetime", "label": "datetime", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L664"}, {"id": "services_pl_freight_settlement_service_enrich_settlement_list_item", "label": "enrich_settlement_list_item()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L678"}, {"id": "services_pl_freight_settlement_service_list_settlements_enriched", "label": "list_settlements_enriched()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L737"}, {"id": "services_pl_freight_settlement_service_get_settlement_detail", "label": "get_settlement_detail()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L771"}, {"id": "services_pl_freight_settlement_service_update_settlement_draft", "label": "update_settlement_draft()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L843"}, {"id": "freightsettlementupdate", "label": "FreightSettlementUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L843"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_freight_settlement_service_py", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_freight_settlement_service_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L5", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_freight_settlement_service_py", "target": "decimal", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L6", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_freight_settlement_service_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L7", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_freight_settlement_service_py", "target": "fastapi", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L9", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_freight_settlement_service_py", "target": "sqlalchemy", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L10", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_freight_settlement_service_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L11", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_freight_settlement_service_py", "target": "app_core_utils", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L13", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_freight_settlement_service_py", "target": "app_models_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L14", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_freight_settlement_service_py", "target": "app_models_pl_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L15", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_freight_settlement_service_py", "target": "app_schemas_pl_freight", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L23", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_freight_settlement_service_py", "target": "services_pl_freight_settlement_service_resolve_user_display_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L38", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_resolve_user_display_name", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L38", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_resolve_user_display_name", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L38", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_resolve_user_display_name", "target": "str", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L38", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_freight_settlement_service_py", "target": "services_pl_freight_settlement_service_occupied_transport_ids_subquery", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L48", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_occupied_transport_ids_subquery", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L48", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_occupied_transport_ids_subquery", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L48", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_freight_settlement_service_py", "target": "services_pl_freight_settlement_service_get_settlement_row", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L64", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_get_settlement_row", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L64", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_get_settlement_row", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L64", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_get_settlement_row", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L64", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_get_settlement_row", "target": "plfreightsettlement", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L64", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_freight_settlement_service_py", "target": "services_pl_freight_settlement_service_list_unsettled_plans", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L79", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_list_unsettled_plans", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L79", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_list_unsettled_plans", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L79", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_list_unsettled_plans", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L79", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_list_unsettled_plans", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L79", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_list_unsettled_plans", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L79", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_list_unsettled_plans", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L79", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_list_unsettled_plans", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L79", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_list_unsettled_plans", "target": "int", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L79", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_list_unsettled_plans", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L79", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_list_unsettled_plans", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L79", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_freight_settlement_service_py", "target": "services_pl_freight_settlement_service_resolve_transports_for_create", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L147", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_resolve_transports_for_create", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L147", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_resolve_transports_for_create", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L147", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_resolve_transports_for_create", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L147", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_resolve_transports_for_create", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L147", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_resolve_transports_for_create", "target": "pltransport", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L147", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_freight_settlement_service_py", "target": "services_pl_freight_settlement_service_create_settlement", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L197", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_create_settlement", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L197", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_create_settlement", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L197", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_create_settlement", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L197", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_create_settlement", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L197", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_create_settlement", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L197", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_create_settlement", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L197", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_create_settlement", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L197", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_create_settlement", "target": "plfreightsettlement", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L197", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_freight_settlement_service_py", "target": "services_pl_freight_settlement_service_delete_draft_settlement", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L241", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_delete_draft_settlement", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L241", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_delete_draft_settlement", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L241", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_delete_draft_settlement", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L241", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_delete_draft_settlement", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L241", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_freight_settlement_service_py", "target": "services_pl_freight_settlement_service_get_transport_ids", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L266", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_get_transport_ids", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L266", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_get_transport_ids", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L266", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_get_transport_ids", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L266", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_freight_settlement_service_py", "target": "services_pl_freight_settlement_service_get_plans_for_transports", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L278", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_get_plans_for_transports", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L278", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_get_plans_for_transports", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L278", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_get_plans_for_transports", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L278", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_get_plans_for_transports", "target": "plplan", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L278", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_freight_settlement_service_py", "target": "services_pl_freight_settlement_service_approval_to_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L292", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_approval_to_dict", "target": "plfreightsettlementapproval", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L292", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_approval_to_dict", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L292", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_approval_to_dict", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L292", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_freight_settlement_service_py", "target": "services_pl_freight_settlement_service_create_settlement_approval_records", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L307", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_create_settlement_approval_records", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L307", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_create_settlement_approval_records", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L307", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_create_settlement_approval_records", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L307", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_create_settlement_approval_records", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L307", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_create_settlement_approval_records", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L307", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_create_settlement_approval_records", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L307", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_create_settlement_approval_records", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L307", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_freight_settlement_service_py", "target": "services_pl_freight_settlement_service_can_user_approve_settlement", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L366", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_can_user_approve_settlement", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L366", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_can_user_approve_settlement", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L366", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_can_user_approve_settlement", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L366", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_can_user_approve_settlement", "target": "bool", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L366", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_freight_settlement_service_py", "target": "services_pl_freight_settlement_service_settlement_all_approved", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L396", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_settlement_all_approved", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L396", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_settlement_all_approved", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L396", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_settlement_all_approved", "target": "bool", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L396", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_freight_settlement_service_py", "target": "services_pl_freight_settlement_service_advance_after_approval", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L409", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_advance_after_approval", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L409", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_advance_after_approval", "target": "plfreightsettlement", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L409", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_advance_after_approval", "target": "plfreightsettlementapproval", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L409", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_advance_after_approval", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L409", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_freight_settlement_service_py", "target": "services_pl_freight_settlement_service_submit_settlement_approval", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L472", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_submit_settlement_approval", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L472", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_submit_settlement_approval", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L472", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_submit_settlement_approval", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L472", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_submit_settlement_approval", "target": "freightsettlementsubmitapprovalbody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L472", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_submit_settlement_approval", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L472", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_submit_settlement_approval", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L472", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_submit_settlement_approval", "target": "plfreightsettlement", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L472", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_freight_settlement_service_py", "target": "services_pl_freight_settlement_service_process_settlement_approval", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L505", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_process_settlement_approval", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L505", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_process_settlement_approval", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L505", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_process_settlement_approval", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L505", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_process_settlement_approval", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L505", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_process_settlement_approval", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L505", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_process_settlement_approval", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L505", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_process_settlement_approval", "target": "plfreightsettlement", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L505", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_freight_settlement_service_py", "target": "services_pl_freight_settlement_service_withdraw_settlement_approval", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L551", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_withdraw_settlement_approval", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L551", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_withdraw_settlement_approval", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L551", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_withdraw_settlement_approval", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L551", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_withdraw_settlement_approval", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L551", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_withdraw_settlement_approval", "target": "plfreightsettlement", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L551", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_freight_settlement_service_py", "target": "services_pl_freight_settlement_service_disburse_settlement", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L581", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_disburse_settlement", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L581", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_disburse_settlement", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L581", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_disburse_settlement", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L581", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_disburse_settlement", "target": "freightsettlementdisbursebody", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L581", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_disburse_settlement", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L581", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_disburse_settlement", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L581", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_disburse_settlement", "target": "plfreightsettlement", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L581", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_freight_settlement_service_py", "target": "services_pl_freight_settlement_service_get_approval_flow", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L619", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_get_approval_flow", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L619", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_get_approval_flow", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L619", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_get_approval_flow", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L619", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_get_approval_flow", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L619", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_freight_settlement_service_py", "target": "services_pl_freight_settlement_service_current_approver_name", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L632", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_current_approver_name", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L632", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_current_approver_name", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L632", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_current_approver_name", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L632", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_freight_settlement_service_py", "target": "services_pl_freight_settlement_service_current_approval_id", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L647", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_current_approval_id", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L647", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_current_approval_id", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L647", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_current_approval_id", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L647", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_current_approval_id", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L647", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_freight_settlement_service_py", "target": "services_pl_freight_settlement_service_last_approval_time", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L664", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_last_approval_time", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L664", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_last_approval_time", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L664", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_last_approval_time", "target": "datetime", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L664", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_freight_settlement_service_py", "target": "services_pl_freight_settlement_service_enrich_settlement_list_item", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L678", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_enrich_settlement_list_item", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L678", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_enrich_settlement_list_item", "target": "plfreightsettlement", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L678", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_enrich_settlement_list_item", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L678", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_enrich_settlement_list_item", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L678", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_enrich_settlement_list_item", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L678", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_freight_settlement_service_py", "target": "services_pl_freight_settlement_service_list_settlements_enriched", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L737", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_list_settlements_enriched", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L737", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_list_settlements_enriched", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L737", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_list_settlements_enriched", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L737", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_list_settlements_enriched", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L737", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_list_settlements_enriched", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L737", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_list_settlements_enriched", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L737", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_list_settlements_enriched", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L737", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_list_settlements_enriched", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L737", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_list_settlements_enriched", "target": "int", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L737", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_list_settlements_enriched", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L737", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_list_settlements_enriched", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L737", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_freight_settlement_service_py", "target": "services_pl_freight_settlement_service_get_settlement_detail", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L771", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_get_settlement_detail", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L771", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_get_settlement_detail", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L771", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_get_settlement_detail", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L771", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_get_settlement_detail", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L771", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_get_settlement_detail", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L771", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_get_settlement_detail", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L771", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_freight_settlement_service_py", "target": "services_pl_freight_settlement_service_update_settlement_draft", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L843", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_update_settlement_draft", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L843", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_update_settlement_draft", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L843", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_update_settlement_draft", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L843", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_update_settlement_draft", "target": "freightsettlementupdate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L843", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_update_settlement_draft", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L843", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_update_settlement_draft", "target": "plfreightsettlement", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L843", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_list_unsettled_plans", "target": "services_pl_freight_settlement_service_occupied_transport_ids_subquery", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L89", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_resolve_transports_for_create", "target": "services_pl_freight_settlement_service_occupied_transport_ids_subquery", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L178", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_create_settlement", "target": "services_pl_freight_settlement_service_resolve_transports_for_create", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L207", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_create_settlement", "target": "plfreightsettlement", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L212", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_delete_draft_settlement", "target": "services_pl_freight_settlement_service_get_settlement_row", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L242", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_create_settlement_approval_records", "target": "services_pl_freight_settlement_service_resolve_user_display_name", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L325", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_create_settlement_approval_records", "target": "plfreightsettlementapproval", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L327", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_advance_after_approval", "target": "services_pl_freight_settlement_service_settlement_all_approved", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L467", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_submit_settlement_approval", "target": "services_pl_freight_settlement_service_get_settlement_row", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L481", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_submit_settlement_approval", "target": "services_pl_freight_settlement_service_create_settlement_approval_records", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L491", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_process_settlement_approval", "target": "services_pl_freight_settlement_service_get_settlement_row", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L526", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_process_settlement_approval", "target": "services_pl_freight_settlement_service_can_user_approve_settlement", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L532", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_process_settlement_approval", "target": "services_pl_freight_settlement_service_advance_after_approval", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L544", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_withdraw_settlement_approval", "target": "services_pl_freight_settlement_service_get_settlement_row", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L554", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_disburse_settlement", "target": "services_pl_freight_settlement_service_get_settlement_row", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L590", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_get_approval_flow", "target": "services_pl_freight_settlement_service_approval_to_dict", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L629", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_current_approval_id", "target": "services_pl_freight_settlement_service_can_user_approve_settlement", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L648", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_enrich_settlement_list_item", "target": "services_pl_freight_settlement_service_get_transport_ids", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L681", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_enrich_settlement_list_item", "target": "services_pl_freight_settlement_service_get_plans_for_transports", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L682", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_enrich_settlement_list_item", "target": "services_pl_freight_settlement_service_resolve_user_display_name", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L704", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_enrich_settlement_list_item", "target": "services_pl_freight_settlement_service_current_approver_name", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L725", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_enrich_settlement_list_item", "target": "services_pl_freight_settlement_service_can_user_approve_settlement", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L726", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_enrich_settlement_list_item", "target": "services_pl_freight_settlement_service_current_approval_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L728", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_enrich_settlement_list_item", "target": "services_pl_freight_settlement_service_last_approval_time", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L729", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_list_settlements_enriched", "target": "services_pl_freight_settlement_service_enrich_settlement_list_item", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L768", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_get_settlement_detail", "target": "services_pl_freight_settlement_service_get_settlement_row", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L774", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_get_settlement_detail", "target": "services_pl_freight_settlement_service_enrich_settlement_list_item", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L775", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_get_settlement_detail", "target": "services_pl_freight_settlement_service_get_transport_ids", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L777", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_get_settlement_detail", "target": "services_pl_freight_settlement_service_get_plans_for_transports", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L785", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_get_settlement_detail", "target": "services_pl_freight_settlement_service_get_approval_flow", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L838", "weight": 1.0}, {"source": "services_pl_freight_settlement_service_update_settlement_draft", "target": "services_pl_freight_settlement_service_get_settlement_row", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L851", "weight": 1.0}], "raw_calls": [{"caller_nid": "services_pl_freight_settlement_service_resolve_user_display_name", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L39"}, {"caller_nid": "services_pl_freight_settlement_service_resolve_user_display_name", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L42"}, {"caller_nid": "services_pl_freight_settlement_service_resolve_user_display_name", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L42"}, {"caller_nid": "services_pl_freight_settlement_service_resolve_user_display_name", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L45"}, {"caller_nid": "services_pl_freight_settlement_service_occupied_transport_ids_subquery", "callee": "join", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L50"}, {"caller_nid": "services_pl_freight_settlement_service_occupied_transport_ids_subquery", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L50"}, {"caller_nid": "services_pl_freight_settlement_service_get_settlement_row", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L66"}, {"caller_nid": "services_pl_freight_settlement_service_get_settlement_row", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L66"}, {"caller_nid": "services_pl_freight_settlement_service_get_settlement_row", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L75"}, {"caller_nid": "services_pl_freight_settlement_service_list_unsettled_plans", "callee": "subquery", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L89"}, {"caller_nid": "services_pl_freight_settlement_service_list_unsettled_plans", "callee": "join", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L92"}, {"caller_nid": "services_pl_freight_settlement_service_list_unsettled_plans", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L92"}, {"caller_nid": "services_pl_freight_settlement_service_list_unsettled_plans", "callee": "isnot", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L100"}, {"caller_nid": "services_pl_freight_settlement_service_list_unsettled_plans", "callee": "in_", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L103"}, {"caller_nid": "services_pl_freight_settlement_service_list_unsettled_plans", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L109"}, {"caller_nid": "services_pl_freight_settlement_service_list_unsettled_plans", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L110"}, {"caller_nid": "services_pl_freight_settlement_service_list_unsettled_plans", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L111"}, {"caller_nid": "services_pl_freight_settlement_service_list_unsettled_plans", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L112"}, {"caller_nid": "services_pl_freight_settlement_service_list_unsettled_plans", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L118"}, {"caller_nid": "services_pl_freight_settlement_service_list_unsettled_plans", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L120"}, {"caller_nid": "services_pl_freight_settlement_service_list_unsettled_plans", "callee": "limit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L122"}, {"caller_nid": "services_pl_freight_settlement_service_list_unsettled_plans", "callee": "offset", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L122"}, {"caller_nid": "services_pl_freight_settlement_service_list_unsettled_plans", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L122"}, {"caller_nid": "services_pl_freight_settlement_service_list_unsettled_plans", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L122"}, {"caller_nid": "services_pl_freight_settlement_service_list_unsettled_plans", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L130"}, {"caller_nid": "services_pl_freight_settlement_service_resolve_transports_for_create", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L153"}, {"caller_nid": "services_pl_freight_settlement_service_resolve_transports_for_create", "callee": "in_", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L155"}, {"caller_nid": "services_pl_freight_settlement_service_resolve_transports_for_create", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L162"}, {"caller_nid": "services_pl_freight_settlement_service_resolve_transports_for_create", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L165"}, {"caller_nid": "services_pl_freight_settlement_service_resolve_transports_for_create", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L167"}, {"caller_nid": "services_pl_freight_settlement_service_resolve_transports_for_create", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L169"}, {"caller_nid": "services_pl_freight_settlement_service_resolve_transports_for_create", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L170"}, {"caller_nid": "services_pl_freight_settlement_service_resolve_transports_for_create", "callee": "extend", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L172"}, {"caller_nid": "services_pl_freight_settlement_service_resolve_transports_for_create", "callee": "fromkeys", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L174"}, {"caller_nid": "services_pl_freight_settlement_service_resolve_transports_for_create", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L176"}, {"caller_nid": "services_pl_freight_settlement_service_resolve_transports_for_create", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L181"}, {"caller_nid": "services_pl_freight_settlement_service_resolve_transports_for_create", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L184"}, {"caller_nid": "services_pl_freight_settlement_service_resolve_transports_for_create", "callee": "in_", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L186"}, {"caller_nid": "services_pl_freight_settlement_service_resolve_transports_for_create", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L193"}, {"caller_nid": "services_pl_freight_settlement_service_create_settlement", "callee": "Decimal", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L210"}, {"caller_nid": "services_pl_freight_settlement_service_create_settlement", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L213"}, {"caller_nid": "services_pl_freight_settlement_service_create_settlement", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L221"}, {"caller_nid": "services_pl_freight_settlement_service_create_settlement", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L224"}, {"caller_nid": "services_pl_freight_settlement_service_create_settlement", "callee": "PlFreightSettlementTransport", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L225"}, {"caller_nid": "services_pl_freight_settlement_service_create_settlement", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L226"}, {"caller_nid": "services_pl_freight_settlement_service_create_settlement", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L236"}, {"caller_nid": "services_pl_freight_settlement_service_create_settlement", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L237"}, {"caller_nid": "services_pl_freight_settlement_service_delete_draft_settlement", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L244"}, {"caller_nid": "services_pl_freight_settlement_service_delete_draft_settlement", "callee": "now", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L246"}, {"caller_nid": "services_pl_freight_settlement_service_delete_draft_settlement", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L252"}, {"caller_nid": "services_pl_freight_settlement_service_delete_draft_settlement", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L263"}, {"caller_nid": "services_pl_freight_settlement_service_get_transport_ids", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L269"}, {"caller_nid": "services_pl_freight_settlement_service_get_plans_for_transports", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L282"}, {"caller_nid": "services_pl_freight_settlement_service_get_plans_for_transports", "callee": "in_", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L286"}, {"caller_nid": "services_pl_freight_settlement_service_create_settlement_approval_records", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L317"}, {"caller_nid": "services_pl_freight_settlement_service_create_settlement_approval_records", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L318"}, {"caller_nid": "services_pl_freight_settlement_service_create_settlement_approval_records", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L318"}, {"caller_nid": "services_pl_freight_settlement_service_create_settlement_approval_records", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L320"}, {"caller_nid": "services_pl_freight_settlement_service_create_settlement_approval_records", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L326"}, {"caller_nid": "services_pl_freight_settlement_service_create_settlement_approval_records", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L328"}, {"caller_nid": "services_pl_freight_settlement_service_create_settlement_approval_records", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L346"}, {"caller_nid": "services_pl_freight_settlement_service_create_settlement_approval_records", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L348"}, {"caller_nid": "services_pl_freight_settlement_service_create_settlement_approval_records", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L363"}, {"caller_nid": "services_pl_freight_settlement_service_can_user_approve_settlement", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L371"}, {"caller_nid": "services_pl_freight_settlement_service_can_user_approve_settlement", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L371"}, {"caller_nid": "services_pl_freight_settlement_service_can_user_approve_settlement", "callee": "asc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L376"}, {"caller_nid": "services_pl_freight_settlement_service_settlement_all_approved", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L398"}, {"caller_nid": "services_pl_freight_settlement_service_settlement_all_approved", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L398"}, {"caller_nid": "services_pl_freight_settlement_service_advance_after_approval", "callee": "now", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L412"}, {"caller_nid": "services_pl_freight_settlement_service_advance_after_approval", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L423"}, {"caller_nid": "services_pl_freight_settlement_service_advance_after_approval", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L439"}, {"caller_nid": "services_pl_freight_settlement_service_advance_after_approval", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L439"}, {"caller_nid": "services_pl_freight_settlement_service_advance_after_approval", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L452"}, {"caller_nid": "services_pl_freight_settlement_service_advance_after_approval", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L452"}, {"caller_nid": "services_pl_freight_settlement_service_advance_after_approval", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L452"}, {"caller_nid": "services_pl_freight_settlement_service_advance_after_approval", "callee": "asc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L459"}, {"caller_nid": "services_pl_freight_settlement_service_submit_settlement_approval", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L483"}, {"caller_nid": "services_pl_freight_settlement_service_submit_settlement_approval", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L489"}, {"caller_nid": "services_pl_freight_settlement_service_submit_settlement_approval", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L500"}, {"caller_nid": "services_pl_freight_settlement_service_submit_settlement_approval", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L501"}, {"caller_nid": "services_pl_freight_settlement_service_process_settlement_approval", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L515"}, {"caller_nid": "services_pl_freight_settlement_service_process_settlement_approval", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L515"}, {"caller_nid": "services_pl_freight_settlement_service_process_settlement_approval", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L524"}, {"caller_nid": "services_pl_freight_settlement_service_process_settlement_approval", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L528"}, {"caller_nid": "services_pl_freight_settlement_service_process_settlement_approval", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L531"}, {"caller_nid": "services_pl_freight_settlement_service_process_settlement_approval", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L533"}, {"caller_nid": "services_pl_freight_settlement_service_process_settlement_approval", "callee": "now", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L536"}, {"caller_nid": "services_pl_freight_settlement_service_process_settlement_approval", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L546"}, {"caller_nid": "services_pl_freight_settlement_service_process_settlement_approval", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L547"}, {"caller_nid": "services_pl_freight_settlement_service_withdraw_settlement_approval", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L556"}, {"caller_nid": "services_pl_freight_settlement_service_withdraw_settlement_approval", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L558"}, {"caller_nid": "services_pl_freight_settlement_service_withdraw_settlement_approval", "callee": "now", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L560"}, {"caller_nid": "services_pl_freight_settlement_service_withdraw_settlement_approval", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L562"}, {"caller_nid": "services_pl_freight_settlement_service_withdraw_settlement_approval", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L576"}, {"caller_nid": "services_pl_freight_settlement_service_withdraw_settlement_approval", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L577"}, {"caller_nid": "services_pl_freight_settlement_service_disburse_settlement", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L592"}, {"caller_nid": "services_pl_freight_settlement_service_disburse_settlement", "callee": "Decimal", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L594"}, {"caller_nid": "services_pl_freight_settlement_service_disburse_settlement", "callee": "Decimal", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L595"}, {"caller_nid": "services_pl_freight_settlement_service_disburse_settlement", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L596"}, {"caller_nid": "services_pl_freight_settlement_service_disburse_settlement", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L597"}, {"caller_nid": "services_pl_freight_settlement_service_disburse_settlement", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L599"}, {"caller_nid": "services_pl_freight_settlement_service_disburse_settlement", "callee": "PlRemittanceVoucher", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L600"}, {"caller_nid": "services_pl_freight_settlement_service_disburse_settlement", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L601"}, {"caller_nid": "services_pl_freight_settlement_service_disburse_settlement", "callee": "dumps", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L606"}, {"caller_nid": "services_pl_freight_settlement_service_disburse_settlement", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L614"}, {"caller_nid": "services_pl_freight_settlement_service_disburse_settlement", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L615"}, {"caller_nid": "services_pl_freight_settlement_service_get_approval_flow", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L621"}, {"caller_nid": "services_pl_freight_settlement_service_get_approval_flow", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L621"}, {"caller_nid": "services_pl_freight_settlement_service_get_approval_flow", "callee": "asc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L626"}, {"caller_nid": "services_pl_freight_settlement_service_get_approval_flow", "callee": "asc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L626"}, {"caller_nid": "services_pl_freight_settlement_service_current_approver_name", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L634"}, {"caller_nid": "services_pl_freight_settlement_service_current_approver_name", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L634"}, {"caller_nid": "services_pl_freight_settlement_service_current_approver_name", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L634"}, {"caller_nid": "services_pl_freight_settlement_service_current_approver_name", "callee": "asc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L641"}, {"caller_nid": "services_pl_freight_settlement_service_current_approval_id", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L651"}, {"caller_nid": "services_pl_freight_settlement_service_current_approval_id", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L651"}, {"caller_nid": "services_pl_freight_settlement_service_last_approval_time", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L666"}, {"caller_nid": "services_pl_freight_settlement_service_last_approval_time", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L666"}, {"caller_nid": "services_pl_freight_settlement_service_last_approval_time", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L666"}, {"caller_nid": "services_pl_freight_settlement_service_last_approval_time", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L672"}, {"caller_nid": "services_pl_freight_settlement_service_enrich_settlement_list_item", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L686"}, {"caller_nid": "services_pl_freight_settlement_service_enrich_settlement_list_item", "callee": "in_", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L687"}, {"caller_nid": "services_pl_freight_settlement_service_enrich_settlement_list_item", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L695"}, {"caller_nid": "services_pl_freight_settlement_service_enrich_settlement_list_item", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L695"}, {"caller_nid": "services_pl_freight_settlement_service_enrich_settlement_list_item", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L695"}, {"caller_nid": "services_pl_freight_settlement_service_enrich_settlement_list_item", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L700"}, {"caller_nid": "services_pl_freight_settlement_service_enrich_settlement_list_item", "callee": "join", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L724"}, {"caller_nid": "services_pl_freight_settlement_service_list_settlements_enriched", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L748"}, {"caller_nid": "services_pl_freight_settlement_service_list_settlements_enriched", "callee": "in_", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L754"}, {"caller_nid": "services_pl_freight_settlement_service_list_settlements_enriched", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L759"}, {"caller_nid": "services_pl_freight_settlement_service_list_settlements_enriched", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L761"}, {"caller_nid": "services_pl_freight_settlement_service_list_settlements_enriched", "callee": "limit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L763"}, {"caller_nid": "services_pl_freight_settlement_service_list_settlements_enriched", "callee": "offset", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L763"}, {"caller_nid": "services_pl_freight_settlement_service_list_settlements_enriched", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L763"}, {"caller_nid": "services_pl_freight_settlement_service_list_settlements_enriched", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L763"}, {"caller_nid": "services_pl_freight_settlement_service_get_settlement_detail", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L779"}, {"caller_nid": "services_pl_freight_settlement_service_get_settlement_detail", "callee": "in_", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L780"}, {"caller_nid": "services_pl_freight_settlement_service_get_settlement_detail", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L798"}, {"caller_nid": "services_pl_freight_settlement_service_get_settlement_detail", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L798"}, {"caller_nid": "services_pl_freight_settlement_service_get_settlement_detail", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L803"}, {"caller_nid": "services_pl_freight_settlement_service_get_settlement_detail", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L809"}, {"caller_nid": "services_pl_freight_settlement_service_get_settlement_detail", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L823"}, {"caller_nid": "services_pl_freight_settlement_service_update_settlement_draft", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L853"}, {"caller_nid": "services_pl_freight_settlement_service_update_settlement_draft", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L855"}, {"caller_nid": "services_pl_freight_settlement_service_update_settlement_draft", "callee": "items", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L856"}, {"caller_nid": "services_pl_freight_settlement_service_update_settlement_draft", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L859"}, {"caller_nid": "services_pl_freight_settlement_service_update_settlement_draft", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py", "source_location": "L860"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/bb70ba03ce6f20eaadad715129f32ae874f1807a2f60878cc821946f0c937611.json b/backend/graphify-out/cache/ast/bb70ba03ce6f20eaadad715129f32ae874f1807a2f60878cc821946f0c937611.json new file mode 100644 index 000000000..7af101a7e --- /dev/null +++ b/backend/graphify-out/cache/ast/bb70ba03ce6f20eaadad715129f32ae874f1807a2f60878cc821946f0c937611.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "label": "pl_plan_service.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1"}, {"id": "services_pl_plan_service_determine_plan_type", "label": "determine_plan_type()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L32"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L32"}, {"id": "services_pl_plan_service_is_ton_product_unit", "label": "is_ton_product_unit()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L40"}, {"id": "bool", "label": "bool", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L40"}, {"id": "services_pl_plan_service_product_quantity", "label": "_product_quantity()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L47"}, {"id": "planproductcreate", "label": "PlanProductCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L47"}, {"id": "decimal", "label": "Decimal", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L47"}, {"id": "services_pl_plan_service_sum_product_quantities", "label": "sum_product_quantities()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L57"}, {"id": "services_pl_plan_service_estimate_qty_fields", "label": "_estimate_qty_fields()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L61"}, {"id": "services_pl_plan_service_build_plan_product", "label": "build_plan_product()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L72"}, {"id": "int", "label": "int", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L72"}, {"id": "plplanproduct", "label": "PlPlanProduct", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L72"}, {"id": "services_pl_plan_service_resolve_driver", "label": "_resolve_driver()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L118"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L118"}, {"id": "services_pl_plan_service_calc_freight_amount", "label": "_calc_freight_amount()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L163"}, {"id": "services_pl_plan_service_validate_toxic_products", "label": "_validate_toxic_products()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L187"}, {"id": "services_pl_plan_service_resolve_hazard_flags_from_crm", "label": "resolve_hazard_flags_from_crm()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L198"}, {"id": "services_pl_plan_service_update_plan_product_certs", "label": "update_plan_product_certs()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L225"}, {"id": "services_pl_plan_service_generate_transport_no", "label": "_generate_transport_no()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L275"}, {"id": "services_pl_plan_service_resolve_transport_context", "label": "_resolve_transport_context()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L293"}, {"id": "plplan", "label": "PlPlan", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L293"}, {"id": "plantransportcreateblock", "label": "PlanTransportCreateBlock", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L293"}, {"id": "plvehicle", "label": "PlVehicle", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L293"}, {"id": "services_pl_plan_service_apply_payload_to_transport_row", "label": "_apply_payload_to_transport_row()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L353"}, {"id": "pltransport", "label": "PlTransport", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L353"}, {"id": "services_pl_plan_service_upsert_draft_transport_for_plan", "label": "upsert_draft_transport_for_plan()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L389"}, {"id": "services_pl_plan_service_clear_draft_transport_for_plan", "label": "clear_draft_transport_for_plan()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L496"}, {"id": "services_pl_plan_service_sync_transport_prefill_for_plan", "label": "sync_transport_prefill_for_plan()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L535"}, {"id": "services_pl_plan_service_apply_vehicle_prefill_to_plan", "label": "apply_vehicle_prefill_to_plan()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L557"}, {"id": "services_pl_plan_service_create_transport_for_plan", "label": "create_transport_for_plan()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L579"}, {"id": "services_pl_plan_service_validate_create_full", "label": "validate_create_full()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L686"}, {"id": "plancreatefull", "label": "PlanCreateFull", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L686"}, {"id": "services_pl_plan_service_calc_plan_total_amount", "label": "calc_plan_total_amount()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L708"}, {"id": "services_pl_plan_service_transport_has_locked_freight_settlement", "label": "transport_has_locked_freight_settlement()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L719"}, {"id": "services_pl_plan_service_apply_archive_product_quantities", "label": "apply_archive_product_quantities()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L743"}, {"id": "planarchiveproductitem", "label": "PlanArchiveProductItem", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L743"}, {"id": "services_pl_plan_service_apply_archive_freight", "label": "apply_archive_freight()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L778"}, {"id": "planarchivefreightblock", "label": "PlanArchiveFreightBlock", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L778"}, {"id": "services_pl_plan_service_record_plan_change", "label": "record_plan_change()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L844"}, {"id": "services_pl_plan_service_rationale_399", "label": "\u5199\u5165/\u66f4\u65b0\u8349\u7a3f\u8fd0\u8f93\u5355\uff08pl_transport + pl_plan_transport\uff09\uff0c\u8ba1\u5212\u4fdd\u6301\u5f85\u5b89\u6392\u3002", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L399"}, {"id": "services_pl_plan_service_rationale_545", "label": "\u540c\u6b65\u8fd0\u8f93\u9884\u9009\u5230\u8349\u7a3f\u8fd0\u8f93\u5b50\u8868\uff08pl_transport\uff09\u3002", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L545"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L2", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "decimal", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "fastapi", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L6", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L7", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "app_core_utils", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L9", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "app_models_pl_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L10", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "app_schemas_pl_plan", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L23", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "services_pl_plan_service_determine_plan_type", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L32", "weight": 1.0}, {"source": "services_pl_plan_service_determine_plan_type", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L32", "weight": 1.0}, {"source": "services_pl_plan_service_determine_plan_type", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L32", "weight": 1.0}, {"source": "services_pl_plan_service_determine_plan_type", "target": "str", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L32", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "services_pl_plan_service_is_ton_product_unit", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L40", "weight": 1.0}, {"source": "services_pl_plan_service_is_ton_product_unit", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L40", "weight": 1.0}, {"source": "services_pl_plan_service_is_ton_product_unit", "target": "bool", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L40", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "services_pl_plan_service_product_quantity", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L47", "weight": 1.0}, {"source": "services_pl_plan_service_product_quantity", "target": "planproductcreate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L47", "weight": 1.0}, {"source": "services_pl_plan_service_product_quantity", "target": "decimal", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L47", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "services_pl_plan_service_sum_product_quantities", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L57", "weight": 1.0}, {"source": "services_pl_plan_service_sum_product_quantities", "target": "planproductcreate", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L57", "weight": 1.0}, {"source": "services_pl_plan_service_sum_product_quantities", "target": "decimal", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L57", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "services_pl_plan_service_estimate_qty_fields", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L61", "weight": 1.0}, {"source": "services_pl_plan_service_estimate_qty_fields", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L61", "weight": 1.0}, {"source": "services_pl_plan_service_estimate_qty_fields", "target": "decimal", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L61", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "services_pl_plan_service_build_plan_product", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L72", "weight": 1.0}, {"source": "services_pl_plan_service_build_plan_product", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L72", "weight": 1.0}, {"source": "services_pl_plan_service_build_plan_product", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L72", "weight": 1.0}, {"source": "services_pl_plan_service_build_plan_product", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L72", "weight": 1.0}, {"source": "services_pl_plan_service_build_plan_product", "target": "planproductcreate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L72", "weight": 1.0}, {"source": "services_pl_plan_service_build_plan_product", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L72", "weight": 1.0}, {"source": "services_pl_plan_service_build_plan_product", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L72", "weight": 1.0}, {"source": "services_pl_plan_service_build_plan_product", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L72", "weight": 1.0}, {"source": "services_pl_plan_service_build_plan_product", "target": "plplanproduct", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L72", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "services_pl_plan_service_resolve_driver", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L118", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_driver", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L118", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_driver", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L118", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_driver", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L118", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_driver", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L118", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_driver", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L118", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_driver", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L118", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_driver", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L118", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "services_pl_plan_service_calc_freight_amount", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L163", "weight": 1.0}, {"source": "services_pl_plan_service_calc_freight_amount", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L163", "weight": 1.0}, {"source": "services_pl_plan_service_calc_freight_amount", "target": "plplanproduct", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L163", "weight": 1.0}, {"source": "services_pl_plan_service_calc_freight_amount", "target": "decimal", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L163", "weight": 1.0}, {"source": "services_pl_plan_service_calc_freight_amount", "target": "decimal", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L163", "weight": 1.0}, {"source": "services_pl_plan_service_calc_freight_amount", "target": "decimal", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L163", "weight": 1.0}, {"source": "services_pl_plan_service_calc_freight_amount", "target": "decimal", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L163", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "services_pl_plan_service_validate_toxic_products", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L187", "weight": 1.0}, {"source": "services_pl_plan_service_validate_toxic_products", "target": "plplanproduct", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L187", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "services_pl_plan_service_resolve_hazard_flags_from_crm", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L198", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_hazard_flags_from_crm", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L198", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_hazard_flags_from_crm", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L198", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_hazard_flags_from_crm", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L198", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_hazard_flags_from_crm", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L198", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_hazard_flags_from_crm", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L198", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_hazard_flags_from_crm", "target": "int", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L198", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_hazard_flags_from_crm", "target": "int", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L198", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "services_pl_plan_service_update_plan_product_certs", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L225", "weight": 1.0}, {"source": "services_pl_plan_service_update_plan_product_certs", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L225", "weight": 1.0}, {"source": "services_pl_plan_service_update_plan_product_certs", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L225", "weight": 1.0}, {"source": "services_pl_plan_service_update_plan_product_certs", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L225", "weight": 1.0}, {"source": "services_pl_plan_service_update_plan_product_certs", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L225", "weight": 1.0}, {"source": "services_pl_plan_service_update_plan_product_certs", "target": "plplanproduct", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L225", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "services_pl_plan_service_generate_transport_no", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L275", "weight": 1.0}, {"source": "services_pl_plan_service_generate_transport_no", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L275", "weight": 1.0}, {"source": "services_pl_plan_service_generate_transport_no", "target": "str", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L275", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "services_pl_plan_service_resolve_transport_context", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L293", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_transport_context", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L293", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_transport_context", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L293", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_transport_context", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L293", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_transport_context", "target": "plantransportcreateblock", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L293", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_transport_context", "target": "plplanproduct", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L293", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_transport_context", "target": "plvehicle", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L293", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_transport_context", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L293", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_transport_context", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L293", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_transport_context", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L293", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_transport_context", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L293", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_transport_context", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L293", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_transport_context", "target": "decimal", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L293", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_transport_context", "target": "decimal", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L293", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "services_pl_plan_service_apply_payload_to_transport_row", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L353", "weight": 1.0}, {"source": "services_pl_plan_service_apply_payload_to_transport_row", "target": "pltransport", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L353", "weight": 1.0}, {"source": "services_pl_plan_service_apply_payload_to_transport_row", "target": "plvehicle", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L353", "weight": 1.0}, {"source": "services_pl_plan_service_apply_payload_to_transport_row", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L353", "weight": 1.0}, {"source": "services_pl_plan_service_apply_payload_to_transport_row", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L353", "weight": 1.0}, {"source": "services_pl_plan_service_apply_payload_to_transport_row", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L353", "weight": 1.0}, {"source": "services_pl_plan_service_apply_payload_to_transport_row", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L353", "weight": 1.0}, {"source": "services_pl_plan_service_apply_payload_to_transport_row", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L353", "weight": 1.0}, {"source": "services_pl_plan_service_apply_payload_to_transport_row", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L353", "weight": 1.0}, {"source": "services_pl_plan_service_apply_payload_to_transport_row", "target": "plantransportcreateblock", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L353", "weight": 1.0}, {"source": "services_pl_plan_service_apply_payload_to_transport_row", "target": "decimal", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L353", "weight": 1.0}, {"source": "services_pl_plan_service_apply_payload_to_transport_row", "target": "decimal", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L353", "weight": 1.0}, {"source": "services_pl_plan_service_apply_payload_to_transport_row", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L353", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "services_pl_plan_service_upsert_draft_transport_for_plan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L389", "weight": 1.0}, {"source": "services_pl_plan_service_upsert_draft_transport_for_plan", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L389", "weight": 1.0}, {"source": "services_pl_plan_service_upsert_draft_transport_for_plan", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L389", "weight": 1.0}, {"source": "services_pl_plan_service_upsert_draft_transport_for_plan", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L389", "weight": 1.0}, {"source": "services_pl_plan_service_upsert_draft_transport_for_plan", "target": "plantransportcreateblock", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L389", "weight": 1.0}, {"source": "services_pl_plan_service_upsert_draft_transport_for_plan", "target": "plplanproduct", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L389", "weight": 1.0}, {"source": "services_pl_plan_service_upsert_draft_transport_for_plan", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L389", "weight": 1.0}, {"source": "services_pl_plan_service_upsert_draft_transport_for_plan", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L389", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "services_pl_plan_service_clear_draft_transport_for_plan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L496", "weight": 1.0}, {"source": "services_pl_plan_service_clear_draft_transport_for_plan", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L496", "weight": 1.0}, {"source": "services_pl_plan_service_clear_draft_transport_for_plan", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L496", "weight": 1.0}, {"source": "services_pl_plan_service_clear_draft_transport_for_plan", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L496", "weight": 1.0}, {"source": "services_pl_plan_service_clear_draft_transport_for_plan", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L496", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "services_pl_plan_service_sync_transport_prefill_for_plan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L535", "weight": 1.0}, {"source": "services_pl_plan_service_sync_transport_prefill_for_plan", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L535", "weight": 1.0}, {"source": "services_pl_plan_service_sync_transport_prefill_for_plan", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L535", "weight": 1.0}, {"source": "services_pl_plan_service_sync_transport_prefill_for_plan", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L535", "weight": 1.0}, {"source": "services_pl_plan_service_sync_transport_prefill_for_plan", "target": "plantransportcreateblock", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L535", "weight": 1.0}, {"source": "services_pl_plan_service_sync_transport_prefill_for_plan", "target": "plplanproduct", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L535", "weight": 1.0}, {"source": "services_pl_plan_service_sync_transport_prefill_for_plan", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L535", "weight": 1.0}, {"source": "services_pl_plan_service_sync_transport_prefill_for_plan", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L535", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "services_pl_plan_service_apply_vehicle_prefill_to_plan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L557", "weight": 1.0}, {"source": "services_pl_plan_service_apply_vehicle_prefill_to_plan", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L557", "weight": 1.0}, {"source": "services_pl_plan_service_apply_vehicle_prefill_to_plan", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L557", "weight": 1.0}, {"source": "services_pl_plan_service_apply_vehicle_prefill_to_plan", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L557", "weight": 1.0}, {"source": "services_pl_plan_service_apply_vehicle_prefill_to_plan", "target": "plantransportcreateblock", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L557", "weight": 1.0}, {"source": "services_pl_plan_service_apply_vehicle_prefill_to_plan", "target": "plplanproduct", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L557", "weight": 1.0}, {"source": "services_pl_plan_service_apply_vehicle_prefill_to_plan", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L557", "weight": 1.0}, {"source": "services_pl_plan_service_apply_vehicle_prefill_to_plan", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L557", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "services_pl_plan_service_create_transport_for_plan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L579", "weight": 1.0}, {"source": "services_pl_plan_service_create_transport_for_plan", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L579", "weight": 1.0}, {"source": "services_pl_plan_service_create_transport_for_plan", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L579", "weight": 1.0}, {"source": "services_pl_plan_service_create_transport_for_plan", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L579", "weight": 1.0}, {"source": "services_pl_plan_service_create_transport_for_plan", "target": "plplanproduct", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L579", "weight": 1.0}, {"source": "services_pl_plan_service_create_transport_for_plan", "target": "plantransportcreateblock", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L579", "weight": 1.0}, {"source": "services_pl_plan_service_create_transport_for_plan", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L579", "weight": 1.0}, {"source": "services_pl_plan_service_create_transport_for_plan", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L579", "weight": 1.0}, {"source": "services_pl_plan_service_create_transport_for_plan", "target": "pltransport", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L579", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "services_pl_plan_service_validate_create_full", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L686", "weight": 1.0}, {"source": "services_pl_plan_service_validate_create_full", "target": "plancreatefull", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L686", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "services_pl_plan_service_calc_plan_total_amount", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L708", "weight": 1.0}, {"source": "services_pl_plan_service_calc_plan_total_amount", "target": "planproductcreate", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L708", "weight": 1.0}, {"source": "services_pl_plan_service_calc_plan_total_amount", "target": "decimal", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L708", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "services_pl_plan_service_transport_has_locked_freight_settlement", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L719", "weight": 1.0}, {"source": "services_pl_plan_service_transport_has_locked_freight_settlement", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L719", "weight": 1.0}, {"source": "services_pl_plan_service_transport_has_locked_freight_settlement", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L719", "weight": 1.0}, {"source": "services_pl_plan_service_transport_has_locked_freight_settlement", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L719", "weight": 1.0}, {"source": "services_pl_plan_service_transport_has_locked_freight_settlement", "target": "bool", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L719", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "services_pl_plan_service_apply_archive_product_quantities", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L743", "weight": 1.0}, {"source": "services_pl_plan_service_apply_archive_product_quantities", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L743", "weight": 1.0}, {"source": "services_pl_plan_service_apply_archive_product_quantities", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L743", "weight": 1.0}, {"source": "services_pl_plan_service_apply_archive_product_quantities", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L743", "weight": 1.0}, {"source": "services_pl_plan_service_apply_archive_product_quantities", "target": "planarchiveproductitem", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L743", "weight": 1.0}, {"source": "services_pl_plan_service_apply_archive_product_quantities", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L743", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "services_pl_plan_service_apply_archive_freight", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L778", "weight": 1.0}, {"source": "services_pl_plan_service_apply_archive_freight", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L778", "weight": 1.0}, {"source": "services_pl_plan_service_apply_archive_freight", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L778", "weight": 1.0}, {"source": "services_pl_plan_service_apply_archive_freight", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L778", "weight": 1.0}, {"source": "services_pl_plan_service_apply_archive_freight", "target": "planarchivefreightblock", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L778", "weight": 1.0}, {"source": "services_pl_plan_service_apply_archive_freight", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L778", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "services_pl_plan_service_record_plan_change", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L844", "weight": 1.0}, {"source": "services_pl_plan_service_record_plan_change", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L844", "weight": 1.0}, {"source": "services_pl_plan_service_record_plan_change", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L844", "weight": 1.0}, {"source": "services_pl_plan_service_record_plan_change", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L844", "weight": 1.0}, {"source": "services_pl_plan_service_record_plan_change", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L844", "weight": 1.0}, {"source": "services_pl_plan_service_record_plan_change", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L844", "weight": 1.0}, {"source": "services_pl_plan_service_record_plan_change", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L844", "weight": 1.0}, {"source": "services_pl_plan_service_record_plan_change", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L844", "weight": 1.0}, {"source": "services_pl_plan_service_record_plan_change", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L844", "weight": 1.0}, {"source": "services_pl_plan_service_product_quantity", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L49", "weight": 1.0}, {"source": "services_pl_plan_service_sum_product_quantities", "target": "services_pl_plan_service_product_quantity", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L58", "weight": 1.0}, {"source": "services_pl_plan_service_build_plan_product", "target": "services_pl_plan_service_product_quantity", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L82", "weight": 1.0}, {"source": "services_pl_plan_service_build_plan_product", "target": "services_pl_plan_service_estimate_qty_fields", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L83", "weight": 1.0}, {"source": "services_pl_plan_service_build_plan_product", "target": "plplanproduct", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L85", "weight": 1.0}, {"source": "services_pl_plan_service_build_plan_product", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L98", "weight": 1.0}, {"source": "services_pl_plan_service_calc_freight_amount", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L171", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_transport_context", "target": "services_pl_plan_service_resolve_driver", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L313", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_transport_context", "target": "services_pl_plan_service_calc_freight_amount", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L327", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_transport_context", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L337", "weight": 1.0}, {"source": "services_pl_plan_service_upsert_draft_transport_for_plan", "target": "services_pl_plan_service_resolve_transport_context", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L409", "weight": 1.0}, {"source": "services_pl_plan_service_upsert_draft_transport_for_plan", "target": "services_pl_plan_service_apply_payload_to_transport_row", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L430", "weight": 1.0}, {"source": "services_pl_plan_service_upsert_draft_transport_for_plan", "target": "services_pl_plan_service_generate_transport_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L447", "weight": 1.0}, {"source": "services_pl_plan_service_upsert_draft_transport_for_plan", "target": "pltransport", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L448", "weight": 1.0}, {"source": "services_pl_plan_service_sync_transport_prefill_for_plan", "target": "services_pl_plan_service_upsert_draft_transport_for_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L546", "weight": 1.0}, {"source": "services_pl_plan_service_apply_vehicle_prefill_to_plan", "target": "services_pl_plan_service_upsert_draft_transport_for_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L568", "weight": 1.0}, {"source": "services_pl_plan_service_create_transport_for_plan", "target": "services_pl_plan_service_validate_toxic_products", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L602", "weight": 1.0}, {"source": "services_pl_plan_service_create_transport_for_plan", "target": "services_pl_plan_service_resolve_driver", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L604", "weight": 1.0}, {"source": "services_pl_plan_service_create_transport_for_plan", "target": "services_pl_plan_service_calc_freight_amount", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L619", "weight": 1.0}, {"source": "services_pl_plan_service_create_transport_for_plan", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L630", "weight": 1.0}, {"source": "services_pl_plan_service_create_transport_for_plan", "target": "pltransport", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L635", "weight": 1.0}, {"source": "services_pl_plan_service_validate_create_full", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L698", "weight": 1.0}, {"source": "services_pl_plan_service_validate_create_full", "target": "services_pl_plan_service_sum_product_quantities", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L700", "weight": 1.0}, {"source": "services_pl_plan_service_calc_plan_total_amount", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L709", "weight": 1.0}, {"source": "services_pl_plan_service_apply_archive_product_quantities", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L763", "weight": 1.0}, {"source": "services_pl_plan_service_apply_archive_freight", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L791", "weight": 1.0}, {"source": "services_pl_plan_service_apply_archive_freight", "target": "services_pl_plan_service_transport_has_locked_freight_settlement", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L794", "weight": 1.0}, {"source": "services_pl_plan_service_rationale_399", "target": "services_pl_plan_service_upsert_draft_transport_for_plan", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L399", "weight": 1.0}, {"source": "services_pl_plan_service_rationale_545", "target": "services_pl_plan_service_sync_transport_prefill_for_plan", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L545", "weight": 1.0}], "raw_calls": [{"caller_nid": "services_pl_plan_service_is_ton_product_unit", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L41"}, {"caller_nid": "services_pl_plan_service_build_plan_product", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L86"}, {"caller_nid": "services_pl_plan_service_resolve_driver", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L126"}, {"caller_nid": "services_pl_plan_service_resolve_driver", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L126"}, {"caller_nid": "services_pl_plan_service_resolve_driver", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L138"}, {"caller_nid": "services_pl_plan_service_resolve_driver", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L138"}, {"caller_nid": "services_pl_plan_service_resolve_driver", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L138"}, {"caller_nid": "services_pl_plan_service_resolve_driver", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L145"}, {"caller_nid": "services_pl_plan_service_resolve_driver", "callee": "asc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L145"}, {"caller_nid": "services_pl_plan_service_resolve_driver", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L150"}, {"caller_nid": "services_pl_plan_service_resolve_driver", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L150"}, {"caller_nid": "services_pl_plan_service_resolve_driver", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L160"}, {"caller_nid": "services_pl_plan_service_validate_toxic_products", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L192"}, {"caller_nid": "services_pl_plan_service_resolve_hazard_flags_from_crm", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L212"}, {"caller_nid": "services_pl_plan_service_resolve_hazard_flags_from_crm", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L212"}, {"caller_nid": "services_pl_plan_service_update_plan_product_certs", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L234"}, {"caller_nid": "services_pl_plan_service_update_plan_product_certs", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L234"}, {"caller_nid": "services_pl_plan_service_update_plan_product_certs", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L243"}, {"caller_nid": "services_pl_plan_service_update_plan_product_certs", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L245"}, {"caller_nid": "services_pl_plan_service_update_plan_product_certs", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L250"}, {"caller_nid": "services_pl_plan_service_update_plan_product_certs", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L250"}, {"caller_nid": "services_pl_plan_service_update_plan_product_certs", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L260"}, {"caller_nid": "services_pl_plan_service_update_plan_product_certs", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L262"}, {"caller_nid": "services_pl_plan_service_update_plan_product_certs", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L263"}, {"caller_nid": "services_pl_plan_service_update_plan_product_certs", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L264"}, {"caller_nid": "services_pl_plan_service_update_plan_product_certs", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L266"}, {"caller_nid": "services_pl_plan_service_update_plan_product_certs", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L269"}, {"caller_nid": "services_pl_plan_service_update_plan_product_certs", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L271"}, {"caller_nid": "services_pl_plan_service_generate_transport_no", "callee": "today", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L276"}, {"caller_nid": "services_pl_plan_service_generate_transport_no", "callee": "strftime", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L277"}, {"caller_nid": "services_pl_plan_service_generate_transport_no", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L279"}, {"caller_nid": "services_pl_plan_service_generate_transport_no", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L279"}, {"caller_nid": "services_pl_plan_service_generate_transport_no", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L279"}, {"caller_nid": "services_pl_plan_service_generate_transport_no", "callee": "like", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L280"}, {"caller_nid": "services_pl_plan_service_generate_transport_no", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L281"}, {"caller_nid": "services_pl_plan_service_resolve_transport_context", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L302"}, {"caller_nid": "services_pl_plan_service_resolve_transport_context", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L302"}, {"caller_nid": "services_pl_plan_service_resolve_transport_context", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L311"}, {"caller_nid": "services_pl_plan_service_resolve_transport_context", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L320"}, {"caller_nid": "services_pl_plan_service_resolve_transport_context", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L320"}, {"caller_nid": "services_pl_plan_service_upsert_draft_transport_for_plan", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L420"}, {"caller_nid": "services_pl_plan_service_upsert_draft_transport_for_plan", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L420"}, {"caller_nid": "services_pl_plan_service_upsert_draft_transport_for_plan", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L449"}, {"caller_nid": "services_pl_plan_service_upsert_draft_transport_for_plan", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L458"}, {"caller_nid": "services_pl_plan_service_upsert_draft_transport_for_plan", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L459"}, {"caller_nid": "services_pl_plan_service_upsert_draft_transport_for_plan", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L460"}, {"caller_nid": "services_pl_plan_service_upsert_draft_transport_for_plan", "callee": "PlPlanTransport", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L461"}, {"caller_nid": "services_pl_plan_service_upsert_draft_transport_for_plan", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L462"}, {"caller_nid": "services_pl_plan_service_clear_draft_transport_for_plan", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L506"}, {"caller_nid": "services_pl_plan_service_clear_draft_transport_for_plan", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L506"}, {"caller_nid": "services_pl_plan_service_clear_draft_transport_for_plan", "callee": "update", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L517"}, {"caller_nid": "services_pl_plan_service_clear_draft_transport_for_plan", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L517"}, {"caller_nid": "services_pl_plan_service_create_transport_for_plan", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L591"}, {"caller_nid": "services_pl_plan_service_create_transport_for_plan", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L591"}, {"caller_nid": "services_pl_plan_service_create_transport_for_plan", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L600"}, {"caller_nid": "services_pl_plan_service_create_transport_for_plan", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L612"}, {"caller_nid": "services_pl_plan_service_create_transport_for_plan", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L612"}, {"caller_nid": "services_pl_plan_service_create_transport_for_plan", "callee": "generate_transport_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L634"}, {"caller_nid": "services_pl_plan_service_create_transport_for_plan", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L636"}, {"caller_nid": "services_pl_plan_service_create_transport_for_plan", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L661"}, {"caller_nid": "services_pl_plan_service_create_transport_for_plan", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L663"}, {"caller_nid": "services_pl_plan_service_create_transport_for_plan", "callee": "PlPlanTransport", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L664"}, {"caller_nid": "services_pl_plan_service_create_transport_for_plan", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L665"}, {"caller_nid": "services_pl_plan_service_validate_create_full", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L688"}, {"caller_nid": "services_pl_plan_service_validate_create_full", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L690"}, {"caller_nid": "services_pl_plan_service_validate_create_full", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L699"}, {"caller_nid": "services_pl_plan_service_validate_create_full", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L702"}, {"caller_nid": "services_pl_plan_service_validate_create_full", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L705"}, {"caller_nid": "services_pl_plan_service_transport_has_locked_freight_settlement", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L725"}, {"caller_nid": "services_pl_plan_service_transport_has_locked_freight_settlement", "callee": "join", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L725"}, {"caller_nid": "services_pl_plan_service_transport_has_locked_freight_settlement", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L725"}, {"caller_nid": "services_pl_plan_service_transport_has_locked_freight_settlement", "callee": "in_", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L736"}, {"caller_nid": "services_pl_plan_service_apply_archive_product_quantities", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L753"}, {"caller_nid": "services_pl_plan_service_apply_archive_product_quantities", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L760"}, {"caller_nid": "services_pl_plan_service_apply_archive_product_quantities", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L762"}, {"caller_nid": "services_pl_plan_service_apply_archive_freight", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L795"}, {"caller_nid": "services_pl_plan_service_apply_archive_freight", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L797"}, {"caller_nid": "services_pl_plan_service_apply_archive_freight", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L797"}, {"caller_nid": "services_pl_plan_service_apply_archive_freight", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L806"}, {"caller_nid": "services_pl_plan_service_apply_archive_freight", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L814"}, {"caller_nid": "services_pl_plan_service_apply_archive_freight", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L816"}, {"caller_nid": "services_pl_plan_service_apply_archive_freight", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L819"}, {"caller_nid": "services_pl_plan_service_apply_archive_freight", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L819"}, {"caller_nid": "services_pl_plan_service_apply_archive_freight", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L828"}, {"caller_nid": "services_pl_plan_service_record_plan_change", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L855"}, {"caller_nid": "services_pl_plan_service_record_plan_change", "callee": "PlPlanChange", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L856"}, {"caller_nid": "services_pl_plan_service_record_plan_change", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L857"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/fffd8862418d8dcc637f9412129a5b371a60ee81f4260fd153c74a394094c769.json b/backend/graphify-out/cache/ast/fffd8862418d8dcc637f9412129a5b371a60ee81f4260fd153c74a394094c769.json new file mode 100644 index 000000000..c74e824f8 --- /dev/null +++ b/backend/graphify-out/cache/ast/fffd8862418d8dcc637f9412129a5b371a60ee81f4260fd153c74a394094c769.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "label": "pl_plan_service.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L1"}, {"id": "services_pl_plan_service_determine_plan_type", "label": "determine_plan_type()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L32"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L32"}, {"id": "services_pl_plan_service_is_ton_product_unit", "label": "is_ton_product_unit()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L40"}, {"id": "bool", "label": "bool", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L40"}, {"id": "services_pl_plan_service_product_quantity", "label": "_product_quantity()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L47"}, {"id": "planproductcreate", "label": "PlanProductCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L47"}, {"id": "decimal", "label": "Decimal", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L47"}, {"id": "services_pl_plan_service_sum_product_quantities", "label": "sum_product_quantities()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L57"}, {"id": "services_pl_plan_service_estimate_qty_fields", "label": "_estimate_qty_fields()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L61"}, {"id": "services_pl_plan_service_build_plan_product", "label": "build_plan_product()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L72"}, {"id": "int", "label": "int", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L72"}, {"id": "plplanproduct", "label": "PlPlanProduct", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L72"}, {"id": "services_pl_plan_service_resolve_driver", "label": "_resolve_driver()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L118"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L118"}, {"id": "services_pl_plan_service_calc_freight_amount", "label": "_calc_freight_amount()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L163"}, {"id": "services_pl_plan_service_validate_toxic_products", "label": "_validate_toxic_products()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L187"}, {"id": "services_pl_plan_service_resolve_hazard_flags_from_crm", "label": "resolve_hazard_flags_from_crm()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L198"}, {"id": "services_pl_plan_service_update_plan_product_certs", "label": "update_plan_product_certs()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L225"}, {"id": "services_pl_plan_service_generate_transport_no", "label": "_generate_transport_no()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L275"}, {"id": "services_pl_plan_service_resolve_transport_context", "label": "_resolve_transport_context()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L293"}, {"id": "plplan", "label": "PlPlan", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L293"}, {"id": "plantransportcreateblock", "label": "PlanTransportCreateBlock", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L293"}, {"id": "plvehicle", "label": "PlVehicle", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L293"}, {"id": "services_pl_plan_service_apply_payload_to_transport_row", "label": "_apply_payload_to_transport_row()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L353"}, {"id": "pltransport", "label": "PlTransport", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L353"}, {"id": "services_pl_plan_service_upsert_draft_transport_for_plan", "label": "upsert_draft_transport_for_plan()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L389"}, {"id": "services_pl_plan_service_clear_draft_transport_for_plan", "label": "clear_draft_transport_for_plan()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L496"}, {"id": "services_pl_plan_service_sync_transport_prefill_for_plan", "label": "sync_transport_prefill_for_plan()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L535"}, {"id": "services_pl_plan_service_apply_vehicle_prefill_to_plan", "label": "apply_vehicle_prefill_to_plan()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L557"}, {"id": "services_pl_plan_service_create_transport_for_plan", "label": "create_transport_for_plan()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L579"}, {"id": "services_pl_plan_service_validate_create_full", "label": "validate_create_full()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L686"}, {"id": "plancreatefull", "label": "PlanCreateFull", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L686"}, {"id": "services_pl_plan_service_calc_plan_total_amount", "label": "calc_plan_total_amount()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L708"}, {"id": "services_pl_plan_service_transport_has_locked_freight_settlement", "label": "transport_has_locked_freight_settlement()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L719"}, {"id": "services_pl_plan_service_apply_archive_product_quantities", "label": "apply_archive_product_quantities()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L743"}, {"id": "planarchiveproductitem", "label": "PlanArchiveProductItem", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L743"}, {"id": "services_pl_plan_service_apply_archive_freight", "label": "apply_archive_freight()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L778"}, {"id": "planarchivefreightblock", "label": "PlanArchiveFreightBlock", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L778"}, {"id": "services_pl_plan_service_record_plan_change", "label": "record_plan_change()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L820"}, {"id": "services_pl_plan_service_rationale_399", "label": "\u5199\u5165/\u66f4\u65b0\u8349\u7a3f\u8fd0\u8f93\u5355\uff08pl_transport + pl_plan_transport\uff09\uff0c\u8ba1\u5212\u4fdd\u6301\u5f85\u5b89\u6392\u3002", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L399"}, {"id": "services_pl_plan_service_rationale_545", "label": "\u540c\u6b65\u8fd0\u8f93\u9884\u9009\u5230\u8349\u7a3f\u8fd0\u8f93\u5b50\u8868\uff08pl_transport\uff09\u3002", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L545"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L2", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "decimal", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "fastapi", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L6", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L7", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "app_core_utils", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L9", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "app_models_pl_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L10", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "app_schemas_pl_plan", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L23", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "services_pl_plan_service_determine_plan_type", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L32", "weight": 1.0}, {"source": "services_pl_plan_service_determine_plan_type", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L32", "weight": 1.0}, {"source": "services_pl_plan_service_determine_plan_type", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L32", "weight": 1.0}, {"source": "services_pl_plan_service_determine_plan_type", "target": "str", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L32", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "services_pl_plan_service_is_ton_product_unit", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L40", "weight": 1.0}, {"source": "services_pl_plan_service_is_ton_product_unit", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L40", "weight": 1.0}, {"source": "services_pl_plan_service_is_ton_product_unit", "target": "bool", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L40", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "services_pl_plan_service_product_quantity", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L47", "weight": 1.0}, {"source": "services_pl_plan_service_product_quantity", "target": "planproductcreate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L47", "weight": 1.0}, {"source": "services_pl_plan_service_product_quantity", "target": "decimal", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L47", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "services_pl_plan_service_sum_product_quantities", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L57", "weight": 1.0}, {"source": "services_pl_plan_service_sum_product_quantities", "target": "planproductcreate", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L57", "weight": 1.0}, {"source": "services_pl_plan_service_sum_product_quantities", "target": "decimal", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L57", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "services_pl_plan_service_estimate_qty_fields", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L61", "weight": 1.0}, {"source": "services_pl_plan_service_estimate_qty_fields", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L61", "weight": 1.0}, {"source": "services_pl_plan_service_estimate_qty_fields", "target": "decimal", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L61", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "services_pl_plan_service_build_plan_product", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L72", "weight": 1.0}, {"source": "services_pl_plan_service_build_plan_product", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L72", "weight": 1.0}, {"source": "services_pl_plan_service_build_plan_product", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L72", "weight": 1.0}, {"source": "services_pl_plan_service_build_plan_product", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L72", "weight": 1.0}, {"source": "services_pl_plan_service_build_plan_product", "target": "planproductcreate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L72", "weight": 1.0}, {"source": "services_pl_plan_service_build_plan_product", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L72", "weight": 1.0}, {"source": "services_pl_plan_service_build_plan_product", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L72", "weight": 1.0}, {"source": "services_pl_plan_service_build_plan_product", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L72", "weight": 1.0}, {"source": "services_pl_plan_service_build_plan_product", "target": "plplanproduct", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L72", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "services_pl_plan_service_resolve_driver", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L118", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_driver", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L118", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_driver", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L118", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_driver", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L118", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_driver", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L118", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_driver", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L118", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_driver", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L118", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_driver", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L118", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "services_pl_plan_service_calc_freight_amount", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L163", "weight": 1.0}, {"source": "services_pl_plan_service_calc_freight_amount", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L163", "weight": 1.0}, {"source": "services_pl_plan_service_calc_freight_amount", "target": "plplanproduct", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L163", "weight": 1.0}, {"source": "services_pl_plan_service_calc_freight_amount", "target": "decimal", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L163", "weight": 1.0}, {"source": "services_pl_plan_service_calc_freight_amount", "target": "decimal", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L163", "weight": 1.0}, {"source": "services_pl_plan_service_calc_freight_amount", "target": "decimal", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L163", "weight": 1.0}, {"source": "services_pl_plan_service_calc_freight_amount", "target": "decimal", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L163", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "services_pl_plan_service_validate_toxic_products", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L187", "weight": 1.0}, {"source": "services_pl_plan_service_validate_toxic_products", "target": "plplanproduct", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L187", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "services_pl_plan_service_resolve_hazard_flags_from_crm", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L198", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_hazard_flags_from_crm", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L198", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_hazard_flags_from_crm", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L198", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_hazard_flags_from_crm", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L198", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_hazard_flags_from_crm", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L198", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_hazard_flags_from_crm", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L198", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_hazard_flags_from_crm", "target": "int", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L198", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_hazard_flags_from_crm", "target": "int", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L198", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "services_pl_plan_service_update_plan_product_certs", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L225", "weight": 1.0}, {"source": "services_pl_plan_service_update_plan_product_certs", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L225", "weight": 1.0}, {"source": "services_pl_plan_service_update_plan_product_certs", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L225", "weight": 1.0}, {"source": "services_pl_plan_service_update_plan_product_certs", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L225", "weight": 1.0}, {"source": "services_pl_plan_service_update_plan_product_certs", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L225", "weight": 1.0}, {"source": "services_pl_plan_service_update_plan_product_certs", "target": "plplanproduct", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L225", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "services_pl_plan_service_generate_transport_no", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L275", "weight": 1.0}, {"source": "services_pl_plan_service_generate_transport_no", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L275", "weight": 1.0}, {"source": "services_pl_plan_service_generate_transport_no", "target": "str", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L275", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "services_pl_plan_service_resolve_transport_context", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L293", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_transport_context", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L293", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_transport_context", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L293", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_transport_context", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L293", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_transport_context", "target": "plantransportcreateblock", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L293", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_transport_context", "target": "plplanproduct", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L293", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_transport_context", "target": "plvehicle", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L293", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_transport_context", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L293", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_transport_context", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L293", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_transport_context", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L293", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_transport_context", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L293", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_transport_context", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L293", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_transport_context", "target": "decimal", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L293", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_transport_context", "target": "decimal", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L293", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "services_pl_plan_service_apply_payload_to_transport_row", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L353", "weight": 1.0}, {"source": "services_pl_plan_service_apply_payload_to_transport_row", "target": "pltransport", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L353", "weight": 1.0}, {"source": "services_pl_plan_service_apply_payload_to_transport_row", "target": "plvehicle", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L353", "weight": 1.0}, {"source": "services_pl_plan_service_apply_payload_to_transport_row", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L353", "weight": 1.0}, {"source": "services_pl_plan_service_apply_payload_to_transport_row", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L353", "weight": 1.0}, {"source": "services_pl_plan_service_apply_payload_to_transport_row", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L353", "weight": 1.0}, {"source": "services_pl_plan_service_apply_payload_to_transport_row", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L353", "weight": 1.0}, {"source": "services_pl_plan_service_apply_payload_to_transport_row", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L353", "weight": 1.0}, {"source": "services_pl_plan_service_apply_payload_to_transport_row", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L353", "weight": 1.0}, {"source": "services_pl_plan_service_apply_payload_to_transport_row", "target": "plantransportcreateblock", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L353", "weight": 1.0}, {"source": "services_pl_plan_service_apply_payload_to_transport_row", "target": "decimal", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L353", "weight": 1.0}, {"source": "services_pl_plan_service_apply_payload_to_transport_row", "target": "decimal", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L353", "weight": 1.0}, {"source": "services_pl_plan_service_apply_payload_to_transport_row", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L353", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "services_pl_plan_service_upsert_draft_transport_for_plan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L389", "weight": 1.0}, {"source": "services_pl_plan_service_upsert_draft_transport_for_plan", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L389", "weight": 1.0}, {"source": "services_pl_plan_service_upsert_draft_transport_for_plan", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L389", "weight": 1.0}, {"source": "services_pl_plan_service_upsert_draft_transport_for_plan", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L389", "weight": 1.0}, {"source": "services_pl_plan_service_upsert_draft_transport_for_plan", "target": "plantransportcreateblock", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L389", "weight": 1.0}, {"source": "services_pl_plan_service_upsert_draft_transport_for_plan", "target": "plplanproduct", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L389", "weight": 1.0}, {"source": "services_pl_plan_service_upsert_draft_transport_for_plan", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L389", "weight": 1.0}, {"source": "services_pl_plan_service_upsert_draft_transport_for_plan", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L389", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "services_pl_plan_service_clear_draft_transport_for_plan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L496", "weight": 1.0}, {"source": "services_pl_plan_service_clear_draft_transport_for_plan", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L496", "weight": 1.0}, {"source": "services_pl_plan_service_clear_draft_transport_for_plan", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L496", "weight": 1.0}, {"source": "services_pl_plan_service_clear_draft_transport_for_plan", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L496", "weight": 1.0}, {"source": "services_pl_plan_service_clear_draft_transport_for_plan", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L496", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "services_pl_plan_service_sync_transport_prefill_for_plan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L535", "weight": 1.0}, {"source": "services_pl_plan_service_sync_transport_prefill_for_plan", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L535", "weight": 1.0}, {"source": "services_pl_plan_service_sync_transport_prefill_for_plan", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L535", "weight": 1.0}, {"source": "services_pl_plan_service_sync_transport_prefill_for_plan", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L535", "weight": 1.0}, {"source": "services_pl_plan_service_sync_transport_prefill_for_plan", "target": "plantransportcreateblock", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L535", "weight": 1.0}, {"source": "services_pl_plan_service_sync_transport_prefill_for_plan", "target": "plplanproduct", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L535", "weight": 1.0}, {"source": "services_pl_plan_service_sync_transport_prefill_for_plan", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L535", "weight": 1.0}, {"source": "services_pl_plan_service_sync_transport_prefill_for_plan", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L535", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "services_pl_plan_service_apply_vehicle_prefill_to_plan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L557", "weight": 1.0}, {"source": "services_pl_plan_service_apply_vehicle_prefill_to_plan", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L557", "weight": 1.0}, {"source": "services_pl_plan_service_apply_vehicle_prefill_to_plan", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L557", "weight": 1.0}, {"source": "services_pl_plan_service_apply_vehicle_prefill_to_plan", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L557", "weight": 1.0}, {"source": "services_pl_plan_service_apply_vehicle_prefill_to_plan", "target": "plantransportcreateblock", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L557", "weight": 1.0}, {"source": "services_pl_plan_service_apply_vehicle_prefill_to_plan", "target": "plplanproduct", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L557", "weight": 1.0}, {"source": "services_pl_plan_service_apply_vehicle_prefill_to_plan", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L557", "weight": 1.0}, {"source": "services_pl_plan_service_apply_vehicle_prefill_to_plan", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L557", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "services_pl_plan_service_create_transport_for_plan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L579", "weight": 1.0}, {"source": "services_pl_plan_service_create_transport_for_plan", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L579", "weight": 1.0}, {"source": "services_pl_plan_service_create_transport_for_plan", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L579", "weight": 1.0}, {"source": "services_pl_plan_service_create_transport_for_plan", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L579", "weight": 1.0}, {"source": "services_pl_plan_service_create_transport_for_plan", "target": "plplanproduct", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L579", "weight": 1.0}, {"source": "services_pl_plan_service_create_transport_for_plan", "target": "plantransportcreateblock", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L579", "weight": 1.0}, {"source": "services_pl_plan_service_create_transport_for_plan", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L579", "weight": 1.0}, {"source": "services_pl_plan_service_create_transport_for_plan", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L579", "weight": 1.0}, {"source": "services_pl_plan_service_create_transport_for_plan", "target": "pltransport", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L579", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "services_pl_plan_service_validate_create_full", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L686", "weight": 1.0}, {"source": "services_pl_plan_service_validate_create_full", "target": "plancreatefull", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L686", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "services_pl_plan_service_calc_plan_total_amount", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L708", "weight": 1.0}, {"source": "services_pl_plan_service_calc_plan_total_amount", "target": "planproductcreate", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L708", "weight": 1.0}, {"source": "services_pl_plan_service_calc_plan_total_amount", "target": "decimal", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L708", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "services_pl_plan_service_transport_has_locked_freight_settlement", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L719", "weight": 1.0}, {"source": "services_pl_plan_service_transport_has_locked_freight_settlement", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L719", "weight": 1.0}, {"source": "services_pl_plan_service_transport_has_locked_freight_settlement", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L719", "weight": 1.0}, {"source": "services_pl_plan_service_transport_has_locked_freight_settlement", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L719", "weight": 1.0}, {"source": "services_pl_plan_service_transport_has_locked_freight_settlement", "target": "bool", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L719", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "services_pl_plan_service_apply_archive_product_quantities", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L743", "weight": 1.0}, {"source": "services_pl_plan_service_apply_archive_product_quantities", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L743", "weight": 1.0}, {"source": "services_pl_plan_service_apply_archive_product_quantities", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L743", "weight": 1.0}, {"source": "services_pl_plan_service_apply_archive_product_quantities", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L743", "weight": 1.0}, {"source": "services_pl_plan_service_apply_archive_product_quantities", "target": "planarchiveproductitem", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L743", "weight": 1.0}, {"source": "services_pl_plan_service_apply_archive_product_quantities", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L743", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "services_pl_plan_service_apply_archive_freight", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L778", "weight": 1.0}, {"source": "services_pl_plan_service_apply_archive_freight", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L778", "weight": 1.0}, {"source": "services_pl_plan_service_apply_archive_freight", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L778", "weight": 1.0}, {"source": "services_pl_plan_service_apply_archive_freight", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L778", "weight": 1.0}, {"source": "services_pl_plan_service_apply_archive_freight", "target": "planarchivefreightblock", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L778", "weight": 1.0}, {"source": "services_pl_plan_service_apply_archive_freight", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L778", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_plan_service_py", "target": "services_pl_plan_service_record_plan_change", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L820", "weight": 1.0}, {"source": "services_pl_plan_service_record_plan_change", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L820", "weight": 1.0}, {"source": "services_pl_plan_service_record_plan_change", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L820", "weight": 1.0}, {"source": "services_pl_plan_service_record_plan_change", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L820", "weight": 1.0}, {"source": "services_pl_plan_service_record_plan_change", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L820", "weight": 1.0}, {"source": "services_pl_plan_service_record_plan_change", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L820", "weight": 1.0}, {"source": "services_pl_plan_service_record_plan_change", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L820", "weight": 1.0}, {"source": "services_pl_plan_service_record_plan_change", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L820", "weight": 1.0}, {"source": "services_pl_plan_service_record_plan_change", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L820", "weight": 1.0}, {"source": "services_pl_plan_service_product_quantity", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L49", "weight": 1.0}, {"source": "services_pl_plan_service_sum_product_quantities", "target": "services_pl_plan_service_product_quantity", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L58", "weight": 1.0}, {"source": "services_pl_plan_service_build_plan_product", "target": "services_pl_plan_service_product_quantity", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L82", "weight": 1.0}, {"source": "services_pl_plan_service_build_plan_product", "target": "services_pl_plan_service_estimate_qty_fields", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L83", "weight": 1.0}, {"source": "services_pl_plan_service_build_plan_product", "target": "plplanproduct", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L85", "weight": 1.0}, {"source": "services_pl_plan_service_build_plan_product", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L98", "weight": 1.0}, {"source": "services_pl_plan_service_calc_freight_amount", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L171", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_transport_context", "target": "services_pl_plan_service_resolve_driver", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L313", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_transport_context", "target": "services_pl_plan_service_calc_freight_amount", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L327", "weight": 1.0}, {"source": "services_pl_plan_service_resolve_transport_context", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L337", "weight": 1.0}, {"source": "services_pl_plan_service_upsert_draft_transport_for_plan", "target": "services_pl_plan_service_resolve_transport_context", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L409", "weight": 1.0}, {"source": "services_pl_plan_service_upsert_draft_transport_for_plan", "target": "services_pl_plan_service_apply_payload_to_transport_row", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L430", "weight": 1.0}, {"source": "services_pl_plan_service_upsert_draft_transport_for_plan", "target": "services_pl_plan_service_generate_transport_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L447", "weight": 1.0}, {"source": "services_pl_plan_service_upsert_draft_transport_for_plan", "target": "pltransport", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L448", "weight": 1.0}, {"source": "services_pl_plan_service_sync_transport_prefill_for_plan", "target": "services_pl_plan_service_upsert_draft_transport_for_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L546", "weight": 1.0}, {"source": "services_pl_plan_service_apply_vehicle_prefill_to_plan", "target": "services_pl_plan_service_upsert_draft_transport_for_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L568", "weight": 1.0}, {"source": "services_pl_plan_service_create_transport_for_plan", "target": "services_pl_plan_service_validate_toxic_products", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L602", "weight": 1.0}, {"source": "services_pl_plan_service_create_transport_for_plan", "target": "services_pl_plan_service_resolve_driver", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L604", "weight": 1.0}, {"source": "services_pl_plan_service_create_transport_for_plan", "target": "services_pl_plan_service_calc_freight_amount", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L619", "weight": 1.0}, {"source": "services_pl_plan_service_create_transport_for_plan", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L630", "weight": 1.0}, {"source": "services_pl_plan_service_create_transport_for_plan", "target": "pltransport", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L635", "weight": 1.0}, {"source": "services_pl_plan_service_validate_create_full", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L698", "weight": 1.0}, {"source": "services_pl_plan_service_validate_create_full", "target": "services_pl_plan_service_sum_product_quantities", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L700", "weight": 1.0}, {"source": "services_pl_plan_service_calc_plan_total_amount", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L709", "weight": 1.0}, {"source": "services_pl_plan_service_apply_archive_product_quantities", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L763", "weight": 1.0}, {"source": "services_pl_plan_service_apply_archive_freight", "target": "services_pl_plan_service_transport_has_locked_freight_settlement", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L790", "weight": 1.0}, {"source": "services_pl_plan_service_apply_archive_freight", "target": "decimal", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L808", "weight": 1.0}, {"source": "services_pl_plan_service_rationale_399", "target": "services_pl_plan_service_upsert_draft_transport_for_plan", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L399", "weight": 1.0}, {"source": "services_pl_plan_service_rationale_545", "target": "services_pl_plan_service_sync_transport_prefill_for_plan", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L545", "weight": 1.0}], "raw_calls": [{"caller_nid": "services_pl_plan_service_is_ton_product_unit", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L41"}, {"caller_nid": "services_pl_plan_service_build_plan_product", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L86"}, {"caller_nid": "services_pl_plan_service_resolve_driver", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L126"}, {"caller_nid": "services_pl_plan_service_resolve_driver", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L126"}, {"caller_nid": "services_pl_plan_service_resolve_driver", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L138"}, {"caller_nid": "services_pl_plan_service_resolve_driver", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L138"}, {"caller_nid": "services_pl_plan_service_resolve_driver", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L138"}, {"caller_nid": "services_pl_plan_service_resolve_driver", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L145"}, {"caller_nid": "services_pl_plan_service_resolve_driver", "callee": "asc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L145"}, {"caller_nid": "services_pl_plan_service_resolve_driver", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L150"}, {"caller_nid": "services_pl_plan_service_resolve_driver", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L150"}, {"caller_nid": "services_pl_plan_service_resolve_driver", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L160"}, {"caller_nid": "services_pl_plan_service_validate_toxic_products", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L192"}, {"caller_nid": "services_pl_plan_service_resolve_hazard_flags_from_crm", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L212"}, {"caller_nid": "services_pl_plan_service_resolve_hazard_flags_from_crm", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L212"}, {"caller_nid": "services_pl_plan_service_update_plan_product_certs", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L234"}, {"caller_nid": "services_pl_plan_service_update_plan_product_certs", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L234"}, {"caller_nid": "services_pl_plan_service_update_plan_product_certs", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L243"}, {"caller_nid": "services_pl_plan_service_update_plan_product_certs", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L245"}, {"caller_nid": "services_pl_plan_service_update_plan_product_certs", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L250"}, {"caller_nid": "services_pl_plan_service_update_plan_product_certs", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L250"}, {"caller_nid": "services_pl_plan_service_update_plan_product_certs", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L260"}, {"caller_nid": "services_pl_plan_service_update_plan_product_certs", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L262"}, {"caller_nid": "services_pl_plan_service_update_plan_product_certs", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L263"}, {"caller_nid": "services_pl_plan_service_update_plan_product_certs", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L264"}, {"caller_nid": "services_pl_plan_service_update_plan_product_certs", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L266"}, {"caller_nid": "services_pl_plan_service_update_plan_product_certs", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L269"}, {"caller_nid": "services_pl_plan_service_update_plan_product_certs", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L271"}, {"caller_nid": "services_pl_plan_service_generate_transport_no", "callee": "today", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L276"}, {"caller_nid": "services_pl_plan_service_generate_transport_no", "callee": "strftime", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L277"}, {"caller_nid": "services_pl_plan_service_generate_transport_no", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L279"}, {"caller_nid": "services_pl_plan_service_generate_transport_no", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L279"}, {"caller_nid": "services_pl_plan_service_generate_transport_no", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L279"}, {"caller_nid": "services_pl_plan_service_generate_transport_no", "callee": "like", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L280"}, {"caller_nid": "services_pl_plan_service_generate_transport_no", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L281"}, {"caller_nid": "services_pl_plan_service_resolve_transport_context", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L302"}, {"caller_nid": "services_pl_plan_service_resolve_transport_context", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L302"}, {"caller_nid": "services_pl_plan_service_resolve_transport_context", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L311"}, {"caller_nid": "services_pl_plan_service_resolve_transport_context", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L320"}, {"caller_nid": "services_pl_plan_service_resolve_transport_context", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L320"}, {"caller_nid": "services_pl_plan_service_upsert_draft_transport_for_plan", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L420"}, {"caller_nid": "services_pl_plan_service_upsert_draft_transport_for_plan", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L420"}, {"caller_nid": "services_pl_plan_service_upsert_draft_transport_for_plan", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L449"}, {"caller_nid": "services_pl_plan_service_upsert_draft_transport_for_plan", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L458"}, {"caller_nid": "services_pl_plan_service_upsert_draft_transport_for_plan", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L459"}, {"caller_nid": "services_pl_plan_service_upsert_draft_transport_for_plan", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L460"}, {"caller_nid": "services_pl_plan_service_upsert_draft_transport_for_plan", "callee": "PlPlanTransport", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L461"}, {"caller_nid": "services_pl_plan_service_upsert_draft_transport_for_plan", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L462"}, {"caller_nid": "services_pl_plan_service_clear_draft_transport_for_plan", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L506"}, {"caller_nid": "services_pl_plan_service_clear_draft_transport_for_plan", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L506"}, {"caller_nid": "services_pl_plan_service_clear_draft_transport_for_plan", "callee": "update", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L517"}, {"caller_nid": "services_pl_plan_service_clear_draft_transport_for_plan", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L517"}, {"caller_nid": "services_pl_plan_service_create_transport_for_plan", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L591"}, {"caller_nid": "services_pl_plan_service_create_transport_for_plan", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L591"}, {"caller_nid": "services_pl_plan_service_create_transport_for_plan", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L600"}, {"caller_nid": "services_pl_plan_service_create_transport_for_plan", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L612"}, {"caller_nid": "services_pl_plan_service_create_transport_for_plan", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L612"}, {"caller_nid": "services_pl_plan_service_create_transport_for_plan", "callee": "generate_transport_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L634"}, {"caller_nid": "services_pl_plan_service_create_transport_for_plan", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L636"}, {"caller_nid": "services_pl_plan_service_create_transport_for_plan", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L661"}, {"caller_nid": "services_pl_plan_service_create_transport_for_plan", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L663"}, {"caller_nid": "services_pl_plan_service_create_transport_for_plan", "callee": "PlPlanTransport", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L664"}, {"caller_nid": "services_pl_plan_service_create_transport_for_plan", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L665"}, {"caller_nid": "services_pl_plan_service_validate_create_full", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L688"}, {"caller_nid": "services_pl_plan_service_validate_create_full", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L690"}, {"caller_nid": "services_pl_plan_service_validate_create_full", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L699"}, {"caller_nid": "services_pl_plan_service_validate_create_full", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L702"}, {"caller_nid": "services_pl_plan_service_validate_create_full", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L705"}, {"caller_nid": "services_pl_plan_service_transport_has_locked_freight_settlement", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L725"}, {"caller_nid": "services_pl_plan_service_transport_has_locked_freight_settlement", "callee": "join", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L725"}, {"caller_nid": "services_pl_plan_service_transport_has_locked_freight_settlement", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L725"}, {"caller_nid": "services_pl_plan_service_transport_has_locked_freight_settlement", "callee": "in_", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L736"}, {"caller_nid": "services_pl_plan_service_apply_archive_product_quantities", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L753"}, {"caller_nid": "services_pl_plan_service_apply_archive_product_quantities", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L760"}, {"caller_nid": "services_pl_plan_service_apply_archive_product_quantities", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L762"}, {"caller_nid": "services_pl_plan_service_apply_archive_freight", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L789"}, {"caller_nid": "services_pl_plan_service_apply_archive_freight", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L791"}, {"caller_nid": "services_pl_plan_service_apply_archive_freight", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L794"}, {"caller_nid": "services_pl_plan_service_apply_archive_freight", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L794"}, {"caller_nid": "services_pl_plan_service_apply_archive_freight", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L803"}, {"caller_nid": "services_pl_plan_service_record_plan_change", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L831"}, {"caller_nid": "services_pl_plan_service_record_plan_change", "callee": "PlPlanChange", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L832"}, {"caller_nid": "services_pl_plan_service_record_plan_change", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L833"}]} \ 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 81d4f4cba..8e31333b3 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":5354,"mtime_ns":1782225346624994084,"hash":"8b3d7c4c4488acc6afcfb1a01ea5c6a406ac9d865048233d7e7c6dfdbe793f9c"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/tasks/__init__.py":{"size":1953,"mtime_ns":1780805101147405418,"hash":"d2a416ff9daedad88780cbe3f14ea75e8299044f8787afb60e731f43963dc405"},"/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":5942,"mtime_ns":1782225345950464035,"hash":"565a2f55964323c1a93c64fcf7ce231b14ce547d39f8cddcdc08fc7537bc9642"},"/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":2142,"mtime_ns":1781955922143413789,"hash":"f7a5b28b653aaf013aa0bbd1cdb43b11b2d131bb0f01347f05dd6e833a70ae4a"},"/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":665,"mtime_ns":1780804649232229595,"hash":"f720195209c1783d8b2526220a086c2ae2769d76a12bd7df74136f5432c7b75f"},"/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":64410,"mtime_ns":1781940044373707557,"hash":"1bbb3dbd12096cc1865d19081a6dda818b86d4ce5857e3a81ee4c85a64e344b4"},"/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":7720,"mtime_ns":1781940045372925894,"hash":"2a396202dbcf00e42ec89ce08603028d56ecf5ebb27b1d970f57cf1d167533b3"},"/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":24412,"mtime_ns":1781940060432457268,"hash":"8622674146e399f10e08e5fcc2ba18d92d5bbabda633790029f4a533b46eeeea"},"/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":1782227658123539554,"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":1782227658122736051,"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":1782227658121413796,"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":1782227658122160841,"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":1780763324103831772,"hash":"3d7fbbb90728568a2577e52d8986ccbec8f599d04a0ef9e330939d1fe729bc98"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/crm_contract_routes.py":{"size":27213,"mtime_ns":1780763324103673521,"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":1780763324103709396,"hash":"154356115004a1b5674659219e40714eadf59a3581888ce9895fe792c8d00a82"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/attachment_biz.py":{"size":1122,"mtime_ns":1782219602888987090,"hash":"fb9fea8983524e3891357016b6546d982c4a82cb782fc01425f70472d4338b6b"},"/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":4679,"mtime_ns":1782003396630684570,"hash":"bc3f798cfbc359e0327d72e3c0513fe9cbaee196d0d85bcf6567cf5df4211d97"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py":{"size":16644,"mtime_ns":1782003187247224106,"hash":"37c7372f38d76f1020d31ce8ca9e7f0cb3bc3c204a50deb092b494ce8c983fbf"},"/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":1547,"mtime_ns":1782003187605255900,"hash":"a75ca6a0d92f93408eee00cc5053206d28a545512e4cd0f186be9e00e3346ab1"},"/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":1780759900435474399,"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":5557,"mtime_ns":1782003398167657536,"hash":"1328a14fd4aa492cf2ccf5f1b7d6b935f532c40cb1d80ddba12ffb97cba67f88"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py":{"size":14228,"mtime_ns":1782003398167648577,"hash":"f59c0270249b5cfe29eed48ca1171207cb87fabaf31a67f26dc5091916ad0483"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py":{"size":30498,"mtime_ns":1782003415980570216,"hash":"dc242c8e7e613123c1fa2fd124addedb36584bf3c9058bf1fc09acaa17bdfdf2"},"/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"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/models/db_models.py":{"size":8110,"mtime_ns":1782219570945208920,"hash":"249bb0971c263436095a6324457557b6ac5cfc3ca5ac9bc9499a9b4cd21d42bf"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/db/__init__.py":{"size":544,"mtime_ns":1782011200096708592,"hash":"822060230e155b8704feb447b908c226d4c53e62b3e6df65c89dc3c7a0e6e07f"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/db/__init__.py":{"size":0,"mtime_ns":1780805614160787709,"hash":"2cb780fb722e6dbf2ecea6f6fc19345fb453e1a3c40694ba0ff7465eb7cf7d33"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/db/base.py":{"size":2754,"mtime_ns":1780802262496001324,"hash":"d2fd88aa376aa5914125381cf61a4ae0f343657d6bd7db1f9fe1254e7aba5b2f"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/db/vehicle.py":{"size":591,"mtime_ns":1780802980783200520,"hash":"d87e4262b344e02a7be21534e382e7b75f5543f599d673ddc046134ad0e8ba4e"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/db/__init__.py":{"size":84,"mtime_ns":1780804619867600032,"hash":"5193d61f7204f825551f083e79722805fb2abfd953bb552e80950bb3ff9784a1"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/db/vehicle.py":{"size":3780,"mtime_ns":1780802985736476363,"hash":"aeb49bdd49cb5091c37275b856396e75bcd24557e3a1b58ef668910b1b0aff64"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/db/vehicle.py":{"size":4776,"mtime_ns":1780802999039302982,"hash":"cf32c66499ca86285561b573d222837ecc76c3fa51b0091b802485fbde8e2bf2"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/db/plan.py":{"size":1788,"mtime_ns":1780803836065964235,"hash":"30452b2f7fa19f5677475ce08b3e355dae2440d80d2e9049f8417de01d822863"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/db/plan.py":{"size":4167,"mtime_ns":1780803836065953735,"hash":"acac159dedfacb36f02982b700b2a7c7a8fbb4644eb89c3b0c13871941917864"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/db/plan.py":{"size":9619,"mtime_ns":1780803836065902943,"hash":"e311f2b8b5e7785db764216fbecfd2830a11569ccb827a00c8bd3a2ba3804383"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/db/inventory.py":{"size":3948,"mtime_ns":1782219604456801044,"hash":"19ea80e59a1309518ad6183a6b0b8751401f4724d7b5101d47defc2417ec36c8"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/db/inventory.py":{"size":15818,"mtime_ns":1782219637562067819,"hash":"ee8a2e8191025121f38b50974d9e496f6a5e6c2a76efdb66c6a9dea6d67ae7b6"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/db/inventory.py":{"size":10663,"mtime_ns":1780803878293678536,"hash":"e38abdd78010b0e96dcb65ed826de03a752b40e3355546ed06a4b07640cf7013"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/db/weighing.py":{"size":5347,"mtime_ns":1780935341753643087,"hash":"f734c66269b713a840d7ce6c1c6150bd2dc00b114b09963362202d119c82301e"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/db/weighing.py":{"size":14504,"mtime_ns":1780935403621073537,"hash":"71f9633b03a70516d85354c0f182c910f28a0eabf2ff290c38a0acf0a299cd82"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/db/weighing.py":{"size":24042,"mtime_ns":1780804029884092079,"hash":"bc9d5cb59bf90597db0e0a1c9afcef5c2b429c3945c92be34bfdc1e77d26ba28"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/db_auth.py":{"size":2175,"mtime_ns":1780804837828862658,"hash":"177a7b3590d25b715efbd0729fc08718f83bd35b7eac030d878d3a249b7518f7"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/db/plans.py":{"size":4876,"mtime_ns":1780935329287069452,"hash":"474cb68905249cd5a6237443a412d49cb28af2e0cec61c9bf5c34ec54db1240a"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/db/master_data.py":{"size":619,"mtime_ns":1780925759582999052,"hash":"6f6b2c2e1478efce74b8c6e6fb058d914b8b79adfadf2fea2d91cb55d3f9cdce"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/db/vehicles.py":{"size":4748,"mtime_ns":1780925781827569662,"hash":"8f8b32dfbf4046cfa0b6645d211732596f7027d46244d9c50132425220065483"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/db/plans.py":{"size":16459,"mtime_ns":1780935357812523686,"hash":"018be67e8ad9e093b9d9d6bbad62ca7c5d331294fa250a9fc4bc7988a572911b"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/db/mappers.py":{"size":6955,"mtime_ns":1782219619253708711,"hash":"b9e97f66a0a248d06c2f960c3f5ac4fb3369cc976c16709227dee0cc1513d221"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/db/weighing_logic.py":{"size":4110,"mtime_ns":1780804818442134500,"hash":"468ded88a0a4a397a96884580c88c59291c0b6effa897f08f1b3fea7857f9191"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/db/dashboard.py":{"size":514,"mtime_ns":1780804990870580151,"hash":"f2c1b1014d0d769abf32dab3783de65fe7fe327c956ffbfe44adce94542f8892"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/db/dashboard.py":{"size":5840,"mtime_ns":1780804994646919997,"hash":"4d52da98d0d7c8e1c828b60f65464e2045f05ef981fc9ce9ac8eca0c6db46c92"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/tasks/db_auto_plan.py":{"size":949,"mtime_ns":1780805095845033710,"hash":"9f7513cd2e74f9ddfe5cbee4ae58a40ee7a58aaaff051d590b19a6e1b08bb46a"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/db/plan_helpers.py":{"size":386,"mtime_ns":1780805092108105489,"hash":"5c6ec7612b204e1dcb65c5daf03fa7f8ffa7710cd1ace63be4f7ca00cbf318b8"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/db/auto_generate_plans.py":{"size":4699,"mtime_ns":1780935400833764213,"hash":"d0760cb8155d60e18040bcf6fe41e6964640a3dffd6f4b7bb68678c9f31ab29a"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/run_db_auto_generate_plans.py":{"size":1043,"mtime_ns":1780805102157096922,"hash":"3cd8f15b677f21b2873ff384fc0581da264a53ee4318da3c8262101156e3225b"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/migrate_dibang_data.py":{"size":20215,"mtime_ns":1782011225157870526,"hash":"28a49a423a784e70bec424b702f3d58f69b6f847153c061414efdcdabb660d0e"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/db/inventory_id.py":{"size":2574,"mtime_ns":1780934632326984469,"hash":"c5269cbb273d987c296143b83f1287762ce67d7ddeccfb0a72bc70234bad9f12"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/db/product_helpers.py":{"size":2106,"mtime_ns":1780935268573313971,"hash":"cea6b0697eb64081a79d18ab95f0f0477714505a7aef82a41672197b15fc8b14"},"/Users/zlwu/work/00code/shanxia2.0/backend/tests/test_db_inventory_id.py":{"size":586,"mtime_ns":1780934647395760353,"hash":"71a9617d5d0f2c23416686eded204b4c941b47afc3fd6e3facf0c75401e883d9"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py":{"size":43052,"mtime_ns":1782225150077534765,"hash":"e6960d558223b314c06f190e6a4a1c93ab7a9bb3b520c23968aba3f049150c87"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py":{"size":17181,"mtime_ns":1781959945472561612,"hash":"ff7783e13f3dae212f10204db888a836920ceb0de79d9eadc9646def879cd664"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py":{"size":14444,"mtime_ns":1782225289580409006,"hash":"0718be1ced34f6bdab86d03b6c2fad5c3bc8277c2560e53e4a842c74747424c3"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py":{"size":3981,"mtime_ns":1781916693850739362,"hash":"d482de301a2a895a9d7a98d2a7f2d87cd9889e33675531bf34b0fcfb3aeb2673"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/freight.py":{"size":4779,"mtime_ns":1781838563015057192,"hash":"07f36e54e043ffc50c511f2f3b7b7f789e7a448c6bca061b19c498851889a115"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py":{"size":7582,"mtime_ns":1781880505308870220,"hash":"c88a917677bcb18c0d2c906d6953a49090d09736c1989ed4c68cab8566183135"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py":{"size":32779,"mtime_ns":1782227856560298374,"hash":"67d4f549eef4ba4622e57c88b17e543db65986163e5c7f75498b267cf469b00a"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py":{"size":30282,"mtime_ns":1782225336233146332,"hash":"85fadfde591513d44350a526739bc334fed300def103d15a289355dbe59d95db"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/__init__.py":{"size":561,"mtime_ns":1781124088860666872,"hash":"b6ebf35ce73d7f82e5b27b28f7faadfd7d55147834d548ab13d4ac2d1c56479b"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py":{"size":10604,"mtime_ns":1781838521563280466,"hash":"262f91b72eaa2e64144bd543742281195194fab29a08246829e6b1a68ce52c50"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py":{"size":23102,"mtime_ns":1781912590631306490,"hash":"f757ba2146a9987184da032114841feff2b4e3232c5dd6a1d6a5d7635988d28a"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py":{"size":11622,"mtime_ns":1781880510427642528,"hash":"e3ef38585158eb49b7ffcac9cbe2e1d4046a0d6c38746050865756de13f85269"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py":{"size":2918,"mtime_ns":1781880510604174541,"hash":"b04c5636779ecbcb3082eabdbf42db846cc31f7376129845820c6a4c1e829104"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py":{"size":13003,"mtime_ns":1781880398231767901,"hash":"b8ab972594722107edceb08efbe943d9a60fd77bcd4bfbce5a499d9a8086bf95"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py":{"size":6362,"mtime_ns":1781880523198345970,"hash":"189cd50c299ef5bcd983c813612c997cce4b65e5fe95fbb5dec079902bd1e79e"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py":{"size":6329,"mtime_ns":1781912589069307318,"hash":"4801e99465eccdca2e3ad8fbe6d79b0fb5c094830ee959e62467316a3a823e73"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py":{"size":22025,"mtime_ns":1782172613990793117,"hash":"3b6acff3bf3a41b877ba7447ae9ec3dd1bf066782be5edbe41e4c040efdf06d1"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py":{"size":7667,"mtime_ns":1781962479550398929,"hash":"28913351a0a225b3d94d9ce56fda35b9e255cf37fad78a98ea5bdf1b2244296c"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py":{"size":12594,"mtime_ns":1782227851746783133,"hash":"f8629d807f7e4fcf21530e1660125d93a2b422110a780896ff97d7aa99382a41"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/db/public_inventory.py":{"size":1417,"mtime_ns":1782219580518873800,"hash":"5ea0cd3fb0da8a327b247bf7b838e336eec6cc47558541e20e1c2b1ffa1bcab7"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/db/public_inventory.py":{"size":6975,"mtime_ns":1782219588754857192,"hash":"3846cfe006de6bb9e58b66db579cf38912bf288834115cbe380c8f48d183bac3"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_inventory_link_read.py":{"size":782,"mtime_ns":1782225276143253698,"hash":"6471dfc9a1fbe66223f79490a5827b2422e5ca6932305ccde6aef4b641676a6b"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_site.py":{"size":5873,"mtime_ns":1782225320062451290,"hash":"5988c1e2bdebfe56339b52ce10cd1bc46a42b6c93d03a19c111e28b3558a8955"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_site_link_read.py":{"size":2362,"mtime_ns":1782225460524562610,"hash":"3b9e1b93d3c4375b6b3adb4476ceb0df356654089d994aef4fea7e4f29266c06"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_transport_site_service.py":{"size":3701,"mtime_ns":1782225248175867714,"hash":"07585f13aaad965c106e88ac26f5f8c58852c0c2bb0bdb91820185133d799219"}} \ 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":5354,"mtime_ns":1782225346624994084,"hash":"8b3d7c4c4488acc6afcfb1a01ea5c6a406ac9d865048233d7e7c6dfdbe793f9c"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/tasks/__init__.py":{"size":1953,"mtime_ns":1780805101147405418,"hash":"d2a416ff9daedad88780cbe3f14ea75e8299044f8787afb60e731f43963dc405"},"/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":5942,"mtime_ns":1782225345950464035,"hash":"565a2f55964323c1a93c64fcf7ce231b14ce547d39f8cddcdc08fc7537bc9642"},"/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":2142,"mtime_ns":1781955922143413789,"hash":"f7a5b28b653aaf013aa0bbd1cdb43b11b2d131bb0f01347f05dd6e833a70ae4a"},"/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":665,"mtime_ns":1780804649232229595,"hash":"f720195209c1783d8b2526220a086c2ae2769d76a12bd7df74136f5432c7b75f"},"/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":64410,"mtime_ns":1781940044373707557,"hash":"1bbb3dbd12096cc1865d19081a6dda818b86d4ce5857e3a81ee4c85a64e344b4"},"/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":7720,"mtime_ns":1781940045372925894,"hash":"2a396202dbcf00e42ec89ce08603028d56ecf5ebb27b1d970f57cf1d167533b3"},"/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":24412,"mtime_ns":1781940060432457268,"hash":"8622674146e399f10e08e5fcc2ba18d92d5bbabda633790029f4a533b46eeeea"},"/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":1782339857019928861,"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":1782339857020061529,"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":1782339857020089279,"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":1782339857019928903,"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":1780763324103831772,"hash":"3d7fbbb90728568a2577e52d8986ccbec8f599d04a0ef9e330939d1fe729bc98"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/crm_contract_routes.py":{"size":27213,"mtime_ns":1780763324103673521,"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":1780763324103709396,"hash":"154356115004a1b5674659219e40714eadf59a3581888ce9895fe792c8d00a82"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/attachment_biz.py":{"size":1122,"mtime_ns":1782219602888987090,"hash":"fb9fea8983524e3891357016b6546d982c4a82cb782fc01425f70472d4338b6b"},"/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":4679,"mtime_ns":1782003396630684570,"hash":"bc3f798cfbc359e0327d72e3c0513fe9cbaee196d0d85bcf6567cf5df4211d97"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py":{"size":16644,"mtime_ns":1782003187247224106,"hash":"37c7372f38d76f1020d31ce8ca9e7f0cb3bc3c204a50deb092b494ce8c983fbf"},"/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":1547,"mtime_ns":1782003187605255900,"hash":"a75ca6a0d92f93408eee00cc5053206d28a545512e4cd0f186be9e00e3346ab1"},"/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":1780759900435474399,"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":5557,"mtime_ns":1782003398167657536,"hash":"1328a14fd4aa492cf2ccf5f1b7d6b935f532c40cb1d80ddba12ffb97cba67f88"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py":{"size":14228,"mtime_ns":1782003398167648577,"hash":"f59c0270249b5cfe29eed48ca1171207cb87fabaf31a67f26dc5091916ad0483"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py":{"size":30498,"mtime_ns":1782003415980570216,"hash":"dc242c8e7e613123c1fa2fd124addedb36584bf3c9058bf1fc09acaa17bdfdf2"},"/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"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/models/db_models.py":{"size":8110,"mtime_ns":1782219570945208920,"hash":"249bb0971c263436095a6324457557b6ac5cfc3ca5ac9bc9499a9b4cd21d42bf"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/db/__init__.py":{"size":544,"mtime_ns":1782011200096708592,"hash":"822060230e155b8704feb447b908c226d4c53e62b3e6df65c89dc3c7a0e6e07f"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/db/__init__.py":{"size":0,"mtime_ns":1780805614160787709,"hash":"2cb780fb722e6dbf2ecea6f6fc19345fb453e1a3c40694ba0ff7465eb7cf7d33"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/db/base.py":{"size":2754,"mtime_ns":1780802262496001324,"hash":"d2fd88aa376aa5914125381cf61a4ae0f343657d6bd7db1f9fe1254e7aba5b2f"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/db/vehicle.py":{"size":591,"mtime_ns":1780802980783200520,"hash":"d87e4262b344e02a7be21534e382e7b75f5543f599d673ddc046134ad0e8ba4e"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/db/__init__.py":{"size":84,"mtime_ns":1780804619867600032,"hash":"5193d61f7204f825551f083e79722805fb2abfd953bb552e80950bb3ff9784a1"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/db/vehicle.py":{"size":3780,"mtime_ns":1780802985736476363,"hash":"aeb49bdd49cb5091c37275b856396e75bcd24557e3a1b58ef668910b1b0aff64"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/db/vehicle.py":{"size":4776,"mtime_ns":1780802999039302982,"hash":"cf32c66499ca86285561b573d222837ecc76c3fa51b0091b802485fbde8e2bf2"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/db/plan.py":{"size":1788,"mtime_ns":1780803836065964235,"hash":"30452b2f7fa19f5677475ce08b3e355dae2440d80d2e9049f8417de01d822863"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/db/plan.py":{"size":4167,"mtime_ns":1780803836065953735,"hash":"acac159dedfacb36f02982b700b2a7c7a8fbb4644eb89c3b0c13871941917864"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/db/plan.py":{"size":9619,"mtime_ns":1780803836065902943,"hash":"e311f2b8b5e7785db764216fbecfd2830a11569ccb827a00c8bd3a2ba3804383"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/db/inventory.py":{"size":3948,"mtime_ns":1782219604456801044,"hash":"19ea80e59a1309518ad6183a6b0b8751401f4724d7b5101d47defc2417ec36c8"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/db/inventory.py":{"size":15818,"mtime_ns":1782219637562067819,"hash":"ee8a2e8191025121f38b50974d9e496f6a5e6c2a76efdb66c6a9dea6d67ae7b6"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/db/inventory.py":{"size":10663,"mtime_ns":1780803878293678536,"hash":"e38abdd78010b0e96dcb65ed826de03a752b40e3355546ed06a4b07640cf7013"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/db/weighing.py":{"size":5347,"mtime_ns":1780935341753643087,"hash":"f734c66269b713a840d7ce6c1c6150bd2dc00b114b09963362202d119c82301e"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/db/weighing.py":{"size":14504,"mtime_ns":1780935403621073537,"hash":"71f9633b03a70516d85354c0f182c910f28a0eabf2ff290c38a0acf0a299cd82"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/db/weighing.py":{"size":24042,"mtime_ns":1780804029884092079,"hash":"bc9d5cb59bf90597db0e0a1c9afcef5c2b429c3945c92be34bfdc1e77d26ba28"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/db_auth.py":{"size":2175,"mtime_ns":1780804837828862658,"hash":"177a7b3590d25b715efbd0729fc08718f83bd35b7eac030d878d3a249b7518f7"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/db/plans.py":{"size":4876,"mtime_ns":1780935329287069452,"hash":"474cb68905249cd5a6237443a412d49cb28af2e0cec61c9bf5c34ec54db1240a"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/db/master_data.py":{"size":619,"mtime_ns":1780925759582999052,"hash":"6f6b2c2e1478efce74b8c6e6fb058d914b8b79adfadf2fea2d91cb55d3f9cdce"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/db/vehicles.py":{"size":4748,"mtime_ns":1780925781827569662,"hash":"8f8b32dfbf4046cfa0b6645d211732596f7027d46244d9c50132425220065483"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/db/plans.py":{"size":16459,"mtime_ns":1780935357812523686,"hash":"018be67e8ad9e093b9d9d6bbad62ca7c5d331294fa250a9fc4bc7988a572911b"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/db/mappers.py":{"size":6955,"mtime_ns":1782219619253708711,"hash":"b9e97f66a0a248d06c2f960c3f5ac4fb3369cc976c16709227dee0cc1513d221"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/db/weighing_logic.py":{"size":4110,"mtime_ns":1780804818442134500,"hash":"468ded88a0a4a397a96884580c88c59291c0b6effa897f08f1b3fea7857f9191"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/db/dashboard.py":{"size":514,"mtime_ns":1780804990870580151,"hash":"f2c1b1014d0d769abf32dab3783de65fe7fe327c956ffbfe44adce94542f8892"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/db/dashboard.py":{"size":5840,"mtime_ns":1780804994646919997,"hash":"4d52da98d0d7c8e1c828b60f65464e2045f05ef981fc9ce9ac8eca0c6db46c92"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/tasks/db_auto_plan.py":{"size":949,"mtime_ns":1780805095845033710,"hash":"9f7513cd2e74f9ddfe5cbee4ae58a40ee7a58aaaff051d590b19a6e1b08bb46a"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/db/plan_helpers.py":{"size":386,"mtime_ns":1780805092108105489,"hash":"5c6ec7612b204e1dcb65c5daf03fa7f8ffa7710cd1ace63be4f7ca00cbf318b8"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/db/auto_generate_plans.py":{"size":4699,"mtime_ns":1780935400833764213,"hash":"d0760cb8155d60e18040bcf6fe41e6964640a3dffd6f4b7bb68678c9f31ab29a"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/run_db_auto_generate_plans.py":{"size":1043,"mtime_ns":1780805102157096922,"hash":"3cd8f15b677f21b2873ff384fc0581da264a53ee4318da3c8262101156e3225b"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/migrate_dibang_data.py":{"size":20215,"mtime_ns":1782011225157870526,"hash":"28a49a423a784e70bec424b702f3d58f69b6f847153c061414efdcdabb660d0e"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/db/inventory_id.py":{"size":2574,"mtime_ns":1780934632326984469,"hash":"c5269cbb273d987c296143b83f1287762ce67d7ddeccfb0a72bc70234bad9f12"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/db/product_helpers.py":{"size":2106,"mtime_ns":1780935268573313971,"hash":"cea6b0697eb64081a79d18ab95f0f0477714505a7aef82a41672197b15fc8b14"},"/Users/zlwu/work/00code/shanxia2.0/backend/tests/test_db_inventory_id.py":{"size":586,"mtime_ns":1780934647395760353,"hash":"71a9617d5d0f2c23416686eded204b4c941b47afc3fd6e3facf0c75401e883d9"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py":{"size":44918,"mtime_ns":1782340128640845755,"hash":"798d82ba727162d95e52a547c9c3699e4a01e436acac2c3423fc04d96bce7af3"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py":{"size":18312,"mtime_ns":1782345903730420644,"hash":"0eba2598f4f76fb1d8bcc90c36895a8b05ce0ca1cabbad3a24d486d8fafadd53"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py":{"size":14444,"mtime_ns":1782225289580409006,"hash":"0718be1ced34f6bdab86d03b6c2fad5c3bc8277c2560e53e4a842c74747424c3"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py":{"size":3981,"mtime_ns":1781916693850739362,"hash":"d482de301a2a895a9d7a98d2a7f2d87cd9889e33675531bf34b0fcfb3aeb2673"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/freight.py":{"size":9777,"mtime_ns":1782340227157482898,"hash":"588e6ad4cad440054b1f45e6862152e7eaf585d9c27f2c3ff431b360ff3925f8"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py":{"size":7582,"mtime_ns":1781880505308870220,"hash":"c88a917677bcb18c0d2c906d6953a49090d09736c1989ed4c68cab8566183135"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py":{"size":34333,"mtime_ns":1782345916405078150,"hash":"79a1072c8220908a9a140fc955efeeb8858c8332911a39b481cc7baf9d816441"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py":{"size":30282,"mtime_ns":1782225336233146332,"hash":"85fadfde591513d44350a526739bc334fed300def103d15a289355dbe59d95db"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/__init__.py":{"size":561,"mtime_ns":1781124088860666872,"hash":"b6ebf35ce73d7f82e5b27b28f7faadfd7d55147834d548ab13d4ac2d1c56479b"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py":{"size":9033,"mtime_ns":1782340178908640678,"hash":"77e50fcdc4335deb5748c15971022d9d3e635c74ec9aced40aee7da3d394017a"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py":{"size":23102,"mtime_ns":1781912590631306490,"hash":"f757ba2146a9987184da032114841feff2b4e3232c5dd6a1d6a5d7635988d28a"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py":{"size":11622,"mtime_ns":1781880510427642528,"hash":"e3ef38585158eb49b7ffcac9cbe2e1d4046a0d6c38746050865756de13f85269"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py":{"size":2918,"mtime_ns":1781880510604174541,"hash":"b04c5636779ecbcb3082eabdbf42db846cc31f7376129845820c6a4c1e829104"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py":{"size":13003,"mtime_ns":1781880398231767901,"hash":"b8ab972594722107edceb08efbe943d9a60fd77bcd4bfbce5a499d9a8086bf95"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py":{"size":6362,"mtime_ns":1781880523198345970,"hash":"189cd50c299ef5bcd983c813612c997cce4b65e5fe95fbb5dec079902bd1e79e"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py":{"size":6329,"mtime_ns":1781912589069307318,"hash":"4801e99465eccdca2e3ad8fbe6d79b0fb5c094830ee959e62467316a3a823e73"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py":{"size":27238,"mtime_ns":1782345906077653006,"hash":"bb70ba03ce6f20eaadad715129f32ae874f1807a2f60878cc821946f0c937611"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py":{"size":7667,"mtime_ns":1781962479550398929,"hash":"28913351a0a225b3d94d9ce56fda35b9e255cf37fad78a98ea5bdf1b2244296c"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py":{"size":12594,"mtime_ns":1782227851746783133,"hash":"f8629d807f7e4fcf21530e1660125d93a2b422110a780896ff97d7aa99382a41"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/db/public_inventory.py":{"size":1417,"mtime_ns":1782219580518873800,"hash":"5ea0cd3fb0da8a327b247bf7b838e336eec6cc47558541e20e1c2b1ffa1bcab7"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/db/public_inventory.py":{"size":6975,"mtime_ns":1782219588754857192,"hash":"3846cfe006de6bb9e58b66db579cf38912bf288834115cbe380c8f48d183bac3"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_inventory_link_read.py":{"size":782,"mtime_ns":1782225276143253698,"hash":"6471dfc9a1fbe66223f79490a5827b2422e5ca6932305ccde6aef4b641676a6b"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_site.py":{"size":5873,"mtime_ns":1782225320062451290,"hash":"5988c1e2bdebfe56339b52ce10cd1bc46a42b6c93d03a19c111e28b3558a8955"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_site_link_read.py":{"size":2362,"mtime_ns":1782225460524562610,"hash":"3b9e1b93d3c4375b6b3adb4476ceb0df356654089d994aef4fea7e4f29266c06"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_transport_site_service.py":{"size":3701,"mtime_ns":1782225248175867714,"hash":"07585f13aaad965c106e88ac26f5f8c58852c0c2bb0bdb91820185133d799219"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_freight_settlement_service.py":{"size":28128,"mtime_ns":1782340192533497744,"hash":"b47ca782ddb5c42997e410d218346e90e834dfe41c977a5d7c0150aec7e4b2d9"}} \ No newline at end of file diff --git a/backend/graphify-out/graph.html b/backend/graphify-out/graph.html index e93de6d0e..a6f3689a8 100644 --- a/backend/graphify-out/graph.html +++ b/backend/graphify-out/graph.html @@ -63,12 +63,12 @@
-
3989 nodes · 30269 edges · 130 communities
+
4071 nodes · 30880 edges · 136 communities
+ + diff --git a/web-admin/src/components/business/pl-freight-disburse-dialog/index.vue b/web-admin/src/components/business/pl-freight-disburse-dialog/index.vue new file mode 100644 index 000000000..d5fd504f6 --- /dev/null +++ b/web-admin/src/components/business/pl-freight-disburse-dialog/index.vue @@ -0,0 +1,163 @@ + + + diff --git a/web-admin/src/components/business/pl-freight-settlement-form-dialog/index.vue b/web-admin/src/components/business/pl-freight-settlement-form-dialog/index.vue new file mode 100644 index 000000000..9486f0838 --- /dev/null +++ b/web-admin/src/components/business/pl-freight-settlement-form-dialog/index.vue @@ -0,0 +1,162 @@ + + + + + diff --git a/web-admin/src/components/business/pl-freight-settlement-view-dialog/index.vue b/web-admin/src/components/business/pl-freight-settlement-view-dialog/index.vue new file mode 100644 index 000000000..8b5c8946b --- /dev/null +++ b/web-admin/src/components/business/pl-freight-settlement-view-dialog/index.vue @@ -0,0 +1,230 @@ + + + + + diff --git a/web-admin/src/components/business/pl-plan-archive-dialog/index.vue b/web-admin/src/components/business/pl-plan-archive-dialog/index.vue new file mode 100644 index 000000000..dffc1285f --- /dev/null +++ b/web-admin/src/components/business/pl-plan-archive-dialog/index.vue @@ -0,0 +1,400 @@ + + + + + + + + diff --git a/web-admin/src/components/business/pl-plan-form-dialog/PlPlanFormProductTable.vue b/web-admin/src/components/business/pl-plan-form-dialog/PlPlanFormProductTable.vue index 627b67a78..8183ab418 100644 --- a/web-admin/src/components/business/pl-plan-form-dialog/PlPlanFormProductTable.vue +++ b/web-admin/src/components/business/pl-plan-form-dialog/PlPlanFormProductTable.vue @@ -27,7 +27,7 @@